Объединение нескольких настроек k8s в одну

В Kubernetes у меня есть базовый пакет kustomize и два патча к нему, каждый из которых регулирует разные аспекты базы - один для большого развертывания, а другой - для использования устаревшего образа, а не текущего. Есть ли способ создать "комбинированный" патч - тот, который содержит оба изменения, без копирования большого и устаревшего содержимого патча?

- base/
- large-deployment-patch/
- legacy-image-patch/

Когда я пытался просто использовать оба патча в качестве баз в комбинированном патче, я получаю такую ​​ошибку:

Error: ../legacy: id '"~G_v1_ConfigMap|~X|~P|pg-database|~S"' already used

1 ответ

Как отметил @Jamie в своем комментарии, если какой-либо из двух «патчей» содержит kustomization.yamlфайл, который включает ваш base/каталог в качестве ресурса, это будет оверлей. Каждый оверлей создает копию всех ресурсов в вашей базе и модифицирует их.

Если ваша база создает вызываемый и ни один из ваших оверлеев не изменяет имя этого ресурса, вы получите два ConfigMapс называется pg-database.

Подводя итог: каждый оверлей создает копию ресурсов, и у вас не может быть двух одинаковых ресурсов. kindс тем же nameВ то же самое namespace.

Обычной практикой является добавление namePrefixили же nameSuffixтрансформер в ваших оверлеях, чтобы избежать коллизий и давать более осмысленные имена вашим ресурсам.

Другие вопросы по тегам