在 Azure Kubernetes 服务(AKS)和已启用 Azure Arc 的 Kubernetes 群集上使用 Argo CD 时,源代码仓库将成为应用程序及群集配置的期望状态的真实性来源。 此方法提供以下几个优势:
- 持续同步:Argo CD 在集群中原生运行,直接从 Git 拉取清单、Helm Chart(图表)或 Kustomize 配置。
- 偏移检测和修正:系统不断根据 Git 中的所需状态监视群集的实时状态。 它会立即检测任何偏移,并根据特定的自动化策略对其进行协调。
- 安全优先拉取模型:与传统 CI/CD 不同,Argo CD 使用纯拉取体系结构。 由于群集启动连接,因此无需打开入站防火墙端口或授予 Git 存储库网络对专用群集的访问权限。 此体系结构使 Argo CD 非常适合高安全性环境、边缘计算和大规模混合云规模。
Argo CD 群集扩展
为了简化管理,Azure 提供 Argo CD 作为托管 群集扩展 (Microsoft.KubernetesConfiguration/extensions/microsoft.argocd)。 若要通过 GitOps 管理应用程序, 请将 Argo CD 扩展 部署到群集。
托管组件和控制器
Argo CD 扩展包并管理企业级 GitOps 所需的核心组件:
| 组件名称 | Kubernetes 服务名称 | 主要责任 |
|---|---|---|
| 应用程序控制器 | argocd-application-controller |
持续监视正在运行的应用程序,并将实时状态与 Git 中所需的目标状态进行比较。 |
| API 服务器 | argocd-server |
充当公开 Web UI、CLI 和外部 CI/CD 系统使用的 API 的 gRPC/REST 服务器。 |
| 存储库服务器 | argocd-repo-server |
维护 Git 存储库的本地缓存,并负责从源(Helm、Kustomize 等)生成 Kubernetes 清单。 |
| Redis | argocd-redis |
提供用于缓存清单生成结果和应用程序状态的短暂性内存数据存储。 |
| Dex 和通知 | argocd-dex-server |
一个开源的 OpenID Connect 提供程序,可中介来自外部提供者(如 GitHub、SAML 或 LDAP)的身份认证。 |
| 通知控制器 | argocd-notifications-controller |
监视应用程序状态更改,并触发对 Slack、Email 或 Webhook 等外部服务的警报。 |
| ApplicationSet 控制器 | argocd-applicationset-controller |
自动跨多个群集创建多个应用程序。 |
Argo CD 组件
将 Argo CD 扩展部署到群集后,可以使用 Argo CD 构造来管理工作负荷,例如:
应用程序和 ApplicationSet:为单目标部署定义单个应用程序,或使用 ApplicationSets 基于模板自动跨不同群集和环境创建多个应用程序。
管理接口:通过 Argo CD Web UI 管理和监视资源,以直观表示群集运行状况,或使用 Argo CD CLI 进行基于终端的操作和自动化。
有关详细信息,请参阅 Argo CD 文档。
身份验证和访问控制
为了符合企业安全要求,Argo CD 扩展与 Azure 标识集成,以支持 AKS 和 Azure Arc 启用的 Kubernetes 群集。
该扩展支持工作负荷标识联合,使 Argo CD 能够安全地访问 Azure 资源,例如 Azure 容器注册表(ACR)和 Azure DevOps,而无需依赖长期机密。 Argo CD 扩展还支持使用 Microsoft Entra ID 进行单一登录(SSO),该 ID 允许用户使用其现有企业标识向 Argo CD 进行身份验证。 通过使用此模型,Azure 集中管理凭据和访问策略,而不是直接将其嵌入群集配置或 Git 存储库中。
后续步骤
- 了解如何在 Argo CD GitOps 教程中使用 GitOps 部署 Argo CD 扩展和管理应用程序。