В чем разница между исправлениями и patchesJson6902 в Kustomize

#kubernetes #patch #json-patch #kustomize

#kubernetes #исправление #json-patch #настройка

Вопрос:

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

  • исправления
  • patchesStrategicMerge
  • patchesJson6902.

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

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

Однако, что мне не ясно, так это разница между patches и patchesJson6902 . Они кажутся очень похожими по своей природе. Оба указывают атрибут ‘target’ и объекты operation, которые описывают, что будет изменено.

Единственное различие, которое я заметил, заключается в том, что patches не требует атрибута ‘group’, в то время как patchesJson6902 требует; Причина этого неизвестна.

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

Ответ №1:

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

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

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

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

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

Исходная документация для этих ключевых слов:

Комментарии:

1. Как насчет patchesStrategicMerge ?