本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Jenkins X
Jenkins X 是一个云原生开源 CI/CD 平台,它实现了 Kubernetes 环境 GitOps的原理。尽管 Jenkins X 不仅仅是像 Argo CD 或 Flux 这样的 GitOps工具,但它在工作流程中融入了 GitOps 实践。
GitOps 支持
| 区域图 | 工具功能 |
|---|---|
以 Git 为中心的工作流程 |
Jenkins X 使用 Git 存储库作为应用程序代码和配置的主要真实来源。对应用程序和基础架构的所有更改都是通过 Git 进行的。 |
环境即代码 (eaC) |
环境(例如暂存环境和生产环境)定义为 Git 存储库中的代码。这允许对环境配置进行版本控制和审查。 |
自动化 CI/CD 管道 |
Jenkins X 会自动为项目设置 CI/CD 管道。这些管道被定义为代码(管道即代码)并存储在 Git 中。 |
Kubernetes 原生 |
Jenkins X 是专门为 Kubernetes 环境构建的。它使用 Kubernetes 资源和自定义资源定义 ()。CRDs |
预览环境 |
Jenkins X 会自动为拉取请求创建临时环境。它允许在合并之前轻松查看和测试更改。 |
在不同环境之间进行推广 |
Jenkins X 使用一种 GitOps 方法在环境之间推广应用程序(例如,从暂存到生产)。促销活动通过拉取请求来处理,以确保适当的审查和批准流程。 |
Helm 图表管理 |
Jenkins X 使用 Helm 图表来打包和部署应用程序。图表在 Git 存储库中受版本控制。 |
自动版本控制 |
Jenkins X 会自动管理应用程序和版本的版本控制。它使用语义版本控制并生成发行说明。 |
ChatOps 整合 |
Jenkins X ChatOps 支持常见操作。这符合自动化和协作 GitOps 的原则。 |
可扩展性 |
该工具提供了一个用于扩展功能的插件系统。它允许与各种云原生工具集成。 |
基础设施即代码(IaC) |
Jenkins X 支持 Terraform、 CloudFormation AWS Cloud Development Kit (AWS CDK)、和其他 IaC 工具来定义和管理基础架构。基础架构定义与应用程序代码一起受版本控制。 |
自动回滚 |
如果在部署后检测到问题,Jenkins X 支持自动回滚。 |
密钥管理 |
该工具与外部机密管理解决方案集成,可安全地处理敏感信息。 |
可观测性 |
Jenkins X 提供了与监控和日志工具的集成,以实现可观察性。 |
多云支持 |
Jenkins X 旨在跨不同的云提供商和本地环境运行。 |
团队协作 |
该工具鼓励通过基于 Git 的工作流程和拉取请求进行协作。 |
持续反馈 |
该工具通过自动测试和预览环境提供有关更改的快速反馈。 |
DevOps 最佳实践 |
Jenkins X 默认会实现 DevOps 最佳实践,包括 GitOps 原则。 |
声明式配置 |
该工具使用声明性配置来定义应用程序和环境。 |
自动升级 |
Jenkins X 提供了自动升级 Jenkins X 平台本身的工具。 |
Jenkins X 实现了这些 GitOps 原则,为 Kubernetes 创建了全面的 CI/CD 解决方案。它旨在自动化和简化从代码提交到生产部署的整个软件交付流程,同时遵守 GitOps 实践。通过这样做,它可以帮助团队在云原生环境中实现更快、更可靠、更一致的部署。
Jenkins X 与 Argo CD 或 Flux 等工具之间的主要区别在于,Jenkins X 提供了更全面的 CI/CD 解决方案,包括构建自动化和管道管理,同时仍包含部署和环境管理 GitOps 原则。这使得它特别适合需要在单个 GitOps框架内同时涵盖 CI 和 CD 方面的 all-in-one解决方案的团队。
有关更多信息,请参阅 Jenkins X 文档
架构
下图说明了使用 Jenkins X 的 GitOps驱动型 CD 工作流程。有关详细信息,请参阅 Jenkins
其中:
-
第 1 步:合并拉取请求 (PR)。开发者创建一个拉取请求,其中包含对 Kubernetes 清单、Helm 图表或存储在 Git 存储库中的应用程序代码的更改。审核和批准后,PR 将合并到主分支中,并在源代码管理中更新所需的状态。
-
步骤 2:存储库同步。Jenkins X 在检测到更改时会自动触发 CI/CD 管道。该管道使用 GitOps原理在不同的环境(例如暂存和生产)中构建、测试和推广应用程序。
-
步骤 3:部署到目标命名空间。Jenkins X 使用新的应用程序版本更新环境存储库(暂存和生产存储库)。集群通过从 Git 中提取最新清单并将应用程序部署到相应的命名空间来自动协调更改。