Как передать автономный контейнер MySQL в качестве зависимости от службы в kubernetes-helm? - PullRequest
0 голосов
/ 19 июня 2019

У меня есть сервис, для которого была сгенерирована диаграмма управления.Эта диаграмма рулевого управления включает в себя контейнеры zookeeper и mysql, с которыми взаимодействует служба.Теперь я хочу создать рулевую диаграмму, которая выделяет платформу услуг, одной из которых является вышеуказанная служба.Когда я пытаюсь сделать это, я использую теги, чтобы отключить зависимости вышеуказанного сервиса, которые перечислены в диаграмме управления, например:

tags:
  service-zookeeper: false
  service-mysql: false

Теперь у меня есть несколько контейнеров инициализации (liquibase), которые заполняютЭкземпляры mysql создаются через зависимости при каждом развертывании службы.Мне нужно передать отдельный, автономный контейнер mysql как экземпляр mysql, который должен заполнить этот контейнер init.Аналогичная работа с chroots для zookeeper существует.Проблема, в которой мне нужна помощь, заключается в том, что я не могу найти способ передать отдельный контейнер mysql в качестве контейнера, который должен быть заполнен init-контейнером liquibase первого сервиса.Есть ли способ сделать это?Любая помощь / идеи приветствуются.

1 Ответ

2 голосов
/ 19 июня 2019

Для этого вам просто необходимы имя хоста и учетные данные службы MySQL.

Помните, что шаблоны Helm YAML могут использовать все на текстовом / шаблонном языке Go .Это включает в себя условные выражения {{ if ... }}...{{ else }}...{{ end }}, среди прочих структур управления, а также большинство вспомогательных функций в библиотеке Sprig .Это может стать многословным, но аккуратно решает этот класс проблем.

Для имени хоста один из подходов состоит в том, чтобы утверждать одно имя службы, независимо от того, установлено ли оно самой диаграммой или диаграммой обертки.(Если диаграмма верхнего уровня устанавливает MySQL, а также устанавливает ваш сервис, они будут иметь то же имя выпуска Helm и то же сгенерированное имя хоста, независимо от того, является ли MySQL прямой зависимостью вашей диаграммы.)

- name: MYSQL_HOST
  value: {{ printf "%s-mysql.%s.svc.cluster.local" .Release.Name .Release.Namespace | quote }}

Другой вариант - передать его в конфигурации values.yaml, опционально. Sprig default функция полезна здесь.

- name: MYSQL_HOST
  value: {{ .Values.mysqlHostname | default (printf "%s-mysql.%s.svc.cluster.local" .Release.Name .Release.Namespace) | quote }}

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

...