2. Argo CD 核心架构:组件、工作流程与 GitOps 关系

Argo CD 是 Kubernetes 生态中最主流的声明式 GitOps 工具。理解其核心架构,是后续进行资源配额校准与网关瓶颈诊断的基础。本章将拆解 Argo CD 的三大核心组件、一次完整的同步工作流程,以及它与 GitOps 原则的对应关系。

2.1 三大核心组件

Argo CD 采用微服务架构,主要由以下三个组件构成,它们各自承担独立职责,并通过 gRPC 和 REST API 通信。

组件 核心职责 关键行为 资源敏感点
API Server 暴露 API、处理用户请求、认证授权 接收 Web UI/CLI 请求,代理转发至其他组件 高并发 API 调用时 CPU/内存
Repo Server 连接 Git 仓库、生成 Kubernetes 清单 git clone、helm template、kustomize build 大型仓库克隆、多 Application 并发构建时 CPU/内存/磁盘
Application Controller 持续对比、执行同步、管理应用生命周期 轮询对比期望状态与实时状态,触发 sync/self-heal 大量 Application 时内存与 API Server QPS
诊断提示: 当 Argo CD 响应变慢时,优先检查 argocd-repo-server 的 CPU 和内存指标,它通常是 GitOps 流水线中的第一个瓶颈点。

2.2 组件协作工作流程

一次完整的 GitOps 同步流程,展示了三个组件如何协同工作。下图以用户通过 UI 触发“Sync”为例,展示核心数据流。

Argo CD 组件协作与同步工作流程 Argo CD 组件协作与同步工作流程 用户/CLI/UI API Server Repo Server App Controller Git 仓库 K8s API 1. Sync 请求 2. 获取清单 3. git clone 4. 返回清单 5. 传递清单 6. Apply 7. 状态回写 8. 同步结果 9. 响应 流程说明 1-2: 请求路由 3-4: 清单生成 5-7: 对比与同步 8-9: 结果反馈

2.3 核心工作流程步骤详解

  1. 触发同步:用户通过 CLI/UI 或自动策略(如 Webhook)向 API Server 发起 Sync 请求。
  2. 请求代理:API Server 将请求转发给 Repo Server,要求生成目标环境的 Kubernetes 清单。
  3. 清单生成:Repo Server 连接 Git 仓库,执行 git clone,并根据 Application 配置运行 helm template 或 kustomize build,生成最终的 YAML 清单。
  4. 传递清单:Repo Server 将生成的清单返回给 Application Controller。
  5. 对比差异:Application Controller 将清单中的期望状态与 Kubernetes 集群中的实时状态进行对比。
  6. 执行同步:Application Controller 调用 Kubernetes API,执行 kubectl apply 操作,使集群状态趋近于期望状态。
  7. 状态回写:Kubernetes API 将操作结果返回给 Application Controller,Controller 更新 Application 的健康和同步状态。
  8. 结果反馈:Application Controller 将最终结果通过 API Server 返回给用户。

2.4 与 GitOps 的关系

Argo CD 是 GitOps 原则在 Kubernetes 上的具体实现。下表展示了 GitOps 四大原则与 Argo CD 组件的对应关系。

GitOps 原则 Argo CD 实现 对应组件
声明式 所有配置以 Kubernetes 清单形式存储在 Git 中 Git 仓库 + Repo Server
版本控制与不可变 Git 作为单一事实来源,每次变更都有完整历史 Git 仓库
自动同步 Application Controller 持续对比,自动修复漂移 Application Controller
闭环反馈 同步结果、健康状态通过 API Server 实时反馈 API Server + Application Controller
架构要点: Argo CD 的 Application Controller 是 GitOps 闭环的核心执行者。它默认每 3 分钟轮询一次 Git 仓库(可通过 --status-processors 和 --operation-processors 参数调整并发度),对比期望状态与实时状态。当集群规模较大(超过 500 个 Application)时,Controller 的内存和 API Server 的 QPS 会成为首要瓶颈,这也是后续章节资源配额校准的重点关注对象。

2.5 架构总结

Argo CD 的微服务架构设计,使其具备了高内聚、低耦合的特性。API Server 负责接入层,Repo Server 负责构建层,Application Controller 负责执行层。理解这一分层,有助于在后续章节中精准定位资源瓶颈:

  • API 响应慢 → 排查 API Server 的 Pod 资源与 Ingress/Envoy 配置。
  • 同步卡在“Building”阶段 → 排查 Repo Server 的 CPU/内存与 Git 仓库大小。
  • 同步卡在“Comparing”或“Syncing”阶段 → 排查 Application Controller 的内存与 K8s API 的限流。