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

Ale*_*lex 13 patch json-patch kubernetes kustomize

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

  • 补丁
  • 补丁策略合并
  • 补丁Json6902。

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

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

但是,什么是我不明白之间的差别patchespatchesJson6902。它们在性质上似乎非常相似。两者都指定了一个“目标”属性和描述被修改内容的操作对象。

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

那么为什么两者之间存在差异呢?我如何确定使用哪一个?

Ram*_*man 16

对此的解释是here

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

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

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

总体而言,似乎patches应该对新项目非常普遍。

这些关键词的上游文档:

  • “patchesStrategicMerge”怎么样? (3认同)