Создание интеграции
У меня была такая же проблема, как интегрировать GitLab CI / CD с моим кластером Azure AKS Kubernetes.Я создал этот вопрос , потому что у меня возникла ошибка, когда я пытался добавить свою информацию о Kubernetes cluester в GitLab.
Как их интегрировать:
- Внутри GitLabперейдите в меню «Операции»> «Kubernetes».
- Нажмите кнопку «Добавить кластер Kubernetes» в верхней части страницы
- Вам нужно будет заполнить некоторые поля формы, чтобы получитьсодержимое, которое вы должны поместить в эти поля, подключиться к вашей учетной записи Azure из интерфейса командной строки (для этого необходимо установить CLI Azure на вашем ПК) с помощью команды
az login
, а затем выполнить эту другую команду, чтобы получить учетные данные кластера Kubernetes: az aks get-credentials --resource-group <resource-group-name> --name <kubernetes-cluster-name>
- Предыдущая команда создаст файл
~/.kube/config
, откройте этот файл, содержимое полей, которые вы должны заполнить в форме GitLab «Добавить кластер Kubernetes», находится внутри этого .kube/config
файла
Это поля:
- Имя кластера Kubernetes: Это имя вашего кластера в Azure, оно также находится в файле
.kube/config
. - URL-адрес API: Это URL-адрес в поле
server
файла .kube/config
. - Сертификат CA: Это поле
certificate-authority-data
файла .kube/config
, но вам придется декодировать его с помощью base64.
После того, как вы его расшифруете, оно должно выглядеть примерно так:
-----BEGIN CERTIFICATE-----
...
some base64 strings here
...
-----END CERTIFICATE-----
Токен: Это строка шестнадцатеричных символов в поле
token
файла
.kube/config
(может также потребоваться расшифровка с помощью base 64?).Вам нужно использовать токен, принадлежащий учетной записи с привилегиями
cluster-admin , чтобы GitLab мог использовать его для аутентификации и установки чего-либо в кластере.Самый простой способ добиться этого - создать новую учетную запись для GitLab: создать файл YAML с определением учетной записи службы (пример можно увидеть
здесь в разделе
Создать учетную запись службы gitlab в пространстве имен по умолчанию) и примените его к кластеру с помощью
kubectl apply -f serviceaccount.yml
.
Пространство имен проекта (необязательно, уникально): Я оставляю его пустым, пока не знаю для чего илигде можно использовать это пространство имен.
Нажмите «Сохранить», и все готово.Теперь ваш проект GitLab должен быть подключен к вашему кластеру Kubernetes.
Развертывание
В вашем задании развертывания (в конвейере) вам понадобятся некоторые переменные среды для доступа к кластеру с помощью kubectl
команда, вот список всех доступных переменных:
https://docs.gitlab.com/ee/user/project/clusters/index.html#deployment-variables
Чтобы эти переменные были внедрены в ваше задание на развертывание, есть несколько условий:
- Вы, должно быть, правильно добавили кластер Kubernetes в свой проект GitLab, меню «Операции»> «Kubernetes» и эти шаги, которые я описал выше
- Ваша работа должна быть «задачей развертывания», в GitLab CI,чтобы считаться заданием развертывания, в вашем определении задания (в вашем
.gitlab-ci.yml
) должна быть клавиша environment
(взгляните на строку 31 в этом примере ), а имя среды должно соответствоватьимя, которое вы использовали в меню «Операции»> «Среды».
Вот пример .gitlab-ci.yml с тремя этапами:
- Сборка: сборкаСоздайте образ докера и отправьте его в личный реестр gitlab
- Тест: он еще ничего не делает, просто введите
exit 0
, чтобы изменить его позже - Развернуть: загрузить стабильную версию
kubectl
, скопировать файл .kube/config
, чтобы иметь возможность запускать команды kubectl
в кластере, и выполнить kubectl cluster-info
, чтобы убедиться, что он работает.В моем проекте я не закончил писать свой сценарий развертывания, чтобы действительно выполнить развертывание.Но эта kubectl cluster-info
команда выполняется нормально.
Совет: , чтобы взглянуть на все переменные среды и их значения (у Дженкинса есть страница с этим представлением, GitLab CIнет) вы можете выполнить команду env
в сценарии этапа развертывания.Это очень помогает при отладке работы.