Привет!
Вопрос архитектурный больше, ну и совета спросить.
Дано: бэк на python (два образа уже подготовил, app и rabbitmq consumer). И фронт на js.
Цель: сделать генератор сайтов, т.е. три контейнера с новым конфигом == новый сайт.
Создавать это должен менеджер, у которого нет технических знаний. Т.е. зашёл на простую админку, ввел некоторые данные и нажал "создать сайт".
И уже под капотом понеслось:
1. Создалась отдельная БД
2. Сгенерировался конфиг с доступами и данными, которые ввел менеджер
3. Создались контейнеры бэка и фронта с конфигами.
4. Прописались на nginx
Я правильно понимаю, что кроме как писать свой велосипед, других решений нет?
У меня пока два варианта:
1. Создать Jenkins(ну или любую другую ci) джобу. Которая будет эти шаги дергать + простой ui для менеджера (придумаю позже на чем проще). Который будет дергать эти джобки.
2. Полностью свой велосипед, на чем-нибудь вроде flask.
Ну и сейчас выбираю между swarm / k8s. Кластер будем свой поднимать.
Посмотрел бегло тут: [тут должна быть ссылка на хабр] все решения больше для администрирования (какое-то точно прикрутим, чтобы наблюдать за этим зоопарком).
Итого:
1. Не изобретаю ли велосипед? И две описанные реализации -- это единственное возможное?
2. В контексте задачи для генерации сайтов, что лучше подойдет: swarm или k8s? Посмотрел, что есть два пакета питоновских: docker и kubernetes. В целом с хорошей докой (На первый взгляд).
Цель в использовании swarm/k8s простая. Если вдруг (почти не реальная ситуация у нас, малые нагрузки), где-то бэк или фронт завалился, просто докинуть реплику в ручном режиме.
В общем, кто что посоветует. Сразу прошу прощения, если формулировки где-то странные, новая тема, неделю только разбираюсь. Пока только все в образы запихнул и кластер swarm сделал, где смог пока с захардкоженными конфигами запуститься.
И вот подумалось, а не изобретаю ли колесо?
Всем заранее спасибо за критику и советы.
Возник еще вопрос. Пока вожусь со swarm, т.к. образы свои. То для того чтобы сервис стартовал на всех нодах, пришлось поднять свой сервис registry.
И пока получается архитектура такая:
3 ноды swarm, на которых будет registry и сервисы 1...n (фронт / бэк).
Не очень мне нравится что registry будет на тех же нодах что и сервисы, но я пробовал создавать репозиторий просто как отдельный докер контейнер и указывать его при создании сервиса. В таком случае на основной ноде (там же где и контейнер) сервис создается, а вот остальные ноды не видят image.
Т. е. в идеале, я хочу чтобы вся управляющая инфраструктура была на отдельной тачке (т.е. там будет сам репозиторий с образами, скорее всего какой-то CI, может что еще).
Это реально? Надо просто как-то сетку хитро настроить, чтобы все ноды видели репозиторий, который будет на другой тачке?