Как настроить деплой мелких проектов через Gitlab CI/CD + Kubernates?

Имеется 7 личных проектов, все написаны на PHP(Yii2 framework), работают как обычно, на сервере DigitalOcean настроены PHP, MySQL, Nginx, проблема в постоянном обновлении каждого проекта, требуется заходить на сервер, пулить изменения из репозитория и производить все действия деплоя вручную.

Стал разбираться как настроить автоматический деплой, почитал про Jenkins, вроде подходит, пошёл дальше почитал про Kubernates и мне очень понравилось прочитанное, тем более будет полезно изучить k8s не только для хобби-проектов, но и для работы над серьёзными штуками.

И вот никак не могу сложить в голове схему как правильно перевести мои 7 проектов в кубы и чтобы по одному нажатию на кнопку деплоя в gitlab происходило требуемое обновление.

Когда изучал kubernates, то во всех примерах видел Docker образы, я никогда не создавал и не пушил их в репозиторий докера, и это выбивается из моей концепции "Нажал кнопку и всё само пошло".

Вот локально у меня так происходит работа:

  1. Настраиваю docker-compose.yml в корне каждого проекта под мои нужды.
  2. Запускаю docker-compose up -d.
  3. Захожу docker-compose exec php /bin/bash, применяю миграции БД, обновляю php composer и всё готово к работе.

Когда же проходил туториал по kubernates, то там всегда какие-то образы докера из какого-то докеровского репозитория брались, откуда зачем как почему?

Я бы хотел такую схему построить:

  1. На сервере DigitalOcean развёрнут Kubernates, как я понял можно и один сервер использовать, и если нагрузка будет высокая, то сделать горизонтальное масштабирование.
  2. В каждом из 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?

Главный посыл вот в чём: я не хочу заходить куда-то на сервер и что-то прописывать, не хочу отправлять образы в репозиторий - абсолютно всё должно храниться в конфигах.

Извините если я спрашиваю некорректные вещи, только начинаю разбираться.


Ответы (0 шт):