一次同步同时修改 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。