2. Argo CD 基础回顾:核心概念、架构图与工作流程
在深入发布质量门禁与事故响应阈值策略之前,必须牢固掌握 Argo CD 的底层运行机制。本章将系统回顾其四大核心概念、整体架构以及一次完整的 GitOps 同步工作流程,为后续的阈值配置与故障排查奠定基础。
2.1 四大核心概念
Argo CD 围绕四个关键组件构建,理解它们之间的职责划分是使用 Argo CD 的第一步。
| 概念 | 职责 | 关键说明 |
|---|---|---|
| Application | 定义了一个 Kubernetes 应用实例的完整声明式状态。 | 包含 source(Git 仓库路径)、destination(目标集群/命名空间)、syncPolicy(自动/手动同步策略)。它是用户操作的主要对象。 |
| Project | 提供逻辑分组与访问控制边界,用于管理多个 Application。 | 限制可用的目标集群、允许的 Git 仓库来源、资源类型以及同步权限。常用于多租户隔离。 |
| Repo Server | 负责从 Git 仓库拉取清单文件,并执行模板化(如 Helm、Kustomize、Jsonnet)。 | 生成最终的 Kubernetes 原生 YAML 清单。它是连接 Git 与 Kubernetes 的“编译”层。 |
| Application Controller | 持续监控集群中运行的应用状态,并与 Repo Server 生成的“期望状态”进行对比。 | 检测配置漂移,触发自动或手动同步,并报告应用健康状态(Healthy、Degraded、Progressing)。 |
💡 核心关系: Application 是“用户意图”,Project 是“管理边界”,Repo Server 是“配置编译器”,Application Controller 是“状态监督员”。
2.2 系统架构图
下图展示了 Argo CD 各组件的交互关系,重点关注数据流与控制流的方向。
2.3 工作流程:从 Git Push 到应用同步
一次标准的 GitOps 同步流程包含以下步骤,理解此流程有助于定位同步失败或状态漂移问题。
- 代码提交(Git Push): 开发人员将更新后的 Kubernetes 清单(或 Helm/Kustomize 配置)推送到 Git 仓库。
- 配置拉取(Repo Server): Argo CD Repo Server 检测到仓库变更(通过 Webhook 或轮询),拉取最新代码,并执行模板渲染,生成最终的 Kubernetes 原生 YAML 清单。
- 状态对比(Application Controller): Application Controller 将 Repo Server 生成的“期望状态”与目标 Kubernetes 集群中运行的“实际状态”进行对比。
- 触发同步(Sync): 如果检测到差异,根据 Application 的
syncPolicy配置:- 自动同步: Controller 自动执行同步操作,将集群状态修正为期望状态。
- 手动同步: 用户通过 Argo CD UI、CLI 或 API 手动触发同步。
- 应用更新(Kubernetes): Argo CD 调用 Kubernetes API 更新资源(如 Deployment、Service、ConfigMap),完成应用发布。
- 健康评估(Health Check): 同步完成后,Controller 对应用进行健康检查(如 Pod 是否 Ready、Deployment 是否完成滚动更新),并更新应用的健康状态。
🔍 关键观察点: 在步骤 3(状态对比)和步骤 6(健康评估)中,Argo CD 会生成详细的同步状态与健康状态。这些状态是后续设置发布质量门禁(如“同步失败自动回滚”、“健康检查超时告警”)的原始数据来源。
2.4 核心对象关系总结
下表总结了 Application、Project 与底层组件之间的依赖关系,帮助理解配置的生效范围。
| 对象 | 关联组件 | 配置示例 |
|---|---|---|
| Application | Repo Server(source)、Application Controller(destination) | |
| Project | API Server(RBAC)、Application(分组) | |
⚠️ 常见陷阱: 如果 Application 的同步状态显示
OutOfSync 但健康状态为 Healthy,通常意味着集群中存在未被 Git 管理的额外资源(配置漂移),或者 Argo CD 的权限不足以清理这些资源。这是设置“强制同步”或“自愈”策略时需要重点评估的场景。