Суть такова, я ищу систему оркестрации, главными критериями которой являются:
Управление через файлы конфигурации, как в кубернетс, обновление без простоя и перезапуск при падении как в кубернетс, но при этом все это будет работать на одной машине, без кластера и кубернетс как бы излишен.
Собственно в этом и вопрос, есть что-то такое? А то систем миллион, не охото копать все, чтобы найти одну, надеюсь на совет тех, кто знает :-) А может можно и его использовать? В общем, хочу совета :)
В такой ситуации вам не нужна оркестрация. Берете ansible (управления конфигурацией) и деплоите. В докере есть свой супервизор, который поднимет сервис если он упадет.
Я же правильно понимаю, что система оркестрации это быстрый запуск нескольких связанных контейнеров? Тот же docker-compose ведь система оркестрации? Только совсем уж простой. Так почему ее не стоит использовать на одной машине?
GeneAYak, система оркестрации в первую очередь обеспечивает распределение сервисов по машинам и их отказоустойчивость.
> это быстрый запуск нескольких связанных контейнеров?
Быстрота не зависит от системы оркестрации. Так или иначе есть некоторый супервизор. Docker сам по себе супервизор, поэтому ему нужно лишь сказать что контейнер надо рестартить если он упал.
> Так почему ее не стоит использовать на одной машине?
В теории можете, но внутри этих систем распределенные базы данных (какой нибудь consul/etcd), различные диспетчера и тому подобное. Оверкил адский. Отладка сложнее, все схемы сложнее. Для обучения супер, но в остальном вы не получите от них тех плюсов ради которых они создавались. Для этого нужно хотя бы три машины.
Судя по Вашему описанию, Вам и в правду не нужен кластер.
через файлы конфигурации, как в кубернетс ... перезапуск при падении как в кубернетс
Это называется инфраструктура как код. Для простых задач достаточно элементарный bash скрипт (srv-up.sh & srv-down.sh, make file, ...) или docker-compose.
обновление без простоя
Для этого посмотрите связку docker+nginx+consul+consul-template. В интернете много статьей, примеров и т.д.
Работает так:
Есть сервис. nginx (srv-v.1 в конф.) -> srv-v.1
Выходит вторая версия продукта и строится образ srv-v.2 и доставляется на сервер
Запускаем образ srv-v.2 на сервере
Состояние сервера: nginx (srv-v.1 в конф.) -> srv-v.1
srv-v.2
consul обнаружит srv-v.2 в докере, что в свою очередь обновит конфигурацию nginx и сделает nginx reload (не перезагрузка)
Состояние сервера: nginx (srv-v.1, srv-v.2 в конф.) -> srv-v.1
\ ->srv-v.2
Останавливаем srv-v.1 или удаляем srv-v.1 со списка серверов в consul
consul обнаружит остановку srv-v.1 в докере, что в свою очередь обновит конфигурацию nginx и сделает nginx reload (не перезагрузка)
Состояние сервера: nginx (srv-v.2 в конф.) ->srv-v.2
Можно обновить запуском к примеру через bash скрипт: upgrade-srv.sh srv-v.1 srv-v.2
или то же через CI