1

假设我有以下 CRD:

...
kind: SomeCRD
metadata:
  ownerReferences:
  - uid: aaa
    name: name-a
...

当我运行时kubectl apply -f some.yamlsome.yaml 如下

...
kind: SomeCRD
metadata:
  ownerReferences:
  - uid: bbb
    name: name-b
...

我希望将 ownerrefs 合并如下:

...
kind: SomeCRD
metadata:
  ownerReferences:
  - uid: aaa
    name: name-a
  - uid: bbb
    name: name-b
...

那可能吗?目前kubectl apply只会简单地将现有的 ownerReferences 替换为aaabbb同时它将合并 ownerReferencesaaabbb用于 Pod 等本机类型。

如果我理解正确,默认情况下 CRD 不支持战略合并,但从 1.16/1.17 开始,我们可以在 CRD 的架构中定义合并策略(k8s doc)。理想情况下,我们可以metadata.ownerReferences在 someCRD 的模式中定义合并策略,这样可以解决这里的问题,但metadata属于 apiserver,不能在 CRD 中重新定义。感觉就像metadata是陷入了某种不幸的状态,它是 k8s 原生类型,但在 CRD 中被视为非结构化字段。

有什么方法可以完成这项工作还是我错过了什么?

提前致谢!:)

4

0 回答 0