Добавляем конфиг CI/CD в Gitlab
В этой части добавляем последний шаг - конфиг для Gitlab CI/CD для сборки, тестирования и деплоя приложения в кластер k8s. Деплой производится с использованием утилиты Helm v3.
Gitlab CI/CD описывается в файле .gitlab-ci.yml в формате yaml. По умолчанию Gitlab ищет этот файл в корне проекта, путь до файла может быть переопределен в настройках проекта.
1. Подготавливаем CI/CD
Для этого скопируем заранее подготовленный шаблон .gitlab-ci.yml в проект xpaste, выполнив команду:
cp ~/slurm/practice/14.ci-cd/1.2.deploy/.gitlab-ci.yml ~/xpaste/
2. Адрес Kubernetes API
В файле .gitlab-ci.yml указан IP-адрес нашего общего kube api.
3. Настройка базы данных
Сервер базы данных общий для всех студентов, каждому студенту выделена своя база данных. Логин и пароль для доступа к БД мы указывали при создании секрета, а в параметрах чарта укажен название БД.
Для этого откроем values.yaml:
vi ~/xpaste/.helm/values.yaml
В начале файла необходимо заменить строку <Ваш номер логина> - меняем на свой номер студента!!:
- DB_NAME: <номер своего логина>_xpaste
+ DB_NAME: s000001_xpaste
3. Настройка ingress
Доступ к приложению будет осуществляться через ingress. Ingress устанавливается вместе с приложением, но для его корректной работы необходимо прописать ему адрес.
Для этого откроем values.yaml:
vi ~/xpaste/.helm/values.yaml
В конце файла необходимо заменить строку <Ваш номер логина> - меняем на свой номер студента!!:
- host: xpaste.s<Ваш номер логина>.k8s.slurm.io
+ host: xpaste.s000001.k8s.slurm.io
Сохраняем все изменения и пушим их в gitlab. Для этого необходимо выполнить команды:
cd ~/xpaste
git add .
git commit -am "Add CI/CD config"
git push
4. Переключаемся в namespace приложения
До сих пор мы работали в неймспейсе кластера Kubernetes с названием s<номер_студента>
Но наше приложение xpaste устанавливается в другой namespace s<номер_студента>-xpaste-production.
Для удобства работы, чтобы не набирать каждый раз опцию --namespace изменим namespace, который kubectl использует по умолчанию:
kubectl config set-context --current --namespace=s<номер_студента>-xpaste-production
5. Проверка результата
Для проверки результата необходимо перейти в Gitlab в раздел ci/cd -> pipelines форка проекта xpaste.
Можно воспользоваться прямой ссылкой: https://gitlab.slurm.io/sXXXXXX/xpaste/pipelines. sXXXXXX необходимо заменить на номер своего студента.
В результате все job должны закончиться без ошибок.
6.Открываем приложение в браузере
В браузере открываем URL: http://xpaste.s<Ваш номер логина>.k8s.slurm.io. <Ваш номер логина> необходимо заменить на номер своего студента. Открывать нужно в режиме инкогнито.
Если вы увидели 503 ошибку, значит практику выполнили верно.
7. Самостоятельная работа
Самостоятельная работа продолжительностью 5 минут. Во время самостоятельной работы надо попробовать ответить на вопросы:
- Почему деплой закончился успешно, а приложение недоступно?
- Что надо исправить в CI/CD ?
- Что надо исправить в приложении или его настройках ?
Ошибку пока исправлять не надо.
8. Доработка CI/CD
- Для корректировки поведения CI/CD необходимо внести изменения в ci/cd, описанные в snippet
Удаляем установленный релиз helm чарта:
helm delete s<номер_студента>-xpaste
Далее пушим изменения и смотрим за процессом CI/CD.
После внесения изменений процесс деплоя должен завершиться с ошибкой.