乐于分享
好东西不私藏

ArgoCD入门(一) Pod 组件说明

ArgoCD入门(一) Pod 组件说明

本文所介绍的ArgoCD采用Kubernetes集群部署模式,Pod作为Kubernetes体系内应用运行的核心载体,厘清ArgoCD各组件Pod的具体职能,是深入理解其全链路功能逻辑的必要基础。

核心组件(生产必须)

argocd-server

角色
Web UI + API 网关
ServiceAccountargocd-server
必选
✅ 是

提供 Web 界面、CLI 接口(argocd 命令)、SSO 登录入口。所有用户交互都经过它,但自身不做 Sync,真正的集群操作委托给 argocd-application-controller。

argocd-application-controller

角色
核心引擎(大脑)
ServiceAccountargocd-application-controller
必选
✅ 是

ArgoCD 最核心的组件。

持续执行以下工作:

  • 对比 Git 仓库配置 vs 集群实际状态

  • 检测 Drift(集群与 Git 不一致)

  • 执行 Sync(创建、更新、删除集群资源)

  • 管理 Application 生命周期

  • 是唯一拥有全集群 CRUD 权限的组件。

argocd-repo-server

角色
Git 仓库代理
ServiceAccountargocd-repo-server
必选
✅ 是

负责:

  • Clone Git 仓库到本地

  • 渲染 Helm Chart / Kustomize / Jsonnet / 纯 YAML

  • 生成最终的 Kubernetes 资源清单

  • 缓存渲染结果,避免重复拉取

argocd-redis

角色
缓存服务
ServiceAccountargocd-redis
必选
✅ 是(严格来说 ArgoCD 依赖 Redis 做组件间缓存共享)

存储所有 Git 仓库缓存和 Application 状态数据,供各组件共享访问。挂了不会宕机但性能会显著下降。


辅助组件(按需可选)

argocd-dex-server

角色
身份认证(SSO)
ServiceAccountargocd-dex-server
必选
❌ 否

对接外部 SSO 认证,支持 OIDC / SAML / LDAP / GitHub / GitLab / Azure AD 等。

💡 如果只用 admin 本地账号登录,可以去掉此组件。

argocd-notifications-controller

角色
事件通知
ServiceAccountargocd-notifications-controller
必选
❌ 否

当 Application 状态变化时触发通知:

  • Sync 成功/失败

  • Health 状态变更

  • 触发通知渠道:Slack、钉钉、邮件、Webhook 等

💡 不需要通知功能可以去掉。

argocd-applicationset-controller

角色
ApplicationSet 管理
ServiceAccountargocd-applicationset-controller
必选
❌ 否

按模板批量生成 Application。典型场景:

  • 每个 Git 分支自动创建对应 App

  • 每个集群/环境自动创建一套 App

💡 不使用 ApplicationSet 功能可以去掉。


资源使用参考(KinD 轻量环境)

Pod
CPU
内存
argocd-server
~100m
~80Mi
argocd-application-controller
~5m
~130Mi
argocd-repo-server
~3m
~35Mi
argocd-redis
~15m
~5Mi
argocd-dex-server
~1m
~20Mi
argocd-notifications-controller
~1m
~20Mi
argocd-applicationset-controller
~1m
~20Mi
总计~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)