6 个 CI/CD 的 CNCF 项目,你知道几个?
点击上方蓝字关注 👆👆
如今,软件开发团队需要一种更敏捷的工作方式来快速将代码变为现实。CI/CD[1]一直是云原生软件更快速开发模型的重要推动力。持续集成 (CI) 是关于构建和测试代码的,而持续交付 (CD) 则更进一步来部署代码。
完善的 CI/CD 管道可验证代码可靠性、合规性和安全性等质量标准。但是通过构建阶段的每个步骤运行代码可能是一个繁琐的过程,自动化这些检查可以减少时间和人为错误的空间。从头开始设置 CI/CD 管道可能是一项挑战,更不用说采用供应商工具时的财务负担了。值得庆幸的是,CNCF 有许多开源工具[2]和项目来帮助加速您的 CI/CD 流程。下面,我们将回顾一些 CNCF 支持的 CI/CD 工具,看看它们如何帮助您满足软件交付需求。
1. Argo[3]
Kubernetes 的工作流引擎
Argo 提供了一些云原生项目来协助 Kubernetes 上的操作任务。具体来说,Argo Workflows 是一个帮助在 Kubernetes 上编排作业的引擎。Argo Workflows 作为 Kubernetes CustomResourceDefinition (CRD) 实施,可以创建多步自定义工作流,将每个单元称为容器。这可以帮助工程师在 Kubernetes 上构建和运行原生 CI/CD 管道,并并行运行多个作业。
Argo Workflows[4]提供了一个完整的 UI 以可视方式将工作流拼接在一起,并提供其他功能来构建可重用的工作流模板以存储在集群上。Argo Workflows 是完全开源的,在 GitHub 上拥有超过一万颗星,在撰写本文时也是一个孵化中的 CNCF 项目。
2. Flux[5]
用于 Kubernetes 的可扩展 CD 工具包
Flux 是一个 K8s 原生的持续交付解决方案,可以帮助开发团队实现 GitOps。Flux 擅长使 Kubernetes 集群与配置源保持同步,例如 Github 或 GitLab 存储库。在 K8s 集群上引导 Flux 并部署应用程序相对简单,并且该项目带有关于Azure[6]、AWS[7]、Helm[8]和其他用例的说明的详细文档。[9]GitOps 方法可以通过功能标志或金丝雀构建来帮助实现渐进式交付。用 Go 编写的 Flux 是第 2 版,目前正在 CNCF 中孵化。
3.Brigade[10]
用于 Kubernetes 的事件驱动脚本
CI/CD 管道本质上需要配置大量的自动化。Brigade 是一种工具,可让您将容器链接在一起以构建管道。这可能包括为新的 GitHub 推送运行单元测试、更新 MongoDB 数据库或其他操作。Brigade 还可以拦截来自 Slack 等工具的事件以触发脚本运行。在撰写本文时,Brigade 是第 2 版[11],是 CNCF 中的一个沙盒项目。
4. Keptn[12]
云原生应用生命周期编排
云原生软件的持续开发需要持续关注性能。这对于 SRE 满足内部服务水平目标 (SLO) 并兑现可靠性承诺至关重要。Keptn 是一个新的开源沙盒 CNCF 项目,可以在这方面提供帮助。它在 Kubernetes 上运行并提供云原生应用程序生命周期编排。Keptn 由一个控制平面组成,使组织能够声明 SLO,并使 Keptn 能够自动化可观察性和基于 SLO 的决策。这样的工具有助于确保在每个开发阶段只发布高质量的代码。Keptn 路线图在此处[13]公开 ,您可以跟踪其进度。
5.OpenGitOps[14]
定义 GitOps 的工作组
最近,有很多关于用于操作云原生基础架构的GitOps 的讨论。[15]“声明式配置是大规模处理基础设施的关键,”谷歌的开发人员倡导者 Kelsey Hightower 说。然而,定义 GitOps 有点模糊。到目前为止,GitOps 更多的是一个概念,而不是指任何特定的工具。
在 CNCF App Delivery SIG 下的 GitOps 工作组是一个旨在为 GitOps 提供更加基于标准的方法的小组。“GitOps WG 的重点是明确定义 GitOps 的供应商中立、原则主导的含义,”根据小组章程[16]。OpenGitOps 存储库[17]包含 OpenGitOps 工作组制作的材料。虽然尚未提出规范或标准,但该小组将确定景观中的差距并促进更好的互操作性。随着亚马逊、Azure、CodeFresh、Crayon、GitHub、Red Hat 和 Weaveworks 等创始成员的加入,OpenGitOps 将成为一支令人兴奋的追随者。
6.OpenKruise[18]
在 Kubernetes 上自动化应用程序管理
OpenKruise 现在作为 CNCF 沙箱项目托管,是一个扩展了一些核心 Kubernetes 组件的项目。一个关键特性是它的高级工作负载,例如 CloneSet、Advanced StatefulSet、Advanced DaemonSet 和 BroadcastJob,它们带来了高级功能。例如,就地更新功能使操作员能够在不重新创建 pod 的情况下更新容器。OpenKruise 专为在 Kubernetes 中工作而设计,基于 CRD 扩展,为部署、升级和可用性保护提供自动化。
开源 CI/CD 项目
将代码从源代码存储库移动到生产环境的看似简单的操作是一项令人惊讶的复杂工作。每个上面的工具都提供了协助该任务各个方面的方法。在 CNCF 之外,CD 基金会[19]是开源 CI/CD 项目的另一个优秀资源。基金会监督也许是最受欢迎的 CI/CD 工具 Jenkins,以及其他项目,如 Jenkins X、Spinnaker 和 Tekton。
参考资料
CI/CD: https://nordicapis.com/the-differences-between-continuous-integration-continuous-delivery-and-continuous-deployment/
[2]CNCF 有许多开源工具: https://landscape.cncf.io/guide#app-definition-and-development--continuous-integration-delivery
[3]Argo: https://github.com/argoproj/argo-workflows
[4]Argo Workflows: https://argoproj.github.io/workflows/
[5]Flux: https://github.com/fluxcd/flux2
[6]Azure: https://fluxcd.io/docs/use-cases/azure/
[7]AWS: https://fluxcd.io/docs/use-cases/aws-codecommit/
[8]Helm: https://fluxcd.io/docs/use-cases/helm/
[9]的详细文档。: https://fluxcd.io/docs/get-started/
[10]Brigade: https://github.com/brigadecore/brigade
[11]第 2 版: https://v2--brigade-docs.netlify.app/intro/quickstart/
[12]Keptn: https://github.com/keptn/keptn
[13]Keptn 路线图在此处: https://github.com/orgs/keptn/projects/1
[14]OpenGitOps: https://github.com/open-gitops/project
[15]GitOps 的讨论。: https://containerjournal.coml/?s=GitOps
[16]根据小组章程: https://github.com/cncf/tag-app-delivery/blob/main/gitops-wg/charter.md
[17]OpenGitOps 存储库: https://github.com/open-gitops
[18]OpenKruise: https://github.com/openkruise/kruise
[19]CD 基金会: https://cd.foundation/
- END -
后台回复“加群”,带你进入高手如云交流群
推荐阅读
全网粉丝20W的头部大号,专注云原生、Golang、Linux实用脚本,效率工具,免费CSDN下载,回复【go】获取近 6 万 Star 的资源,回复【1024】获取全种类IT资料,回复【红包封面】获取超好看封面,回复【加群】进入高手如云技术交流群
分享、点赞和在看
支持我们分享更多好文章,谢谢!
点个在看集群永保稳定👇