Argo CD 渐进式同步:控制资源顺序与失败半径

使用 sync wave、健康检查与分批应用降低大规模 GitOps 发布风险。

文章目录 · 4 节

一次同步同时修改 CRD、数据库迁移、后端和入口,会让失败边界难以判断。渐进式同步把依赖关系显式化,并在每一阶段验证健康状态。

使用 Sync Wave

metadata:
  annotations:
    argocd.argoproj.io/sync-wave: "10"

负数 wave 可用于 Namespace 和 CRD,较高 wave 用于依赖它们的工作负载。Hook 只处理确实属于发布生命周期的任务,避免把长期资源做成 Hook。

定义真实健康状态

Deployment Available 不代表业务可用。对自定义资源补充 health check,并让 PreSync 任务验证数据库兼容性、配额和外部依赖。

控制批次

大型应用按集群、地域或租户拆分 ApplicationSet 批次。每批设置暂停点,观察 SLI 和错误预算后再继续。

失败处理

明确哪些资源可以自动回滚,哪些迁移只能前进修复。同步失败时先冻结后续 wave,保存差异与 Hook 日志,不要盲目重复 Sync。