【发布时间】:2020-04-30 21:58:23
【问题描述】:
我想写一个mutating webhook 为所有没有明确提供的入口对象添加一个默认入口类。
根据examples,我发现我需要为 webhook 提供适当的 json 补丁才能返回。
我首先使用 kubectl 尝试了我的补丁:
$ kubectl patch ingress mying --type='json' -p='[{"op": "add", "path": "/metadata/annotations/key", "value":"value"}]'
The "" is invalid
当还没有注释元素时,这似乎不起作用。
$ kubectl patch ingress mying --type='json' -p='[{"op": "add", "path": "/metadata/annotations", "value":{"key":"value"}}]'
ingress.extensions/kafka-monitoring-topics-ui patched
创建完整的注释元素可以正常工作,但在我的情况下,我需要一个包含斜杠的 kubernetes.io/ingress.class 键。
kubectl patch ingress mying --type='json' -p='[{"op": "add", "path": "/metadata/annotations", "value":{"kubernetes.io/ingress.class":"value"}}]'
ingress.extensions/kafka-monitoring-topics-ui patched
这在创建注释对象时可以正常工作。但是,如果已经有一些注释,而我只想添加一个,那么添加一个似乎是不可能的。
简单地使用[{"op": "add", "path": "/metadata/annotations", "value":{"kubernetes.io/ingress.class":"value"}}] 会删除所有现有的注释,而'[{"op": "add", "path": "/metadata/annotations/kubernetes.io/ingress.class", "value": "value"}] 之类的东西由于包含斜线而不起作用。
长话短说:使用适当的补丁简单地添加入口类的正确方法是什么?
PS:是的,我知道 kubectl annotate,但不幸的是,这对我的 webhook 没有帮助。
【问题讨论】:
标签: go kubernetes webhooks patch