本文所介绍的ArgoCD采用Kubernetes集群部署模式,Pod作为Kubernetes体系内应用运行的核心载体,厘清ArgoCD各组件Pod的具体职能,是深入理解其全链路功能逻辑的必要基础。
核心组件(生产必须)
argocd-server
| 角色 | |
| ServiceAccount | argocd-server |
| 必选 |
提供 Web 界面、CLI 接口(argocd 命令)、SSO 登录入口。所有用户交互都经过它,但自身不做 Sync,真正的集群操作委托给 argocd-application-controller。
argocd-application-controller
| 角色 | |
| ServiceAccount | argocd-application-controller |
| 必选 |
ArgoCD 最核心的组件。
持续执行以下工作:
对比 Git 仓库配置 vs 集群实际状态
检测 Drift(集群与 Git 不一致)
执行 Sync(创建、更新、删除集群资源)
管理 Application 生命周期
是唯一拥有全集群 CRUD 权限的组件。
argocd-repo-server
| 角色 | |
| ServiceAccount | argocd-repo-server |
| 必选 |
负责:
Clone Git 仓库到本地
渲染 Helm Chart / Kustomize / Jsonnet / 纯 YAML
生成最终的 Kubernetes 资源清单
缓存渲染结果,避免重复拉取
argocd-redis
| 角色 | |
| ServiceAccount | argocd-redis |
| 必选 |
存储所有 Git 仓库缓存和 Application 状态数据,供各组件共享访问。挂了不会宕机但性能会显著下降。
辅助组件(按需可选)
argocd-dex-server
| 角色 | |
| ServiceAccount | argocd-dex-server |
| 必选 |
对接外部 SSO 认证,支持 OIDC / SAML / LDAP / GitHub / GitLab / Azure AD 等。
💡 如果只用 admin 本地账号登录,可以去掉此组件。
argocd-notifications-controller
| 角色 | |
| ServiceAccount | argocd-notifications-controller |
| 必选 |
当 Application 状态变化时触发通知:
Sync 成功/失败
Health 状态变更
触发通知渠道:Slack、钉钉、邮件、Webhook 等
💡 不需要通知功能可以去掉。
argocd-applicationset-controller
| 角色 | |
| ServiceAccount | argocd-applicationset-controller |
| 必选 |
按模板批量生成 Application。典型场景:
每个 Git 分支自动创建对应 App
每个集群/环境自动创建一套 App
💡 不使用 ApplicationSet 功能可以去掉。
资源使用参考(KinD 轻量环境)
| 总计 | ~126m | ~310Mi |
以上为部署在KinD 集群实测数据(0 个托管 Application 的空载状态),实际内存使用会随 Application 数量增加而增长。
一句话总结
argocd-server = 前台收银(Web UI / API)argocd-application-controller = 后厨炒菜(对比 + 同步)argocd-repo-server = 仓库搬运工(clone + 渲染 YAML)argocd-redis = 冰箱(缓存)argocd-dex-server = 门禁(SSO)argocd-notifications-controller = 短信通知argocd-applicationset-controller = 批量工单(模板化生成 App)
夜雨聆风