Kustomize补丁无法修改GKE托管证书的基础配置值
问题诊断与修复方案
1. Target 匹配错误
你的补丁未生效的核心原因是目标资源匹配失败:
- Base 中证书的名称是
some-managed-cert,但 overlay 的patchesJson6902里 target 指定的name是managed-cert,补丁找不到对应资源,自然无法执行修改。 - Target 的
group字段格式错误,应单独写group: networking.gke.io,版本信息通过version: v1单独指定,不能合并写在 group 里。
2. JSON Patch 路径错误
/spec/domains/- 的写法不适用于 replace 操作:JSON6902 中 - 代表向数组末尾添加元素,若要替换已存在的空域名,应使用索引路径 /spec/domains/0。
修复后的 Overlay Kustomization 文件
推荐使用新版 patches 字段替代已废弃的 patchesJson6902,修复后的配置如下:
apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - ../../base namespace: new-env patches: - target: group: networking.gke.io version: v1 kind: ManagedCertificate name: some-managed-cert patch: |- - op: replace path: /metadata/name value: new-cert-name - op: replace path: /spec/domains/0 value: new.domain.name
可选优化:使用 Strategic Merge Patch 简化配置
如果需要替换整个域名数组或多个字段,用 Strategic Merge Patch 更简洁:
patches: - target: group: networking.gke.io version: v1 kind: ManagedCertificate name: some-managed-cert patch: |- apiVersion: networking.gke.io/v1 kind: ManagedCertificate metadata: name: new-cert-name spec: domains: - new.domain.name - another.domain.name
内容的提问来源于stack exchange,提问作者Joephus
相关产品推荐
相关产品推荐

