Какова лучшая практика для переопределения значений в подшармах helm для каждого кластера? - PullRequest
0 голосов
/ 08 января 2019

Во-первых, небольшой контекст: у меня есть 4 кластера Kubernetes, по одному для каждой среды (разработка, подготовка, тестирование, разработка). Каждый кластер имеет свой собственный файл values.yaml со специфичной для env конфигурацией всех схем рулевого управления, которые мы написали.

Итак, когда наш конвейер CD развертывает mychart в кластере develop, он, по сути, выполняет следующее:

helm install -f base-values.yaml -f develop-values.yaml ./mychart.tgz

Теперь давайте предположим, что mychart имеет файл requirements.yaml, в котором диаграмма mongodb указана в качестве зависимости подкарты. Ссылки на таблицу Mongodb, например, .Values.mongodbRootPassword. Когда mychart включено в качестве под-диаграммы, я могу установить .Values.mongodb.mongodbRootPassword в values.yaml по умолчанию *1019*, чтобы изменить это значение.

Моя проблема в том, что, учитывая мой текущий конвейер CD, если я установлю .Values.mongodb.mongodbRootPassword в develop-values.yaml, он будет принят для всех экземпляров mongodb, которые развернуты в кластере develop, а не только mychart s.

Итак, мои вопросы:

  • с использованием файлов values.yaml для каждой среды, как мне установить пароль root для mychart mongodb в одном из кластерных values.yaml файлов?
  • это вообще возможно? Или мой нынешний подход к CD (файлы значений для среды) является анти-паттерном?
  • если это невозможно или является анти-паттерном, как бы вы настроили значения отдельных диаграмм и подкарт руля для каждой среды?

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019

Я создал именованный шаблон (в _helpers.tpl), который объединил набор значений по умолчанию, определенных в values.yaml, с набором значений env, определенных в их собственном файле. Это позволяет мне установить более 20 значений по умолчанию, а затем переопределить их с помощью файла env, не устанавливая их как часть команды cli. Я хотел избежать использования cli для переопределения значений, потому что это усложняется и не обеспечивает отслеживание (т.е. мои специфичные для env файлы находятся в git).

0 голосов
/ 09 января 2019
  • с использованием файлов values.yaml для каждой среды, как мне установить пароль root для mychart mongodb в одном из кластерных values.yaml файлов?

Вы можете переопределить YAML-файлы с помощью опции --set из install

Пример:

helm install -f base-values.yaml -f develop-values.yaml --set someSection.someValue=1234 ./mychart.tgz

Затем вы можете установить командный вызов CI с настройками среды и иметь только один YAML.

  • это вообще возможно? Или мой нынешний подход к CD (файлы значений для среды) является анти-паттерном?

Нет, это особенность: -)

  • если это невозможно или является анти-паттерном, как бы вы настроили значения отдельных диаграмм и подкарт руля для каждой среды?

Было бы также хорошо. Возможно, если ваша инфраструктура быстро растет, и у вас много сред, приложений или чего-то еще, этим лучше управлять.

...