如何通过Kustomize将Vault注解批量添加到多个Overlay资源
可行方案:复用Vault注解到多个Deployment
针对你的场景,推荐用Kustomize的patches字段结合通用注解patch实现批量复用,比patchesStrategicMerge更灵活,能避免配置冗余:
方案1:抽取通用注解patch(推荐)
- 把
vault-values.yml里的Vault注解单独抽成一个通用patch文件(比如vault-annotations-patch.yml),放在Overlay目录:
# overlay/vault-annotations-patch.yml apiVersion: apps/v1 kind: Deployment metadata: annotations: vault.hashicorp.com/agent-inject: "true" vault.hashicorp.com/role: "your-vault-role" # 其他需要的Vault相关注解
- 在Overlay目录的
kustomization.yml中,用patches字段指定要应用该注解的所有Deployment:
# overlay/kustomization.yml resources: - ../base patches: - path: vault-annotations-patch.yml target: kind: Deployment name: mylogger - path: vault-annotations-patch.yml target: kind: Deployment name: myjob # 可继续添加其他需要注入Vault注解的Deployment名称
方案2:复用现有vault-values.yml
如果不想新增文件,可修改现有vault-values.yml,去掉针对mylogger的名称限制,变成通用patch:
# overlay/vault-values.yml apiVersion: apps/v1 kind: Deployment metadata: annotations: # 保留所有原有的Vault注解 vault.hashicorp.com/agent-inject: "true" ...
然后同样在kustomization.yml中用patches字段批量匹配目标Deployment:
# overlay/kustomization.yml resources: - ../base patches: - path: vault-values.yml target: kind: Deployment name: mylogger - path: vault-values.yml target: kind: Deployment name: myjob
关于patchesStrategicMerge的说明
patchesStrategicMerge确实能给资源打补丁,但它依赖文件内的metadata.name精确匹配资源——如果用它实现批量复用,你得复制多份vault-values.yml并修改每个文件的metadata.name,会导致配置冗余,所以不推荐用在这个场景。而patches字段支持通过target规则批量匹配资源,完美适配你的复用需求。
内容的提问来源于stack exchange,提问作者jakox
相关产品推荐
相关产品推荐

