You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何阻止ArgoCD同步单个Secret资源,避免其被重建?

解决ArgoCD应用更新时重建Secret的问题

你可以通过以下两种方式解决这个问题,核心思路是让ArgoCD不再管理该Secret,同时从Helm Chart中移除它的定义:

方法一:彻底从Helm Chart移除Secret,配置ArgoCD忽略该资源

  1. 删除Helm模板中的Secret定义:直接删掉Chart里对应这个Secret的模板文件,让Helm不再生成该Secret资源。
  2. 配置ArgoCD忽略该Secret:在你的ArgoCD Application配置里,添加ignoreDifferences规则,让ArgoCD同步时跳过对这个Secret的校验和更新:
spec:
  ignoreDifferences:
  - group: ""  # Secret属于core组,group字段为空
    kind: Secret
    name: {{ include "myapp.fullname" . }}  # 替换为你的Secret实际名称
    jsonPointers:
    - /data  # 忽略data字段的所有变更,适配其他服务添加额外值的场景

如果需要完全忽略这个Secret的所有变更(包括元数据),可以简化成:

spec:
  ignoreDifferences:
  - group: ""
    kind: Secret
    name: {{ include "myapp.fullname" . }}

方法二:临时保留Helm模板,通过注解和ArgoCD配置避免重建

如果暂时无法移除Helm里的Secret模板,可以做以下修改:

  1. 给Secret添加Helm保留注解:在Secret的metadata.annotations里加上helm.sh/resource-policy: keep,这样Helm在更新应用时不会删除或重建这个Secret:
metadata:
  annotations:
    helm.sh/hook: pre-install,post-delete
    helm.sh/resource-policy: keep  # 新增该注解
  1. 同步配置ArgoCD忽略差异:同样在ArgoCD Application里添加上述的ignoreDifferences规则,避免因为其他服务修改了Secret的data字段,导致ArgoCD触发同步更新。

注意:如果你的ArgoCD应用开启了全局Prune(syncPolicy.syncOptions包含Prune=true),要确保这个Secret不会被ArgoCD自动删除,通过ignoreDifferences或者在syncPolicy.syncOptions里添加PrunePropagationPolicy=foreground配合资源忽略规则即可。

内容的提问来源于stack exchange,提问作者PatrickSchiefer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 10:00:56