本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Argo CD
Argo CD 是一款广泛使用的 Kubernetes GitOps 持续交付 (CD) 工具,它符合多个关键原则。 GitOps
GitOps 支持
| 区域图 | 工具功能 |
|---|---|
声明式配置 |
Argo CD 使用存储在 Git 存储库中的声明性配置。应用程序和基础架构的所需状态在 YAML 文件中定义。这些配置描述的是应该部署的内容,而不是如何部署它们。 |
版本控制系统作为单一事实来源 |
Git 存储库是整个系统的单一事实来源。对应用程序和基础架构的所有更改都是通过 Git 进行的。这样可以确保完整的审计跟踪,并能够回滚到之前的任何状态。 |
自动同步 |
Argo CD 会持续监控 Git 存储库中的更改。当检测到更改时,它会自动将集群的实际状态与 Git 中定义的所需状态同步。这样可以确保集群始终反映存储库中描述的状态。 |
Kubernetes 原生 |
Argo CD 专为 Kubernetes 环境而设计。它利用 Kubernetes 中的声明性质和自定义资源来管理应用程序。 |
自我修复和漂移检测 |
Argo CD 定期将集群的实时状态与 Git 中的所需状态进行比较。如果它检测到任何偏差(实际状态和所需状态之间的差异),它可以自动纠正这些差异。 |
多集群和多租户支持 |
Argo CD 可以从一个实例管理多个 Kubernetes 集群。它支持多租户,因此不同的团队可以独立管理他们的应用程序。 |
应用程序定义 |
Argo CD 中的应用程序是使用应用程序 CRD(自定义资源定义)定义的。这允许使用 Kubernetes 原生的方式来定义应该部署什么以及如何部署。 |
部署和发布分离 |
Argo CD 将代码部署与向用户发布代码区分开来。这是通过各种部署策略实现的,例如 blue/green 或金丝雀部署。 |
可观察性和可审计性 |
Argo CD 提供了用于观察应用程序和集群状态的 Web 用户界面和 CLI。所有操作都记录在案,以提供对更改和部署的清晰审计跟踪。 |
安全和 RBAC |
Argo CD 与 Kubernetes 基于角色的访问控制 (RBAC) 集成。它支持用于身份验证和授权的单点登录集成。 |
可插拔架构 |
Argo CD 支持各种源代码控制管理系统、Helm 图表、Kustomize 和其他 Kubernetes 清单格式。这种灵活性使其能够适应不同的环境和工作流程。 |
持续交付 (CD) |
尽管 Argo CD 专注于持续交付,但它可以与持续集成 (CI) 工具集成以创建完整的 CI/CD 管道。 |
通过遵守这些 GitOps 原则,Argo CD 提供了一种强大、可扩展且安全的方法来管理 Kubernetes 部署。它可确保系统的运行状态始终与 Git 存储库中定义的所需状态保持同步,并提高复杂 Kubernetes 环境中的一致性、可靠性和易管理性。
有关 Argo CD 可以满足的场景和要求,请参阅本指南后面的 Argo CD 用例。有关 Argo CD 和 Flux 之间的比较,请参阅本指南后面的功能比较。
有关更多信息,请参阅 Argo CD 文档
架构
下图说明了在 GitOps EKS 集群中使用 Argo CD 的驱动型 CD 工作流程。有关详细信息,请参阅 Argo CD 文档
其中:
-
第 1 步:合并拉取请求 (PR)。开发者提交对存储在 Git 存储库中的 Kubernetes 清单或 Helm 图表的更改。审核 PR 并将其合并到主分支后,将在源代码管理中更新应用程序的所需状态。
-
步骤 2:存储库同步。Argo CD 在 EKS 集群的专用命名空间 (
argocd) 中运行,并持续监控配置的 Git 存储库。当它检测到更改时,它会提取最新的更新以协调声明的状态。 -
步骤 3:部署到目标命名空间。Argo CD 将来自 Git 的所需状态与集群中的实时状态进行比较。然后,它会对目标工作负载命名空间进行必要的更改,以便相应地部署或更新应用程序。这包括管理部署、服务和密钥等 Kubernetes 资源 ConfigMaps,以保持集群与 Git 真实来源的一致性。