ArgoCD部署Bitnami Sealed Secrets应用时的同步失败与健康状态异常问题咨询
解决Sealed Secrets在ArgoCD中的同步与健康状态问题
我之前在把Sealed Secrets部署到ArgoCD的时候,也碰到过一模一样的问题,给你分享下亲测有效的解决办法:
问题a:同步失败(Resource Version变化触发)
这个问题的核心是Sealed Secrets控制器会自动更新SealedSecret对象的status字段(比如添加密封状态、条件等),而ArgoCD会把Git仓库里的YAML和集群中的实际对象做全量对比,发现status字段不一致就会触发同步失败。
解决步骤:
- 在你的ArgoCD Application配置里添加差异忽略规则,让ArgoCD忽略SealedSecret的
status字段差异:spec: ignoreDifferences: - group: bitnami.com kind: SealedSecret jsonPointers: - /status - 同时确保你存放在
eee_ops目录里的SealedSecret YAML文件不要包含status字段,只保留metadata、spec等必要部分,这样Git中的版本和集群中被控制器修改后的版本差异只会集中在status,被忽略后就不会再触发同步失败了。
问题b:健康状态显示Degraded但功能正常
这是因为ArgoCD默认的健康检查规则不认识SealedSecret的状态字段,误判了健康状态。SealedSecret实际已经完成密封并正常工作,但ArgoCD不知道怎么识别它的健康状态,所以标记为Degraded。
解决方法:自定义ArgoCD的健康检查规则,针对SealedSecret资源:
- 编辑ArgoCD的
argocd-cmConfigMap,添加自定义健康检查逻辑:data: resource.customizations: | bitnami.com/SealedSecret: health.lua: | hs = {} if obj.status ~= nil and obj.status.sealedSecretStatus == "Sealed" then hs.status = "Healthy" hs.message = "SealedSecret is properly sealed and ready" else hs.status = "Degraded" hs.message = "SealedSecret is not sealed or status is missing" end return hs - 这个Lua脚本会检查SealedSecret的
status.sealedSecretStatus字段,如果值为Sealed(这是正常密封后的状态),就标记为健康;否则才标记为降级。配置完成后,ArgoCD就能正确识别SealedSecret的健康状态了。
内容的提问来源于stack exchange,提问作者abc123
相关产品推荐
相关产品推荐

