开启自修复的ArgoCD是否会回滚Wave触发的Deployment滚动升级?
问题解答
1. Wave触发的滚动升级是否会执行?
会正常执行。Wave通过修改Deployment的spec.template.metadata.annotations字段(添加/更新基于Secret内容哈希的注解)触发滚动升级——这是Kubernetes原生支持的Pod滚动更新触发方式,Kubernetes会识别Pod模板的变更并启动滚动升级流程,让新Pod挂载最新的Secret。
2. ArgoCD是否会同步回旧状态?
这取决于你是否配置ArgoCD忽略Wave添加的注解:
- 未配置忽略注解:ArgoCD的
SELF HEAL特性会检测到Deployment的注解与Git仓库中定义的期望状态不一致(Git中没有该注解或注解值不同),会将注解恢复为Git中的状态。此时Wave会再次检测到Secret哈希与注解不匹配,重新更新注解触发滚动升级,形成循环触发的情况,但Deployment不会回滚到使用旧Secret的状态,只是会重复触发滚动升级。 - 配置忽略注解:在ArgoCD的应用配置中添加
ignoreDifferences规则,忽略Wave生成的wave.pusher.com/secret-hash注解差异。此时ArgoCD会认为Deployment的实际状态与Git期望状态一致,不会执行任何同步回滚操作,Wave触发的滚动升级会正常完成,Pod将持续使用最新的Secret。
内容的提问来源于stack exchange,提问作者T M Suhas
相关产品推荐
相关产品推荐

