#kubernetes #kubernetes-custom-resources #merge-strategy
#kubernetes #kubernetes-пользовательские ресурсы #стратегия слияния
Вопрос:
Допустим, у меня есть следующий CRD:
...
kind: SomeCRD
metadata:
ownerReferences:
- uid: aaa
name: name-a
...
Когда я бегу kubectl apply -f some.yaml
куда-нибудь.yaml — это следующее
...
kind: SomeCRD
metadata:
ownerReferences:
- uid: bbb
name: name-b
...
Я бы хотел, чтобы ссылки владельца были объединены следующим образом:
...
kind: SomeCRD
metadata:
ownerReferences:
- uid: aaa
name: name-a
- uid: bbb
name: name-b
...
Возможно ли это? В настоящее kubectl apply
время просто заменил бы существующие ownerReferences aaa
на bbb
, в то время как он объединил бы ownerReferences aaa
и bbb
для собственных типов, таких как Pod.
Если я правильно понимаю, стратегическое слияние по умолчанию не поддерживается для CRDS, но, начиная с 1.16 / 1.17, мы можем определить стратегию слияния в схеме CRDS (документ k8s). В идеале мы могли бы определить стратегию слияния для metadata.ownerReferences
в схеме someCRD, и это решило бы проблему здесь, но metadata
принадлежит apiserver и не может быть переопределено в CRDs. Такое ощущение metadata
, что он застрял в каком-то неудачном состоянии, когда это собственный тип k8s, но обрабатывается как неструктурированное поле, когда оно находится в CRDs.
Есть какой-нибудь способ заставить это работать или я что-то упускаю?
Заранее спасибо! 🙂