如何用Kustomize移除Ingress注解?执行Build遇路径缺失错误
解决Kustomize删除Ingress注解报错的问题
问题场景
基础Ingress配置包含nginx.ingress.kubernetes.io/auth-snippet注解,通过overlays的JSON Patch删除该注解时,执行kustomize build报错:
Error: remove operation does not apply: doc is missing path: "/metadata/annotations/nginx.ingress.kubernetes.io/auth-snippet": missing value
原因分析
JSON Patch的路径中,/是层级分隔符,而注解键名nginx.ingress.kubernetes.io/auth-snippet本身包含/,未转义的话会被解析成层级结构,导致Kustomize无法匹配到正确的注解键。
解决方案
方案1:修正JSON Patch的路径转义
修改ingress-patch.yml,将键名中的/转义为~1(JSON Patch规定的转义字符):
- op: remove path: /metadata/annotations/nginx.ingress.kubernetes.io~1auth-snippet
方案2:使用Strategic Merge Patch替代JSON Patch
创建ingress-patch.yml,直接覆盖annotations字段(只保留需要的注解,不写入目标注解即可):
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ingress annotations: # 保留其他需要的注解,省略nginx.ingress.kubernetes.io/auth-snippet
然后在overlay目录的kustomization.yml中添加该补丁:
patches: - path: ingress-patch.yml
内容的提问来源于stack exchange,提问作者Container-Man
相关产品推荐
相关产品推荐

