直接回答:GitOps 四原则:系统状态声明式描述、版本化存于 git(唯一事实来源)、变更经合并后由自动化代理应用到环境、代理持续调谐——发现实际状态与 git 漂移就拉回。Argo CD 是 K8s 上的实现:它 watch git 仓库与集群,Application 资源声明"哪个仓库哪个路径同步到哪个集群哪个命名空间",对比出 OutOfSync 后自动或手动 sync。
展开解析:机制细节决定踩坑点。漂移检测:有人 kubectl 改了集群,Argo CD 默认标记 OutOfSync,开了 selfHeal 会强制回滚——这和 HPA 改副本数打架,要用 ignoreDifferences 豁免被控制器管理的字段。删除语义:从 git 删资源默认不级联删除集群资源(prune 需显式开启),命名空间级误删是高危操作。密钥不能明文进 git:配 Sealed Secrets/SOPS 或 External Secrets。多环境晋升用目录/分支或 Kustomize overlay,勿用「先合 staging 分支再合 prod 分支」的脆弱流程,镜像版本晋升走 CI 更新 git(image updater)。sync wave 和 hook 控制资源顺序(先 CRD 再 CR、迁移 Job 先于应用)。收益兑现于审计与回滚:回滚=git revert,审计=git log。
追问方向:pull 模型(Argo CD)相比 push 模型(CI 里 kubectl apply)的安全优势?App of Apps 模式管什么?sync 失败如何告警与止损?
(约 470 字)