GitLab предлагает интеграцию с Google Kubernetes Cluster и Amazon Elastic Kubernetes Services. Чтобы следовать этой статье, вам потребуется аккаунт Google Kubernetes Cluster и GitLab. Я уверен, что вы можете получить учетную запись GitLab, если у вас ее нет, и я рассказал вам о создании кластера GKE в этой статье: Развертывание WebApp с помощью Google Kubernetes Engine.

Итак, давайте начнем.

Шаг 1. Добавьте кластер GKE.

В GitLab перейдите на боковую панель › Операции › Kubernetes › Интеграция с сертификатом кластера

Выберите Подключить существующий кластер › Google GKE.

Шаг 2: Добавьте информацию о кластере

Имя кластера — это идентификатор GitLab, поэтому оно может отличаться от имени кластера GKE. Оставьте область среды с подстановочным знаком, если только вы не хотите указать ее, например, производственную или промежуточную.

Шаг 3. Добавьте URL-адрес API и сертификат

Вы можете выполнить это действие из облачного интерфейса командной строки, если у вас установлен Cloud SDK, или перейти в облачную оболочку GKE из своего проекта. Получите URL-адрес API, выполнив следующую команду:

kubectl cluster-info | grep -E 'Kubernetes master|Kubernetes control plane' | awk '/http/ {print $NF}'

Взамен вы получите базовый URL-адрес либо в виде имени домена: www.example.com, либо с IP-адресом. Добавьте этот URL-адрес API в свою консоль GitLab.

Шаг 4. Добавьте сертификат ЦС Kubernetes

Прежде всего, перечислите секреты с помощью команды и скопируйте токен, который выглядит как default-token-abcdef:

kubectl get secrets

Во-вторых, получите сертификат с помощью следующей команды:

kubectl get secret <secret name> -o jsonpath="{['data']['ca\.crt']}" | base64 --decode

Скопируйте сертификат в консоль GitLab и выделите сертификат в командной строке, он автоматически скопирует содержимое для вас, пожалуйста, не выбирайте «Копировать», потому что это также может добавить разрыв строки.

Шаг 5: Добавьте сертификат ЦС Kubernetes

В терминале создайте файл с именем gitlab-admin-service-account.yaml

vi gitlab-admin-service-account.yaml

Скопируйте в файл следующее содержимое:

apiVersion: v1
kind: ServiceAccount
metadata:
  name: gitlab
  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: gitlab-admin
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
  - kind: ServiceAccount
    name: gitlab
    namespace: kube-system

Сохраните и выйдите из редактора vi с помощью следующей команды и нажмите Enter:

:wq 

Примените учетную запись службы к вашему кластеру:

kubectl apply -f gitlab-admin-service-account.yaml

Вы должны увидеть содержимое терминала:

Получите токен:

kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep gitlab | awk '{print $1}')

Скопируйте значение токена в консоль GitLab:

Data 
====
token:      <authentication_token>

Добавьте префикс пространства имен проекта, если вы предпочитаете строковое имя, а не случайные числа. Нажмите синюю кнопку и работа сделана! ✅