1. Argo CD 的控制循环如何将 Git 期望状态同步到集群(diff/sync)?
Argo CD 的控制循环如何工作,如何将 Git 中的期望状态同步到集群(diff/sync)?
- 控制循环:期望状态 vs 实际状态
- diff 比对与 sync 动作
- 自愈、钩子与同步策略
Argo CD 采用 controller 定时轮询 Git 仓库与集群,比较期望状态(Git 中的 manifest)与实际状态(集群中的资源),若不一致则标记为 OutOfSync,并根据同步策略(自动/手动)执行 sync 将集群收敛到期望状态。diff 发生在 manifest 处理的多个层面:先比较 Git 原始 manifest 与集群中渲染后的资源,再比较实际资源与期望的差异条目。sync 通过 kubectl apply / kubectl patch 等机制执行,可配合 sync hooks(PreSync/Sync/PostSync)在同步前后执行初始化、迁移、验证等任务。同步支持 prune(删除多余资源)、自愈(auto-heal 自动纠正漂移)与强制同步(替换冲突资源)。
Argo CD 的"声明式收敛"是 GitOps 的核心:以 Git 为唯一事实来源,控制循环持续保证集群与 Git 一致,diff 定位差异、sync 收敛差异,这是"自愈式 IaC"的实现基础。