"Внедрение" файлов конфигурации при запуске
У меня работает несколько устаревших сервисов, которые считывают свои файлы конфигурации с диска, и отдельный демон, который обновляет эти файлы по мере их изменения в zookeeper (что-то похожее на confd).
Для большинства этих типов конфигурации мы хотели бы перейти к более переменным среды, таким как модель, где конфигурация фиксирована на время жизни модуля. Однако нам нужно сохранить внешние файлы конфигурации в качестве источника правды, поскольку службы переходят от устаревшей модели к kubernetes. Мне любопытно, есть ли чистый способ сделать это в Куберне.
Упрощенная версия текущей модели, которую мы используем:
- Создайте образ докера, в котором есть утилита для извлечения файлов конфигурации и их записи на диск. Затем записывает файл / donepath / done.
- Основное изображение ждет, пока готовый файл не существует. Затем позволяет запустить нормальный сервис службы.
- Используйте пустую директорию тома и томов для монтирования, чтобы получить конф из вспомогательного изображения в основное изображение.
Я продолжаю видеть случаи этой проблемы, когда мне "просто" нужно получить пару файлов в образ докера при запуске (чтобы разрешить дисперсию per-env/canary/etc), и запуск всего этого механизма каждый раз кажется бременем бросить на разработчиков. Мне любопытно, есть ли более простой способ сделать это уже в Куберне или на горизонте.
1 ответ
Вы можете использовать команду ADD в вашем Dockerfile. Он используется как ADD File /path/in/docker. Это позволит вам быстро добавить полный файл в ваш контейнер. Вам нужно иметь файл, который вы хотите добавить к изображению, в том же каталоге, что и файл Docker, когда вы создаете контейнер. Таким образом, вы также можете добавить файл tar, который будет расширен во время сборки.
Другой вариант - команда ENV в вашем Dockerfile. Это добавляет данные в качестве переменной среды.