Суть задачи: есть N машин с докером, есть приложение на python в контейнере, которое конфигурируется через yml файл. Есть некоторая админка, отдельная от приложения.
На данный момент при необходимости поменять yml конфиг это делается вручную. Идея: генерировать yml в админке/там же хранить, оттуда же перезапускать контейнеры/добавлять новые контейнеры (образ один и тот же используется, обновлять версию образа из админки не нужно). Простой способ решения: ходить по ssh, копировать конфиг/docker-compose.yml, выполнять docker compose restart.
Можно ли это сделать через какой-то оркестратор простым образом? k8s точно тащить ради этого не надо. С docker swarm опыта не имел и знаю, что он уже не развивается. Слышал про rancher/nomad, но опять же, с ними опыта не было. Знаю только, что nomad, судя по документации, очень легко развернуть (один агент на ноду).
Добрый день.
Могу рассказать, как это решается на Java + Spring.
Конфигурацию микросервисов можно сделать централизованной. Для этого необходимо развернуть amqp сервис. Например, rabbitmq.
Конфигурация при этом выносится в отдельный репозиторий и хранится там.
Далее каждый из микросервисов при старте знает, что ему нужно обратиться к микросервису, который отвечает за конфигурации. Также они подписываются на событие к rabbitmq.
Когда в гит репозиторий пушатся конфиги, то конфиг сервер кидает их в rabbitmq, а они в свою очередь забираются микросервисом и проводится динамическое обновление конфигов.
Скорее всего, на python есть некий похожий сервис для этих целей.
Тут другая система, а именно то, что в конфиге приложения желательно иметь возможность по кнопке в админке сменить какую-то опцию. Через репозиторий уже раздаются конфиги, но в связи с ростом их кол-ва это становится сильно неудобно. Для этого нужно дергать разработчиков, запускать деплой, а конечный пользователь не может этого выполнить относительно простым способом.