Kustomize中的补丁与补丁Json6902之间有什么区别

时间:2020-08-26 19:33:29

标签: kubernetes patch json-patch kustomize

根据我阅读的文档,有3种修补方法:patch,patchStrategicMerge,patchJson6902。

patchStrategicMerge和patchJson6902之间的区别很明显。 “ patchesStrategicMerge”需要使用kubernetes资源的重复结构来标识要打补丁的基础资源,然后在规范的修改部分中指出要更改(或删除)的内容。

'patchesJson6902'定义了一个'target'属性,该属性用于指定kubernetes资源,而'path'属性则指定该资源中的哪个属性被修改,添加或删除。

但是,我不清楚“ patches”和“ patchesJson6902”之间的区别。它们在性质上似乎非常相似。两者都指定了“目标”属性和用于描述要修改内容的操作对象。

我注意到的唯一区别是,补丁程序不需要patchsJson6902的group属性;原因不明。

那么为什么两者之间有区别?如何确定要使用哪个?

1 个答案:

答案 0 :(得分:1)

对此的解释是here

总而言之,patchJson6902是一个较旧的关键字,只能通过target匹配一个资源(没有通配符),并且仅接受Gvk,名称空间和名称。

patches指令较新,并且可以接受更多元素(注释选择器和标签选择器)。另外,名称空间和名称可以是正则表达式。 patches的目标可以匹配多个资源,所有资源都将被修补。

此外,使用patches时,它将尝试将补丁文件解析为Json6902补丁,如果不起作用,它将退回尝试作为战略合并尝试补丁。

总体而言,似乎patches对于新项目应该相当普遍。