当前位置: 首页 > 科技观察

六大容器管道大比拼:配置、优势、局限性和价格

时间:2023-03-20 12:01:05 科技观察

比拼六大容器管道:配置、优势、局限和价格当然,我们仍然需要经历容器的构建、打包和部署的过程。这就是我们使用容器管道的原因。今天,业界有很多容器管道的选择。哪一个适合您和您手头的项目?在本文中,我们将为您选择六种容器管道,讨论并比较它们的配置、优势、局限性和价格。什么是容器管道?首先,让我们讨论一下容器管道到底是什么。管道有助于自动化软件开发过程中的各个阶段,尤其是持续集成和持续交付(CI/CD)阶段。容器管道自动化容器的每个阶段,从最初构建初始图像到部署到生产。也就是说,整个容器管道通常包括三个阶段:集成:将更改签入源代码管理会触发构建过程和单元测试。验收测试:将容器部署到测试环境并验证其功能。部署:将经过全面测试的最终镜像部署到生产环境中。目前各种容器流水线工具虽然存在差异,但通常包括以上两到三个阶段。下面,我们来讨论一下最常见的六种容器管道:1.HerokuHeroku是一个完整的利用Docker的容器管道。您可以在同一平台上构建、测试、验证和部署各种容器,而无需额外的硬件配置或利用不同的服务提供商。配置Heroku应用程序使用heroku.yml(https://devcenter.heroku.com/articles/build-docker-images-heroku-yml)清单进行配置。清单定义了构建和部署容器所需的步骤。以下是自定义Dockerfile应用程序的示例清单:Dockerfilebuild:docker:web:Dockerfile如果您需要使用Git部署此容器(https://devcenter.heroku.com/articles/git),只需运行以下命令:$herokustack:setcontainer$gitaddheroku.yml$gitcommit-m"Addheroku.yml"$gitpushherokumaster通过对管道的支持,Heroku允许您将容器部署到多个不同的环境,反映持续交付工作流程中的各个阶段。例如:您可以使用管道在部署到生产环境之前测试暂存环境中的更改。优势和局限Heroku非常易于使用,整个管道只需要一个YAML文件。由于完全托管,它提供了多种环境来测试和部署更改。您甚至可以在错误部署的情况下回滚更改。当然,并非Heroku的所有功能都支持Docker部署。示例:您不能使用HerokuCI来运行应用程序的测试套件。这意味着:要么在构建镜像时运行测试套件,要么使用多阶段构建。而且您也不能使用管道促销将容器从一个管道阶段提升到下一个阶段。相反,您必须将容器重新部署到目标阶段。PriceHeroku提供了一个免费计划,其中包括:一个webdyno和workerdyno,每月有1,000个免费运行时间。其付费计划起价为每个运行时测功机每月7美元,包括更高容量测功机和改进的可扩展性等功能。有关更多Heroku定价信息,请参阅此处。我认为Heroku是一种非常简单且具有成本效益的容器管道解决方案。它提供了一个完全托管的环境,因此您可以完全控制CI/CD流程。它同时提供免费版和标准版,因此值得一试。2.AzureDevOpsAzureDevOps是Microsoft的项目管理、源代码管理(SCM)和CI/CD一体化服务。它不仅让您可以控制DevOps生命周期的几乎每个阶段,而且还提供许多高级的特定于容器的功能。其中包括:私有容器注册表,以及与AzureKubernetes服务(AKS)的集成。同时,AzurePipelines提供基于平台的CI/CD服务。配置您可以使用基于Web的用户界面来管理所有AzureDevOps。当然,您也可以通过签入的应用程序源代码和基于YAML的清单来配置AzurePipelines。它的WebUI允许您管理和跟踪部署环境、发布和工件。优势和局限如果您的团队正在使用Azure,那么AzureDevOps是您现有工作流的自然扩展。它支持托管和本地安装,以及部署到多个Azure目标,包括AzureAppService、Kubernetes和AzureFunctions。然而,AzureDevOps并不容易与包括Azure在内的其他服务集成。在配置集成时,您甚至可能需要从Azure容器注册表等服务中复制和粘贴值。这样的设置既麻烦又低效。定价AzurePipelines提供免费套餐,其中包括每月1800分钟的免费并发CI/CD作业。额外的“工作”成本为40美元,而托管图像等工件的成本为每月每GB2美元。当然,像AzureBoards这样的增值服务也是按月计费的。如果您想了解更多关于AzureDevOpsServices的定价信息,请参考。我认为AzureDevOps非常适合需要一站式DevOps管理解决方案或已经使用Azure的团队。通过将其集中在一个地方,它极大地简化了开发生命周期。但是,对于只需要基本容器管道的团队来说,它可能过于复杂。3.GitLabCI/CDGitLab起源于一个开源的SCM,但很快发展成为一个完整的DevOps管理解决方案。与AzureDevOps类似,它提供项目管理、私有容器注册表和包括Kubernetes在内的构建良好的环境等功能。配置GitLabCI/CD由GitLabRunner提供支持,它在独立环境中执行CI/CD管道中的每个步骤。它是通过gitlab-ci.yml清单配置的。清单支持高级配置,包括条件逻辑和导入其他清单。或者,您可以使用AutoDevOps来自动化整个管道而无需配置。借助Herokuish,GitLab使用Herokubuildpacks自动确定如何基于Dockerfile等源代码构建应用程序。AutoDevOps可以自动运行单元测试、执行代码质量分析和扫描图像以查找安全问题。GitLab使用dpl工具进行部署。该工具支持各种提供商,包括云平台和Kubernetes集群。优势和局限性GitLab提供了一个非常灵活的管道,您可以自行配置或使用内置工具完全自动化。它的YAML配置允许更广泛的项目结构和步骤,例如:创建项目依赖项,以及组合来自不同项目的多个管道。由于GitLab使用Herokuish和dpl等开源工具,因此它支持广泛的项目类型、语言和部署目标。虽然GitLab可以将运行器和工件部署到现有环境中,但它无法自行配置或维护这些环境(当然,GoogleKubernetesEngine和AmazonElasticKubernetesService除外)。而且,它还缺少图形化管道配置工具,不如使用AzurePipelines直观。定价GitLab使用开放核心模型:它提供开源基础版和具有附加功能的付费企业版。高级版的定价从每位用户每月4美元到99美元不等。这种定价机制是基于用户数量的。它每月分配几分钟来运行CI管道,以及访问某些功能。当然,所有版本都包括无限的代码存储库、项目规划工具和每月2,000分钟的免费安装时间。我认为GitLab是一个强大的CI/CD工具。它的开源版本在功能丰富方面可与许多商业工具相媲美,并且还支持托管。但是,它需要您维护一个单独的部署环境。4、AWSElasticBeanstalkElasticBeanstalk不再是一个简单的管道,而是更多的用于编排的AWS资源工具。它自动执行资源配置、负载平衡、扩展和监控,包括ECS容器、S3存储桶和EC2实例。您可以根据您的特定需求在AWS中创建完全自定义的管道。配置Beanstalk配置描述了容器的部署方式以及部署环境。这正是Dockerrun.aws.json文件中定义的内容。此外,Beanstalk还引入了一些独特的概念,例如:Application:包括环境和版本在内的Beanstalk组件的逻辑集合。应用发布:易于部署的源代码发布。环境:运行应用程序版本所需的一组AWS资源。优势和局限Beanstalk是一个非常强大的工具。它不仅适用于Docker,还适用于AWS。提供自动伸缩、滚动更新、监控和发布管理等服务,让用户可以直接访问和管理资源。但是,Beanstalk比普通管道更复杂。除非您使用的是单一容器环境,并且能够将容器的版本与环境紧密耦合,否则您需要在镜像存储库中预构建和托管各种Docker镜像。而且,您只能通过BeanstalkCLI触发相关更新。因此,如果容器出现故障,需要使用Beanstalk控制台手动解决。价格Beanstalk本身是免费的,但它提供的AWS组件是按正常价格收费的。例如:如果您使用ECS节点和ELB负载均衡器配置您的环境,则节点和负载均衡器都将根据您的正常配置收费。我的观点依赖于大量可用的AWS服务,而Beanstalk提供了一种有效的方式来管理所有这些服务。作为一个编排工具,它非常强大;但作为容器管道使用时,配置过于复杂。5.GoogleCloudBuildCloudBuild是构建在谷歌云平台(GCP)上的基础容器CI服务。它可以直接从源代码或Dockerfile构建镜像,并直接部署到GKE、CloudRun等GCP服务。配置CloudBuild是通过cloudbuild.yaml或JSON文件完成的。您可以定义构建图像的过程以及存储结果图像的位置。例如:您可以构建一个Docker映像并使用如下简单命令将其推送到GoogleContainerStorage: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.JenkinsXJenkins是最流行的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开发人员社区。不过值得一提的是,由于JenkinsX需要Kubernetes,因此会涉及配置集群等问题。当然,它的命令行工具可以自动完成大部分过程。价格JenkinsX是开源的。我的观点是,对于使用Jenkins的团队来说,JenkinsX是合乎逻辑的事情。虽然有一些严格的限制和要求,但对于使用Kubernetes的团队来说,它可以在现有基础设施的基础上实现原生集成。总结Heroku非常适合希望在稳定环境中轻松部署和托管Docker容器的团队。它提供了一个快速且可配置的平台,支持广泛的集成,并拥有庞大的第三方插件市场。ElasticBeanstalk是具有复杂需求的团队的首选,因为它能够编排AWS资源。对于容器CI,GitLab功能广泛,是最全面的选择。AutoDevOps除了基本功能外,还有开放核心模式。GoogleCloudBuild可以利用GoogleCloudPlatform的效率和容量进行快速构建。JenkinsX主要受益于Jenkins项目。由于这些服务中的大多数都是开源的或提供免费试用,您可以通过试验找到最适合您的工作流程的容器管道。原标题:比较容器管道,作者:MichaelBogan