ArgoCD 入门和生产实践指南
1. 什么是 ArgoCD ArgoCD 是 CNCF 毕业级项目,面向 Kubernetes 的声明式 GitOps 持续交付工具。 GitOps 核心思想:Git 仓库作为应用配置的唯一可信源。ArgoCD 持续监听 Git 仓库内定义的应用目标状态,对比集群内资源的实际运行状态,自动完成应用部署、版本更新与故障回滚。 ArgoCD 原生支持多种配置编排方式:Helm Chart、Kustomize、Jsonnet、Ksonnet,以及原生 YAML/JSON Kubernetes 资源清单。 2. 架构原理 ArgoCD 以 Kubernetes 控制器形态运行,持续对应用做状态巡检: 拉取 Git 仓库中声明的期望状态(Target State) 采集集群内资源实际运行状态(Live State) 对比两者差异,不一致时标记为 OutOfSync(不同步) 可视化展示资源差异,支持手动同步 / 自动同步,将集群状态收敛到 Git 定义的目标状态 Git 仓库中修改清单后,ArgoCD 会感知变更并同步至目标集群,实现“改 Git 即发布”。 具体工作流程参见下面的图片: 核心组件: 组件 核心作用 argocd-server ArgoCD API 服务,提供 REST API、Web UI,处理认证鉴权 argocd-repo-server Git 仓库管理服务,缓存仓库代码、渲染 Helm/Kustomize 生成K8s清单 argocd-application-controller 应用控制器,持续做状态比对,执行同步、健康检查 argocd-applicationset-controller ApplicationSet控制器,批量、模板化管理多环境/多集群 Application argocd-redis 缓存组件,存储仓库缓存、应用状态信息 argocd-dex-server 可选,Dex 身份代理,对接OIDC、LDAP等外部身份源 argocd-notifications-controller 可选,通知控制器,同步状态变更推送至邮件、Slack、Webhook等 3. 部署 部署前建议查阅官方版本兼容矩阵,选择与K8s集群匹配的ArgoCD版本。 ...