В чем разница между патчами и патчами Json6902 в Kustomize

Основываясь на прочитанных мною документах, существует 3 метода исправления:

  • патчи
  • патчиStrategicMerge
  • патчиJson6902.

Разница между patchesStrategicMerge и patchesJson6902 очевидна. patchesStrategicMerge требуется дублирующая структура ресурса kubernetes для идентификации базового ресурса, который исправляется, за которым следует измененная часть спецификации для обозначения того, что будет изменено (или удалено).

patchesJson6902 определяет атрибут 'target', используемый для указания ресурса kubernetes, с атрибутом 'path', который указывает, какой атрибут в ресурсе будет изменен, добавлен или удален.

Однако мне непонятна разница между patches и patchesJson6902. Они кажутся очень похожими по своей природе. Оба указывают «целевой» атрибут и операционные объекты, которые описывают, что изменяется.

Единственное различие, которое я заметил, состоит в том, что patches не требует атрибута «группа», в то время как patchesJson6902 требует; Причина этого неизвестна.

Так почему разница между ними? Как мне определить, какой из них использовать?


person Alex    schedule 26.08.2020    source источник


Ответы (1)


Объяснение этого находится здесь.

Подводя итог, patchJson6902 - это более старое ключевое слово, которое может соответствовать только одному ресурсу через target (без подстановочных знаков) и принимает только тип версии группы (GVK), пространство имен и имя.

Директива patches новее и принимает больше элементов (а также селектор аннотаций и селектор меток). Кроме того, пространство имен и имя могут быть регулярными выражениями. Целевой объект для patches может соответствовать более чем одному ресурсу, каждый из которых будет исправлен.

Кроме того, с patches он попытается проанализировать файлы патчей как патч Json6902, и если это не сработает, он вернется к попытке патча как стратегическому слиянию.

В целом кажется, что patches должен работать универсально для новых проектов.

person Raman    schedule 26.08.2020