2. Argo CD 架构回顾:核心组件与多集群管理模式

在深入高风险变更准入策略之前,必须重新理解 Argo CD 的架构设计。多租户隔离集群场景下的所有策略拦截点,都直接对应 Argo CD 核心组件的通信路径与数据流。本节从组件职责、通信链路、多集群管理模式三个维度进行架构回顾。

2.1 核心组件及其职责

Argo CD 由三个常驻组件构成,每个组件在 GitOps 工作流中承担不可替代的角色。下表列出各组件的核心职责、关键端口及数据存储依赖。

组件 核心职责 关键端口 数据存储
API Server 暴露 REST/gRPC API;处理用户认证、RBAC、Webhook;作为所有 CLI/UI 请求的入口 443 (HTTPS) Redis(缓存)、Kubernetes CRD(Application/AppProject)
Repo Server 克隆 Git 仓库;生成 Helm/Kustomize/Jsonnet 清单;缓存生成的 manifests 8081 (gRPC) 本地缓存目录、Redis(manifest 缓存)
Application Controller 持续对比 desired state(来自 Repo Server)与 live state(来自目标集群);执行 Sync/Prune 操作 8082 (metrics) Kubernetes CRD(Application status)
策略切入点提示: 三个组件中,API Server 是准入 Webhook 的天然锚点(用户提交 Application 时触发),Application Controller 是运行时变更的最终执行者。高风险变更策略需要在这两个组件之间建立双重校验。

2.2 组件间通信链路

下图展示 Argo CD 核心组件之间的数据流与通信协议。理解这条链路是配置准入策略的前提——策略必须部署在数据流的关键路径上。

Argo CD 核心组件通信链路 API Server gRPC/REST :443 Repo Server gRPC :8081 Application Controller Metrics :8082 请求 manifest 生成 返回 desired state 目标集群 Kubernetes API Sync / Prune watch live state Git 仓库 SSH/HTTPS git clone / fetch 策略部署关键路径 1. API Server → Repo Server:用户提交 Application 时触发 manifest 生成,可在此处注入准入 Webhook。 2. Application Controller → 目标集群:同步操作前可调用策略引擎进行预检。

2.3 多集群管理模式

Argo CD 支持三种多集群管理模式,不同模式对准入策略的部署位置和生效范围有直接影响。多租户隔离场景通常采用 Cluster Secret 模式 或 Argo CD 控制平面内嵌模式。

管理模式 实现方式 策略部署位置 适用场景
Cluster Secret 模式 在 Argo CD 命名空间创建 Secret,包含目标集群的 kubeconfig 策略引擎部署在 Argo CD 控制平面,对所有注册集群生效 多租户共享控制平面,每个租户对应一个 Cluster Secret
Argo CD 控制平面内嵌模式 Argo CD 直接使用自身 ServiceAccount 管理集群 策略引擎作为 Argo CD 的 sidecar 或 webhook 单租户或少量集群,控制平面与目标集群隔离要求不高
外部集群代理模式 通过 Argo CD 的 cluster API 注册外部集群,使用代理隧道通信 策略引擎需要同时部署在控制平面和代理节点 跨网络边界、防火墙隔离的集群管理
多租户隔离集群推荐模式: 使用 Cluster Secret 模式,每个租户集群拥有独立的 Secret,并在 Secret 中标注租户标签(如 tenant: team-a)。准入策略通过标签选择器匹配目标集群,实现租户级策略隔离。

2.4 多集群数据流与策略拦截点

下图展示多集群模式下,Argo CD 如何将 Application 分发到多个目标集群,并标注策略引擎的拦截位置。

多集群数据流与策略拦截点 Argo CD 控制平面 API Server Repo Server Application Controller 策略引擎 目标集群(多租户) 集群 A tenant: team-a 集群 B tenant: team-b 集群 C tenant: team-c Cluster Secrets(每个租户独立 Secret) 多租户策略拦截点说明 ① 策略引擎部署在控制平面,拦截所有发往目标集群的 Sync/Prune 请求。 ② 策略引擎根据 Cluster Secret 中的租户标签,加载对应的策略规则。

2.5 架构要点总结

  • API Server 是用户与 Argo CD 交互的唯一入口,所有 Application 的创建、更新、删除操作都经过 API Server。准入 Webhook 应注册在 API Server 侧。
  • Repo Server 负责将 Git 仓库中的模板渲染为最终的 Kubernetes 清单。策略引擎可以在 manifest 生成后、同步前进行静态分析。
  • Application Controller 是实际执行同步操作的组件。高风险变更策略需要在 Controller 向目标集群发起请求前进行二次校验。
  • 多集群管理 的核心是 Cluster Secret 机制。每个 Secret 代表一个目标集群,租户隔离通过 Secret 的标签或命名空间实现。
常见架构误区: 不要将策略引擎直接部署在目标集群内部。在多租户场景下,目标集群可能不受 Argo CD 控制平面管理,策略引擎必须位于控制平面侧,确保策略的统一执行和审计。