「51CTO」六大容器管道大比拼:配置、优势、局限性和价格( 三 )


配置
Beanstalk的配置描述了如何部署容器 , 以及部署该容器的环境 。 这恰恰是在Dockerrun.aws.json文件中被定义的 。 此外 , Beanstalk也引入了一些独特的概念 , 例如:
应用程序:包括环境和版本在内的Beanstalk组件的逻辑集合 。 应用版本:易于部署的源代码版本 。 环境:运行应用程序版本所需的一组AWS资源 。优势和局限性
Beanstalk是一个非常强大的工具 。 它不仅适用于Docker , 也适用于AWS 。 它通过提供自动扩展 , 滚动更新 , 监视和发布管理等服务 , 以便用户可以直接访问和管理资源 。
但是 , Beanstalk比普通管道更加复杂 。 除非您使用的是单个容器环境 , 并且能够将容器的版本与环境紧密耦合 , 否则您需要在镜像存储库中预构建和托管各种Docker镜像 。 而且 , 您只能通过BeanstalkCLI触发相关更新 。 因此 , 如果容器失败的话 , 您需要使用Beanstalk控制台来手动予以解决 。
价格
Beanstalk本身是免费的 , 但是它提供的AWS组件则按照正常的价格收费 。 例如:如果您使用ECS节点和ELB负载平衡器来配置环境 , 那么节点和负载平衡器都会根据您的正常配置予以收费 。
我的观点
依靠大量可用的AWS服务 , Beanstalk提供了一种管理所有服务的有效方法 。 作为编排工具时 , 它功能虽然非常强大;但是用作容器管道时 , 则配置过于复杂 。
5.GoogleCloudBuild
CloudBuild是基于GoogleCloudPlatform(GCP)所构建的基础容器CI服务 。 它可以直接从源代码或Dockerfile处构建镜像 , 并直接部署到GKE、CloudRun、以及其他GCP服务中 。
配置
CloudBuild是通过cloudbuild.yaml或JSON文件配置的 。 您可以定义构建镜像的过程以及存储结果镜像的位置 。 例如:您可以构建Docker镜像 , 并通过如下简单命令 , 将其推送到Google容器存储器中:
name:gcr.io/cloud-builders/dockerargs:['build','-t','gcr.io/$PROJECT_ID/myimage','.']images:['gcr.io/$PROJECT_ID/myimage']同时 , CloudBuild也支持触发器 , 以根据源代码的更改自动启动构建过程 。
优势和局限性
CloudBuild可与其他GCP服务巧妙地集成到一起 , 其中包括:GKE、AppEngine和CloudRun 。 您可以直接控制构建主机的大小、容量、以及缓存镜像层 , 以加快构建的速度 。 您还可以运行本地构建 , 在完成验证或调试构建之后 , 再推送到CloudRun处 。
由于CloudBuild是围绕着GCP构建的 , 因此它仅支持有限数量的部署目标 。 如果您想将容器部署到其他平台 , 则需要其他的步骤 。 此外 , 与GitLab类似 , CloudBuild也并不提供可视化的管道配置工具 。
价格
其定价主要基于构建机器的大小和构建的时间 。 标准的n1-standard-1实例每个构建分钟的成本为0.003美元 , 因此在n1-highcpu-32实例上 , 最高为0.064美元 。 而在n1-standard-1实例上 , 您每天可以获得120分钟的免费构建时间 。
我的观点
CloudBuild的主要优势在于简单、快速、易学、便宜、并且能与其他GCP服务进行良好的集成 。 如果您已经有了一个部署环境 , 或者已经使用到了GCP , 那么建议您试用一下CloudBuild 。
6.JenkinsX
Jenkins是最流行的CI/CD工具之一 , JenkinsX通过添加全面的Kubernetes集成 , 进一步实现了扩展 。 JenkinsX不仅可以被部署到Kubernetes , 还可以为您配置和管理Kubernetes集群 。
配置
JenkinsXPipelines建立在TektonPipelines之上 , 该管道有助于在Kubernetes上运行CI/CD管道 。 您可以使用jenkins-x.yml文件来配置管道 。 JenkinsX还提供了构建包 , 可以帮助您将源代码打包到镜像之中 , 然后将其部署到Kubernetes里 。
优势和局限性
JenkinsX通过两大流行的现有项目-Jenkins和Kubernetes , 来创建可扩展的CI/CD平台 。 它可以自动化整个CI/CD管道 , 并支持预览环境和管道升级 。 由于包含了Jenkins , 因此它可以访问Jenkins开发人员的整个社区 。


推荐阅读