Con*_*Man 2 kubernetes kustomize
在 Base Ingress 文件中,我添加了以下注释nginx.ingress.kubernetes.io/auth-snippet,需要在其中一个环境中将其删除。
基地入口:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress
annotations:
nginx.ingress.kubernetes.io/auth-snippet: test
Run Code Online (Sandbox Code Playgroud)
我在覆盖层中创建了一个 ingress-patch.yml 并添加了以下内容
- op: remove
path: /metadata/annotations/nginx.ingress.kubernetes.io/auth-snippet
Run Code Online (Sandbox Code Playgroud)
但执行 Kustomize Build 时出现以下错误
Error: remove operation does not apply: doc is missing path: "/metadata/annotations/nginx.ingress.kubernetes.io/auth-snippet": missing value
Run Code Online (Sandbox Code Playgroud)
该路径/metadata/annotations/nginx.ingress.kubernetes.io/auth-snippet不起作用,因为/JSONPath 使用该字符来分隔文档中的元素;JSONPath 解析器无法知道/in 的含义与innginx.ingress.kubernetes.io/auth-snippet不同。//metadata/annotations
JSON Pointer RFC(这是用于指定补丁组件的语法path)告诉我们需要/使用~1. 如果我们有以下内容ingress.yaml:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress
annotations:
example-annotation: foo
nginx.ingress.kubernetes.io/auth-snippet: test
Run Code Online (Sandbox Code Playgroud)
并像这样写我们kustomization.yaml的:
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ingress.yaml
patches:
- target:
kind: Ingress
name: ingress
patch: |
- op: remove
path: /metadata/annotations/nginx.ingress.kubernetes.io~1auth-snippet
Run Code Online (Sandbox Code Playgroud)
那么输出kustomize build就是:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
example-annotation: foo
name: ingress
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1447 次 |
| 最近记录: |