Ответ 1
Хельм - это то, что многие люди используют для этого. Это позволяет вам создавать шаблоны для дескрипторов kubernetes и передавать параметры для генерации дескрипторов из шаблонов.
Существуют и другие инструменты, которые можно использовать для создания вариантов дескрипторов развертывания kubernetes путем введения параметров в шаблоны. Ansible также популярен. Но Хелм тесно связан с CNCF и сообществом Kubernetes, и там есть хороший выбор официальных карт.
РЕДАКТИРОВАТЬ: Если цель состоит в том, чтобы включить различные развертывания (например, для dev и prod) с использованием одного образа докера, то это, вероятно, лучше всего обрабатывать с одной диаграммой. Вы можете создать разные файлы значений для каждого развертывания и предоставить выбранный файл значений для установки helm с параметром --values
. Если есть части диаграммы, которые применимы только иногда, их можно обернуть, if
условия для их включения/выключения.
Что касается конкретно вопроса наследования, в документе helm есть пример того, как взять другую диаграмму в качестве родителя/зависимости и переопределить ее значения, и я ранее создал диаграмму, которую вы можете увидеть в github, которая включает несколько других диаграмм и переопределяет части все они через values.yml. Он также разделяет некоторые конфигурации между включенными диаграммами с глобальными переменными. Если вы хотите использовать родительский элемент для уменьшения дублирования, а не для объединения нескольких приложений, то можно создать диаграмму-обертку, но может оказаться, что лучше просто скопировать конфигурацию.
РЕДАКТИРОВАТЬ (180119): альтернатива Kustomize может скоро стать доступной в kubectl