Kustomize 中的 patches 与 patchesJson6902 有什么区别

What is the difference between patches vs patchesJson6902 in Kustomize

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

patchesStrategicMergepatchesJson6902的区别很明显。 patchesStrategicMerge 需要 kubernetes 资源的重复结构来标识正在修补的基础资源,然后是规范的修改部分以表示更改(或删除)的内容。

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

但是,我不清楚patchespatchesJson6902之间的区别。它们在本质上似乎非常相似。两者都指定了一个 'target' 属性和描述修改内容的操作对象。

我注意到的唯一区别是 patches 不需要 'group' 属性,而 patchesJson6902 需要;原因不明。

那么为什么两者有区别呢?我如何确定使用哪一个?

对此的解释是here

总而言之,patchJson6902 是一个较旧的关键字,它只能通过 target(无通配符)匹配一个资源,并且只接受 Group-version-kind (GVK)、名称空间和名称.

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

此外,对于 patches,它会尝试将补丁文件解析为 Json6902 补丁,如果这不起作用,它将返回尝试将补丁作为战略合并。因此,在许多情况下 patches 也可以避免使用 patchesStrategicMerge 的需要。

总的来说,似乎 patches 应该对新项目非常普遍。

这些关键词的上游文档: