21

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

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

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

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

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

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

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

4

1 回答 1

20

对此的解释是here

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

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

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

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

这些关键词的上游文档:

于 2020-08-26T20:39:44.153 回答