# Добавляем конфиг CI/CD в Gitlab В этой части добавляем последний шаг - конфиг для Gitlab CI/CD для сборки, тестирования и деплоя приложения в кластер k8s. Деплой производится с использованием утилиты Helm v3. Gitlab CI/CD описывается в файле `.gitlab-ci.yml` в формате `yaml`. По умолчанию Gitlab ищет этот файл в корне проекта, путь до файла может быть переопределен в настройках проекта. ## 1. Подготавливаем CI/CD Для этого скопируем заранее подготовленный шаблон `.gitlab-ci.yml` в проект `xpaste`, выполнив команду: ```bash 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`: ```bash vi ~/xpaste/.helm/values.yaml ``` В начале файла необходимо заменить строку `<Ваш номер логина> - меняем на свой номер студента!!`: ```diff - DB_NAME: <номер своего логина>_xpaste + DB_NAME: s000001_xpaste ``` ## 3. Настройка ingress Доступ к приложению будет осуществляться через ingress. Ingress устанавливается вместе с приложением, но для его корректной работы необходимо прописать ему адрес. Для этого откроем `values.yaml`: ```bash vi ~/xpaste/.helm/values.yaml ``` В конце файла необходимо заменить строку `<Ваш номер логина> - меняем на свой номер студента!!`: ```diff - host: xpaste.s<Ваш номер логина>.mcs.slurm.io + host: xpaste.s000001.mcs.slurm.io ``` Сохраняем все изменения и пушим их в gitlab. Для этого необходимо выполнить команды: ```bash 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 использует по умолчанию: ```bash 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<Ваш номер логина>.mcs.slurm.io. `<Ваш номер логина>` необходимо заменить на номер своего студента. Открывать нужно в режиме `инкогнито`. Если вы увидели `503` ошибку, значит практику выполнили верно. ## 7. Самостоятельная работа Самостоятельная работа продолжительностью 5 минут. Во время самостоятельной работы надо попробовать ответить на вопросы: * Почему деплой закончился успешно, а приложение недоступно? * Что надо исправить в CI/CD ? * Что надо исправить в приложении или его настройках ? Ошибку пока исправлять не надо. ## 8. Доработка CI/CD * Для корректировки поведения CI/CD необходимо внести изменения в ci/cd, описанные в [snippet](https://gitlab.slurm.io/-/snippets/107) Удаляем установленный релиз helm чарта: ```bash helm delete s<номер_студента>-xpaste ``` Далее пушим изменения и смотрим за процессом CI/CD. После внесения изменений процесс деплоя должен завершиться с ошибкой.