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