登录
首页 >  Golang >  Go问答

增加Kubernetes注释的补丁创建

来源:stackoverflow

时间:2024-03-15 10:36:25 420浏览 收藏

积累知识,胜过积蓄金银!毕竟在Golang开发的过程中,会遇到各种各样的问题,往往都是一些细节知识点还没有掌握好而导致的,因此基础知识点的积累是很重要的。下面本文《增加Kubernetes注释的补丁创建》,就带大家讲解一下知识点,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~

问题内容

我想编写一个变异 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,但不幸的是这对我的 webhook 没有帮助。


解决方案


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://www.rfc-editor.org/rfc/rfc6901#section-3

对我来说更容易的是 annotate 而不是 patch

kubectl annotate ingress mying kubernetes.io/ingress.class=value

如果您想在应用更改之前对其进行测试,请添加 --dry-run -o yaml 标志。

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《增加Kubernetes注释的补丁创建》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>