2015-12-22 2 views
0

У меня есть ряд устаревших сервисов, которые читают свои файлы конфигурации с диска и отдельный демон, который обновляет эти файлы при изменении в zookeeper (несколько схожий с confd).Файлы конфигурации «Injecting» при запуске

Для большинства этих типов конфигурации мы хотели бы перейти на более переменную окружения, такую ​​как модель, где конфигурация фиксирована для времени жизни модуля. Однако нам нужно сохранить внешние файлы конфигурации как источник правды, поскольку службы переходят от старой модели к кубернетам. Мне любопытно, есть ли чистый способ сделать это в кубернетах.

упрощенная версия текущей модели, которую мы проводим это:

  1. Создать Docker изображение, которое имеет утилиту для извлечения конфигурационных файлов и их записи на диск из них. Затем записывает файл/donepath/done.
  2. Основное изображение ждет, пока файл не будет выполнен. Затем позволяет запустить нормальный запуск службы.
  3. Используйте пустые источники громкости и громкости, чтобы получить конфиг из вспомогательного изображения в основное изображение.

Я продолжаю видеть примеры этой проблемы, когда мне «нужно просто» получить пару файлов в изображение докера при запуске (чтобы разрешить per-env/canary/etc variance) и запустить весь этот механизм каждый раз, кажется, бремя бросить на разработчиков. Мне любопытно, есть ли более упрощенный способ сделать это уже в кубернетах или на горизонте.

+0

Этот [комментарий] (https://github.com/kubernetes/kubernetes/issues/2068#issuecomment-61648087) выглядит полезным началом, но прошло более года назад, и похоже, что нет были какие-либо обновления. –

ответ

0

Вы можете использовать команду ADD в своем файле Docker. Он используется как ADD File/path/in/docker. Это позволит вам быстро добавить полный файл в ваш контейнер. Вы должны иметь файл, который хотите добавить к изображению в том же каталоге, что и файл Docker, когда вы создаете контейнер. Вы также можете добавить tar-файл таким образом, который будет расширен во время сборки.

Другой вариант - команда ENV в вашем файле Docker. Это добавляет данные в качестве переменной среды.

Смежные вопросы