#kubernetes #kustomize
Вопрос:
У меня есть три прикладных сервиса кластеров баз данных PostgreSQL в Kubernetes:
- кластер-тип-1
- кластер-тип-2
- кластер-тип-3
что мне нужно развернуть с помощью Kustomize в трех разных средах:
- разработка
- постановка
- производство
Множество примеров Kustomize показывают, как подходить к развертыванию приложения в различных средах. Теперь предположим, что у меня есть один YAML для приложения и один для настройки:
- приложение.yaml
- конфигурация.yaml
Типичный подход в Kustomize заключается в создании базы для одной среды, а затем дельты в наложении для каждой среды:
production (base)
|_ kustomize.yaml
|_ application.yaml
|_ config.yaml
|_ staging
| |_ kustomize.yaml (with delta patches)
|_ dev
|_ kustomize.yaml (with delta patches)
Теперь мои два файла YAML довольно похожи не только по среде, но и по типу кластера. Проблема в том, что я не знаю наилучшего подхода к управлению вторым измерением развертывания (тип кластера).
Один из подходов может заключаться в следующем наложении:
- dev-кластер-тип-1
- dev-кластер-тип-2
- dev-кластер-тип-3
- этап-кластер-тип-1
- этап-кластер-тип-2
- этап-кластер-тип-3
- производство-кластер-тип-2
- производство-кластер-тип-3
таким образом, в основном двухмерная матрица развертывания 3×3 становится массивом из девяти элементов. Кто-нибудь знает, существует ли лучший подход?
PS Я знаю, что существуют альтернативы кустомизации, такие как Spruce, которые позволяют использовать шаблоны с переменными, а затем для каждого элемента матрицы просто использовать соответствующие переменные. Тем не менее, я хотел бы знать, как лучше всего работать с Kustomize без слишком большого дублирования кода.