#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
?