Как настроить деплой мелких проектов через Gitlab CI/CD + Kubernates?
Имеется 7 личных проектов, все написаны на PHP(Yii2 framework), работают как обычно, на сервере DigitalOcean настроены PHP, MySQL, Nginx, проблема в постоянном обновлении каждого проекта, требуется заходить на сервер, пулить изменения из репозитория и производить все действия деплоя вручную.
Стал разбираться как настроить автоматический деплой, почитал про Jenkins, вроде подходит, пошёл дальше почитал про Kubernates и мне очень понравилось прочитанное, тем более будет полезно изучить k8s не только для хобби-проектов, но и для работы над серьёзными штуками.
И вот никак не могу сложить в голове схему как правильно перевести мои 7 проектов в кубы и чтобы по одному нажатию на кнопку деплоя в gitlab происходило требуемое обновление.
Когда изучал kubernates, то во всех примерах видел Docker образы, я никогда не создавал и не пушил их в репозиторий докера, и это выбивается из моей концепции "Нажал кнопку и всё само пошло".
Вот локально у меня так происходит работа:
- Настраиваю
docker-compose.ymlв корне каждого проекта под мои нужды. - Запускаю
docker-compose up -d. - Захожу
docker-compose exec php /bin/bash, применяю миграции БД, обновляю php composer и всё готово к работе.
Когда же проходил туториал по kubernates, то там всегда какие-то образы докера из какого-то докеровского репозитория брались, откуда зачем как почему?
Я бы хотел такую схему построить:
- На сервере DigitalOcean развёрнут Kubernates, как я понял можно и один сервер использовать, и если нагрузка будет высокая, то сделать горизонтальное масштабирование.
- В каждом из 7 проектов будет файл
.gitlab-ci.ymlгде будет прописано, что kubernates для конкретно этого проекта должен перезапуститьdocker-compose down && docker-compose build && docker-compose up -dкак я делаю это локально, затемdocker-compose exec <migrations> && docker-compose exec php composer install
Я вроде понимаю, что нужно больше про докер-образы прочитать, но как-то у меня не укладывается как это будет работать. Неужели нельзя заставить kubernates просто создавать образы из docker-compose.yml?
Главный посыл вот в чём: я не хочу заходить куда-то на сервер и что-то прописывать, не хочу отправлять образы в репозиторий - абсолютно всё должно храниться в конфигах.
Извините если я спрашиваю некорректные вещи, только начинаю разбираться.