View a markdown version of this page

Argo CD - AWS 规范性指导

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

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 文档

Argo CD 架构和工作流程已开启。 AWS

其中:

  • 第 1 步:合并拉取请求 (PR)。开发者提交对存储在 Git 存储库中的 Kubernetes 清单或 Helm 图表的更改。审核 PR 并将其合并到主分支后,将在源代码管理中更新应用程序的所需状态。

  • 步骤 2:存储库同步。Argo CD 在 EKS 集群的专用命名空间 (argocd) 中运行,并持续监控配置的 Git 存储库。当它检测到更改时,它会提取最新的更新以协调声明的状态。

  • 步骤 3:部署到目标命名空间。Argo CD 将来自 Git 的所需状态与集群中的实时状态进行比较。然后,它会对目标工作负载命名空间进行必要的更改,以便相应地部署或更新应用程序。这包括管理部署、服务和密钥等 Kubernetes 资源 ConfigMaps,以保持集群与 Git 真实来源的一致性。