Files
school-dev-k8s/practice/21.ci-cd/1.2.deploy/README.md
T
2021-09-27 16:59:35 +03:00

109 lines
5.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Добавляем конфиг 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<Ваш номер логина>.k8s.slurm.io
+ host: xpaste.s000001.k8s.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<Ваш номер логина>.k8s.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.
После внесения изменений процесс деплоя должен завершиться с ошибкой.