Объединение нескольких настроек 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
трансформер в ваших оверлеях, чтобы избежать коллизий и давать более осмысленные имена вашим ресурсам.