根据我阅读的文档,有3种修补方法:patch,patchStrategicMerge,patchJson6902。
patchStrategicMerge和patchJson6902之间的区别很明显。 “ patchesStrategicMerge”需要使用kubernetes资源的重复结构来标识要打补丁的基础资源,然后在规范的修改部分中指出要更改(或删除)的内容。
'patchesJson6902'定义了一个'target'属性,该属性用于指定kubernetes资源,而'path'属性则指定该资源中的哪个属性被修改,添加或删除。
但是,我不清楚“ patches”和“ patchesJson6902”之间的区别。它们在性质上似乎非常相似。两者都指定了“目标”属性和用于描述要修改内容的操作对象。
我注意到的唯一区别是,补丁程序不需要patchsJson6902的group
属性;原因不明。
那么为什么两者之间有区别?如何确定要使用哪个?
答案 0 :(得分:1)
对此的解释是here。
总而言之,patchJson6902
是一个较旧的关键字,只能通过target
匹配一个资源(没有通配符),并且仅接受Gvk,名称空间和名称。
patches
指令较新,并且可以接受更多元素(注释选择器和标签选择器)。另外,名称空间和名称可以是正则表达式。 patches
的目标可以匹配多个资源,所有资源都将被修补。
此外,使用patches
时,它将尝试将补丁文件解析为Json6902补丁,如果不起作用,它将退回尝试作为战略合并尝试补丁。
总体而言,似乎patches
对于新项目应该相当普遍。