作者:牛妈是007 | 来源:互联网 | 2022-10-30 19:40
我想编写一个变异的webhook,将默认的入口类添加到所有未显式提供的入口对象。
根据示例,我发现我需要为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
,但是不幸的是,这对我的网络挂钩没有帮助。
1> 小智..:
更换正斜杠(/
中)kubernetes.io/ingress.class
与~1
。
您的命令应如下所示:
$ kubectl patch ingress mying --type='json' -p='[{"op": "add", "path": "/metadata/annotations/kubernetes.io~1ingress.class", "value":"nginx"}]'
参考:RFC 6901 https://tools.ietf.org/html/rfc6901#section-3