Существует ли концепция наследования для развертываний в Kubernetes?

Есть ли способ создать дерево наследования для развертываний в Kubernetes? У меня есть ряд развертываний, которые похожи, но не идентичны. У них много разных вариаций, но не все. Все они используют одно и то же изображение.

Например, у меня есть развертывание dev, которое настроено почти идентично производственному развертыванию, но имеет переменные env, указывающие на другую базу данных базы данных. У меня есть развертывание сельдерея, которое настроено так же, как и производственное развертывание, однако оно имеет другую команду запуска.

2 ответа

Хельм - это то, что многие люди используют для этого. Это позволит вам создавать шаблоны для дескрипторов kubernetes и передавать параметры для генерации дескрипторов из шаблонов.

Существуют и другие инструменты, которые можно использовать для создания вариантов дескрипторов развертывания kubernetes путем введения параметров в шаблоны. Ansible также популярен. Но Хелм тесно связан с CNCF и сообществом Kubernetes, и есть хороший выбор официальных диаграмм.

РЕДАКТИРОВАТЬ: если цель состоит в том, чтобы включить различные развертывания (например, для dev и prod) с использованием одного образа докера, то это, вероятно, лучше всего обрабатывать с одной диаграммой. Вы можете создать разные файлы значений для каждого развертывания и предоставить выбранный файл значений для установки helm с помощью --values параметр. Если есть части диаграммы, которые применимы только иногда, их можно обернуть if условия их включения / выключения.

Что касается конкретно вопроса наследования, в документе helm есть пример того, как взять другую диаграмму в качестве родителя / зависимости и переопределить ее значения, и я ранее создал диаграмму, которую вы можете увидеть в github, которая включает в себя несколько других диаграмм и переопределяет части все они через values.yml. Он также разделяет некоторые конфигурации между включенными диаграммами с глобальными переменными. Если вы хотите использовать родительский элемент для уменьшения дублирования, а не для объединения нескольких приложений, то можно создать диаграмму-обертку, но может оказаться, что лучше просто скопировать конфигурацию.

Вы также можете проверить Kustomize. Он предоставляет некоторую поддержку для написания ваших yaml-манифестов в иерархической форме, так что вам не нужно повторяться.

Другие вопросы по тегам