11 个开源 Kubernetes Ci Cd 工具来改进您的 Devops
关于 GENNOVACAP
在 Gennovacap,我们是开源软件的倡导者和支持者。事实上,我们一直在尝试使用新的开源 Kubernetes CI CD 工具来改进我们的devops 咨询实践。在部署大型软件系统时,我们利用各种 Kubernetes CI CD 工具来帮助客户扩展到月球。
在本文中,我们将概述我们使用的每个工具的优点、特性和架构。我们将介绍不同类型的 Kubernetes CI CD 工具,其中包括 GitOps、管道、交付系统和部署扩展工具,以管理对 Kubernetes 集群的部署。
如果您想查看与 Kubernetes 一起使用的付费持续集成和持续交付工具的完整列表,请查看G2。
预计阅读时间:15分钟
目录
-
关于 Gennovacap
-
Kubernetes CI CD 先决条件
-
Devtron:Kubernetes 的软件交付工作流程
-
Skaffold:简单且可重复的 Kubernetes 开发
-
Flagger:渐进式交付 Kubernetes Operator
-
Spinnaker:开源、多云持续交付平台
-
站点:Gitops 交付工具
-
Flux:面向 Kubernetes 的开放且可扩展的持续交付
-
Argo CD:声明式 Kubernetes 部署工具
-
Tekton:云原生管道资源
-
Jenkins X:Kubernetes 的自动化 CI CD
-
Kubevela:用于现代应用程序的 Kubernetes CI CD 工具
-
Ksonnet:用于多个集群的 Kubernetes CI CD 工具
KUBERNETES CI CD 先决条件
如果您还没有设置 Kubernetes,这里有一些说明可以帮助您入门。
-
搭建Kubernetes生产环境
-
设置 Kubernetes 容器运行时
您还可以使用 KubeAdmin、Kops 或 Kubespray 设置 Kubernetes 集群。一旦部署了 Kubernetes,并且在版本控制系统中设置了应用程序,就可以将 CI CD 从应用程序连接到 Kubernetes。我们不会在本文中介绍 Kubernetes 设置,但您可以加入我们的邮件列表以接收有关这些主题的技术指南。
DEVTRON:KUBERNETES 的软件交付工作流程
德威创
说明:
Devtron 是一个开源的发布编排和 Kubernetes CI CD 工具。它利用流行的开源工具为 Kubernetes 提供类似无代码 SaaS 的体验。
特点:
-
无代码自助DevOps平台
-
多云/多集群部署
-
内置 SecOps 工具和集成
-
启用 UI 的应用程序调试仪表板
-
企业级安全性和合规性
-
使用 argocd 的基于 Gitops 的自动部署
执照:
https://github.com/devtron-labs/devtron/blob/main/LICENSE
Kubernetes CI CD 工具架构:
[](https://res.cloudinary.com/practicaldev/image/fetch/s--2VVPZWka--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh3.googleusercontent .com/jG1aYdY3HE-rwXygd03UYExwGrJ2hHEuTzVoIaSbcs3fx_xbIOEEUvmXni54QeIcOYgeR_VC-Obn46diUNwXBttsK1OJeeMH6GZbMbtm9MF7a52Pno-2pIImLosl3koX7YOgEhxf%3Ds0)
SKAFFOLD:简单且可重复的 Kubernetes 开发
支架
说明:
Skaffold 是一个命令行工具,可促进 Kubernetes 应用程序的持续交付。您可以在本地迭代您的应用程序源代码,然后部署到本地或远程 Kubernetes 集群。 Skaffold 处理构建、推送和部署应用程序的工作流程。它还提供了构建块并描述了 Kubernetes 的定制。
特点:
快速的本地开发
-
优化的源到部署:Skaffold 检测源代码中的更改并处理管道以使用基于策略的图像标记自动构建、推送和部署应用程序
-
持续反馈:Skaffold 自动聚合来自已部署资源的日志并将容器端口转发到您的本地机器
项目可移植性
-
与其他开发人员共享 - Skaffold 是与世界共享您的项目的最简单方法:git clone 和 skaffold run
-
上下文感知——使用 Skaffold 配置文件、用户级别配置、环境变量和标志来描述环境中的差异
-
Kubernetes CI CD 构建块 – 使用 skaffold 端到端运行,或使用单独的 Skaffold 阶段来构建您的 CI CD 管道。 skaffold 渲染输出可用于 GitOps 工作流的水合 Kubernetes 清单。
为您的项目提供可插拔的声明式配置
-
skaffold init – Skaffold 发现您的文件并生成自己的配置文件
-
多组件应用程序 - Skaffold 支持由多个组件组成的应用程序
-
自带工具 – Skaffold 具有可插入的架构,可与任何构建或部署工具集成
轻的
-
仅客户端 – Skaffold 没有集群端组件,因此没有开销或维护负担
-
最小管道——Skaffold 提供了一个固执的、最小的管道来保持简单
执照:
https://github.com/GoogleContainerTools/skaffold/blob/main/LICENSE
Kubernetes CI CD 工具架构:
[](https://res.cloudinary.com/practicaldev/image/fetch/s--rkDHhTBB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh4.googleusercontent .com/L8PdnVWes234OiQfUdtltvWY5bPeCNdc3ALXeHB_dGK1WDu20_B3LmO5zU6CA41GQgQcAtHMTYosQpH18Hoj4ix83KUUDLPRoRPqgpYDJLe4A44SO8zobW4nEGoR_GsBFXRtOyAc%3Ds0)
标志:渐进式交付 Kubernetes 操作员
标志
说明:
Flagger 是一个 Kubernetes 部署工具,它可以自动执行在 Kubernetes 上运行的应用程序的发布过程。它通过在测量指标和运行一致性测试的同时逐渐将流量转移到新版本来降低在生产中引入新软件版本的风险。渐进式交付 Kubernetes 操作员(Canary、A/B 测试和蓝/绿部署)
优点:
-
通过逐渐将流量转移到新版本,同时测量 HTTP/gRPC 请求成功率和延迟等指标,降低在生产中引入新软件版本的风险。
-
使用 Istio、Linkerd、OSM 或 AWS App Mesh 等服务网格在应用程序版本之间转移和路由流量。或者,如果服务网格不能满足您的需求,请使用 Ingress 控制器,例如 Contour、Gloo、NGINX、Skipper 或 Traefik。
-
除了内置指标检查外,您还可以使用自定义指标和网络书扩展您的应用程序分析,以运行验收测试、负载测试或任何其他自定义验证。
执照:
https://github.com/fluxcd/flagger/blob/main/LICENSE
Kubernetes CI CD 工具架构:
[](https://res.cloudinary.com/practicaldev/image/fetch/s--yFLC_CUF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh3 .googleusercontent.com/rhJbK0PKDikJblbgtu8dGj9-QLsIkS9HK2s5Wogohl3DPYtBeSviMVy7DVHwe1Ou4TFo2wHLr5Kd5SAIeS_fYXVBd9SdcIQqmLRYTuSh3Y96by3sady-hX-uNU3QAEK_3r7_XVYU%3Ds0)
SPINNAKER:开源、多云连续交付平台 ()
三角帆
说明:
Spinnaker 提供应用程序管理和部署,以帮助您快速、自信地发布软件更改。 Spinnaker 是一个开源的多云持续交付平台,它结合了强大而灵活的管道管理系统以及与主要云提供商的集成。如果您希望使用此 Kubernetes 部署工具标准化您的发布流程并提高质量,Spinnaker 适合您。
优点:
-
创建运行集成和系统测试、启动和关闭服务器组以及监控您的部署的部署管道。通过 git 事件、Jenkins、Travis CI、Docker、CRON 或其他 Spinnaker 管道触发管道。
-
创建和部署不可变映像,以实现更快的部署、更轻松的回滚以及消除难以调试的配置漂移问题。通过内置部署策略(如红/黑和金丝雀部署)利用云中的不可变基础架构。
-
跨多个云提供商部署,包括 AWS EC2、Kubernetes、Google Compute Engine、Google Kubernetes Engine、Google App Engine、Microsoft Azure、Openstack、Cloud Foundry 和 Oracle Cloud Infrastructure,DC/OS 即将推出。
特点:
-
基于角色的访问控制
-
混沌猴集成
-
CI 集成
-
用于设置和管理的 CLI
-
部署策略
-
受限执行窗口
-
人工判断
-
监控集成
-
通知
-
VM面包店
执照:
https://github.com/spinnaker/spinnaker/blob/master/LICENSE.txt
Kubernetes CI CD 工具架构:
三角帆 CICD 工具
[](https://res.cloudinary.com/practicaldev/image/fetch/s--ujDfVo2e--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh3 .googleusercontent.com/Hell9T_oL6y2uRBnxsRkkrHCBa76OlSONS_XAoIshaY9i21iIViJLyV4AtQFk_0KMObDT7aceq9KOKMMt-A8OhyDMtHn_bkGUeQBzbY0fezuJjanQloLRI_FqzP1KTfSiObojEg%3Ds0)
网站:GITOPS 交付工具
站点
说明:
Werf 是一个用 Go 编写的开源 CLI 工具,旨在简化和加速应用程序的交付。要使用它,您需要描述应用程序的配置(换句话说,如何构建并将其部署到 Kubernetes)并将其存储在 Git 存储库中——后者充当单一事实来源。简而言之,这就是我们今天所说的 GitOps。
Werf 不是一个完整的 Kubernetes CI/CD 工具,而是一种用于创建可以嵌入到任何现有 CI/CD 系统中的管道的解决方案。它实际上是“连接点”以将这些实践带入您的应用程序。我们认为它是新一代的高级 CI/CD 工具。
优点:
-
Werf 使用 Dockerfiles 或基于自定义语法的替代快速内置构建器构建 Docker 映像。它还会从 Docker 注册表中删除未使用的图像。
-
Werf 使用 Helm 兼容格式的图表将您的应用程序部署到 Kubernetes,具有方便的自定义和改进的推出跟踪机制、错误检测和日志输出。
特点:
-
完整的应用生命周期管理:构建和发布镜像,将应用部署到Kubernetes,并根据策略移除未使用的镜像。
-
用于构建和部署应用程序(可能有任意数量的组件)的所有规则的描述与源代码(Single Source Of Truth)一起存储在单个 Git 存储库中。
-
使用 Dockerfile 构建映像。
-
或者,werf 提供了一个自定义构建器工具,支持自定义语法、Ansible 和基于 Git 历史的增量重建。
-
Werf 支持 Helm 兼容图表和复杂的容错部署流程,具有日志记录、跟踪、早期错误检测和注释,以自定义特定资源的跟踪逻辑。
-
Werf 是一个用 Go 编写的 CLI 工具。它可以嵌入到任何现有的 CI/CD 系统中,为您的应用程序实施 CI/CD。
-
跨平台开发:基于Linux的容器可以在Linux、macOS和Windows上运行。
执照:
https://github.com/werf/werf/blob/main/LICENSE
Kubernetes CI CD 工具架构:
[](https://res.cloudinary.com/practicaldev/image/fetch/s---_nWolRA---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh5.googleusercontent. com/wzVUu5UmnJ_5-CkwF0BzRvi73ALx4Gbt_3YGnVC19b2WIRijW-MAkI0ae07-U0MIOmOWXqSSPyMwxdUDLhNzazH6apr48ZSYXhsFDTYNyQOkw0VCwuiHh4iceMhi-hS2uABtqsiz%3Ds0)
FLUX:为 KUBERNETES 开放且可扩展的连续交付
助焊剂
说明:
Flux 是一种工具,用于使 Kubernetes 集群与配置源(如 Git 存储库)保持同步,并在需要部署新代码时自动更新配置。
Flux 版本 2(“v2”)从头开始构建,使用 Kubernetes 的 API 扩展系统,并与 Prometheus 和 Kubernetes 生态系统的其他核心组件集成。在版本 2 中,Flux 支持多租户并支持同步任意数量的 Git 存储库,以及其他长期要求的功能。
Flux v2 使用 GitOps Toolkit 构建,这是一组可组合的 API 和用于在 Kubernetes 之上构建持续交付的专用工具。
优点:
-
Flux 和 Flagger 使用金丝雀、功能标志和 A/B 部署部署应用程序。 Flux 还可以管理任何 Kubernetes 资源。基础设施和工作负载依赖管理是内置的。
-
通过自动协调启用应用程序部署 (CD) 和(在 Flagger 的帮助下)渐进式交付 (PD)。 Flux 甚至可以通过对 Git 的自动容器映像更新(映像扫描和修补)为您推送回 Git。
-
与您的 Git 提供程序(GitHub、GitLab、Bitbucket,甚至可以使用与 s3 兼容的存储桶作为源)、所有主要容器注册表和所有 CI 工作流提供程序一起使用。
-
Kustomize、Helm、RBAC 和策略驱动的验证(OPA、Kyverno、准入控制器),因此它很容易就位。
-
通过模拟使用真正的 Kubernetes RBAC 并支持多个 Git 存储库。多集群基础设施和应用程序可以通过 Cluster API 开箱即用:Flux 可以使用一个 Kubernetes 集群来管理相同或其他集群中的应用程序,自己启动其他集群,并管理包括生命周期和队列在内的集群。
-
提供健康评估、外部系统警报和外部事件处理。只需“git push”,就可以在 Slack 和其他聊天系统上收到通知。
-
Flux 是一个 CNCF 孵化项目,在 CNCF CI/CD 技术雷达(与 Helm 一起)上被归类为“采用”。
-
我们欢迎任何类型的贡献者。 Flux 的组件位于 Kubernetes 核心控制器运行时,因此任何人都可以做出贡献,并且可以非常轻松地扩展其功能。
特点:
-
在 Git 中描述系统所需的全部状态。这包括应用程序、配置、仪表板、监控和其他所有内容。
-
使用 YAML 强制符合声明的系统。您不需要运行 kubectl,因为所有更改都会自动同步。
-
一切都通过拉取请求控制。您的 Git 历史记录提供了一系列事务,允许您从任何快照中恢复状态。
-
使用自定义资源、对象状态和通过 Kubernetes 事件的状态报告以及与 Kubernetes RBAC 的集成以声明方式进行配置
-
支持例如Kustomize,头盔; GitHub、GitLab、Harbor 和自定义 webhook;向大多数团队沟通平台发出通知;还有很多。
-
仅使用您需要的组件轻松创建持续交付解决方案,或使用 GitOps Toolkit 扩展 Flux。
执照:
https://github.com/fluxcd/flux2/blob/main/LICENSE
Kubernetes CI CD 工具架构:
[](https://res.cloudinary.com/practicaldev/image/fetch/s--QNRhZIvb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh5.googleusercontent.com /cwEp8sUJQCa6fgl1qIjmDPnw5rW5Urmg0Q8DZLC_HEMSV-JGOEdqHWWnvOisRm4HR759GdYkcuHn30pzYikTAy0M4XSo3sluxPqEGf6dHZSFZZ8xRc3-RoF37CObnCfOYUfolane%3Ds0)
ARGO CD:声明性 Kubernetes 部署工具
阿尔戈
说明:
Argo CD 是用于 Kubernetes 的声明性 GitOps 持续交付工具。
优点/概述:
特点:
-
将应用程序自动部署到指定目标环境
-
支持多种配置管理/模板工具(Kustomize、Helm、Ksonnet、Jsonnet、plain-YAML)
-
能够管理和部署到多个集群
-
SSO 集成(OIDC、OAuth2、LDAP、SAML 2.0、GitHub、GitLab、Microsoft、LinkedIn)
-
用于授权的多租户和 RBAC 策略
-
回滚/随处滚动到 Git 存储库中提交的任何应用程序配置
-
应用资源健康状态分析
-
自动配置漂移检测和可视化
-
将应用程序自动或手动同步到所需状态
-
提供应用程序活动实时视图的 Web UI
-
用于自动化和 CI 集成的 CLI
-
Webhook 集成(GitHub、BitBucket、GitLab)
-
自动化访问令牌
-
PreSync、Sync、PostSync 挂钩,支持复杂的应用程序推出(例如蓝/绿和金丝雀升级)
-
应用程序事件和 API 调用的审计跟踪
-
普罗米修斯指标
-
用于在 Git 中覆盖 ksonnet/helm 参数的参数覆盖
执照:
https://github.com/argoproj/argo-cd/blob/master/LICENSE
Kubernetes CI CD 工具架构:
[](https://res.cloudinary.com/practicaldev/image/fetch/s--eXd9_NzE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh5.googleusercontent.com /9Mygx5HlVTATO7z6VrpEqxijvVbCx-OUxQwmLvH1-SbIF8yfkzK4Ij1HGGDUWtBxvDPbD2XuPBnA3XIzCCzNAGTDuIZKugGpqIEu2R7XQSN8NUPz01lZcPuZZzfss6laRnr1Z0Qq%3Ds0)
TEKTON:云原生管道资源
泰克顿
说明:
Tekton Pipelines 项目为声明 CI/CD 风格的管道提供了 k8s 风格的资源。
特点:
-
在 Kubernetes 上运行
-
将 Kubernetes 集群作为第一类类型
-
使用容器作为它们的构建块
-
一个Pipeline可以部署到任意k8s集群
-
组成管道的任务可以很容易地单独运行
-
git repos 等资源可以在运行之间轻松交换
-
类型化资源的概念意味着对于诸如图像之类的资源,可以轻松地交换实现(例如,使用 kaniko 与 buildkit 构建)
执照:
https://github.com/tektoncd/pipeline/blob/main/LICENSE
Kubernetes CI CD 工具架构:
[](https://res.cloudinary.com/practicaldev/image/fetch/s--eEs-kyQx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh5.googleusercontent .com/oDqJnCVOyGZ8ZHX52azo9N5jQoC3jt8kgQ_wcLdKqGSvVykDHCi5yEZlZDQFmQcsutI6jBinsBLBuFue-WENQCDMge5umYlY2eSkZ81cnjhW8-bmGKulHy_iM758dQ6gPBB3KpX-%3Ds0)
JENKINS X:用于 Kubernetes 的自动 CI CD
詹金斯
说明:
Jenkins X 是一个自动化的 Kuberentes 部署工具,使用 Tekton、Knative、Lighthouse、Skaffold 和 Helm 在 Pull Requests 上提供预览环境。它是现代云应用程序的 Kubernetes 部署工具。 Jenkins X 为云上的开发人员自动化并加速了持续集成和持续交付,因此他们可以专注于构建出色的软件。
拥抱流行的开源项目 Jenkins X 自动化了设置和管理,以提供集成的云原生解决方案,团队可以使用它来比传统的非云解决方案更快、更可靠地开发更好的软件。
优点/概述:
特点:
-
Jenkins X 旨在很好地使用云,Kubernetes 托管核心服务,用于长期存储的存储桶,容器注册表和托管服务,如秘密管理器。所有这些都需要创建和管理。 Jenkins X 遵循 Terraform 来设置和管理 Jenkins X 所需的云基础设施。
-
使用 GitOps 意味着在对集群进行任何更改时都可以遵循熟悉的流程,使用审查、自动化、可追溯性和回滚来更好地控制正在使用的更改。
-
Jenkins X GitOps 与 External Secrets 一起使用以提供集成体验,因此您的秘密事实来源是秘密管理器,并且在需要时将值复制到集群中。
-
默认情况下,Jenkins X 与 Tekton 一起提供了一种干净的声明性云原生方式来描述管道。与 Lighthouse Jenkins X 相结合,可以通过 Git 轻松继承版本化的共享管道步骤,并提供简单的语法,提供灵活性和易于维护。
-
随着越来越多的微服务需要自动化,Jenkins X 提供了通过对拉取请求的评论与管道交互的能力。
-
除了上面提到的 ChatOps,Jenkins X 旨在帮助开发人员以一致的方式使用他们的微服务,使用 CLI 或 GUI,开发人员可以利用 Accelerate 书中推荐的经过验证的方法。
执照:
https://github.com/jenkins-x/jx/blob/main/LICENSE
Kubernetes CI CD 工具架构:
[](https://res.cloudinary.com/practicaldev/image/fetch/s--PidTkQSV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh3.googleusercontent.com /fL09qDg89N9aFgMougS05HPAWca75aRYiorkhPVRRzC54oZxE1mQGtH2KjDPy6JhZbA3o7cvC1dJLp14LtNxv3ugLYOh-7N12UMk_6WXf1TXWoXSG1kpDqiit-JljiaeQV1MSSmF%3Ds0)
KUBEVELA:适用于现代应用程序的 KUBERNETES CI CD 工具
库贝维拉
说明:
KubeVela 是一个现代应用程序交付平台,它使在当今的混合多云环境中部署和操作应用程序变得更容易、更快、更可靠。 KubeVela 与基础架构无关、可编程,但最重要的是,以应用程序为中心。
特点:
-
KubeVela 引入了开放应用程序模型 (OAM) 作为一致但更高级别的 API,用于在混合环境之上捕获和呈现微服务的完整部署。布局策略、流量转移和滚动更新在应用程序级别声明。无需担心基础架构级别,只需部署即可。
-
KubeVela 将应用程序交付建模为 DAG(有向无环图),并使用 CUE(一种现代数据配置语言)进行表达。这使您可以根据需要设计应用程序部署步骤,并以可编程的方式对其进行编排。没有限制,本机可扩展。
-
KubeVela 用作与运行时基础架构完全解耦的应用程序交付控制平面。它可以按照您设计的工作流将任何工作负载类型(包括容器、云服务、数据库甚至 VM 实例)部署到任何云或 Kubernetes 集群。
执照:
https://github.com/oam-dev/kubevela/blob/master/LICENSE
Kubernetes CI CD 工具架构:
[](https://res.cloudinary.com/practicaldev/image/fetch/s--yQZNxLEj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh4.googleusercontent. com/fv0I3_plIjo645OQfpXcBz3iqQsAyT7cm1BSulXcPgJV4wAjjCbA_NDkyX6MsUOC_Ti8YGWoHkcKKhCpTqXRJovMt7_KysU_yiQN8IIz4wFI42cF5kULh_oI0g8w5lKJgaL0evIY%3Ds0)
KSONNET:用于多集群的 Kubernetes CI CD 工具
KSonnet
说明:
ksonnet 建立在 JSON 模板语言 Jsonnet 之上,提供了一种组织结构和专门的功能,用于管理跨不同集群和环境的配置。
优点:
-
通过最小化重复代码来节省时间,并使用适用于 Kubernetes 的内置 Jsonnet 库简明扼要地描述配置。
-
自定义原型以满足您的需求,并使用灵活的框架扩展您的应用程序。
-
跨环境无缝部署并跨团队共享版本控制配置,作为单一事实来源。
特点:
-
跨多个集群环境轻松应用清单
-
使用版本控制跟踪配置,以便可靠地管理集群状态
-
从现有配置或通过外部注册表重用常见模式
-
将 Jsonnet 与支持 Kubernetes 的 Jsonnet 库 ksonnet-lib 一起使用,以编写简化清单
-
从您的配置中查看与集群上运行的内容有何不同
-
利用现有图表和 ksonnet 背后的所有功能
执照:
https://github.com/ksonnet/ksonnet/blob/master/LICENSE
Kubernetes CI CD 工具架构:
[](https://res.cloudinary.com/practicaldev/image/fetch/s--fWnc9knW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://lh5.googleusercontent.com /J-Kve5vGlRIKezX0XddYUWKBq_szyhCbi0rLft63lJdULHxsExetReXJExx4Eu0XpnwhkHZs8XCBZVoXopSJvpY02OpuN5OO2ToiA165Vi5WHPduSL9y02W3rweL1qrQzP8AAlbV%3Ds0)
更多推荐

所有评论(0)