Thank you for reading this post, don't forget to subscribe!
В Gitlab есть возможность подключения кластера kubernetes с группе проекта, начиная с версии premium - несколько кластеров к одной группе.
В меню группы выберите вкладку "Kubernetes" и нажмите "Add existing cluster".
введите имя кластера (например его IP или hostname)
введите "API URL" обычно имеет вид https://x.x.x.x:6443 или https://x.x.x.x:443
Заполните "CA certificate" - сертификат созданный по-умолчанию, его можно посмотреть на любой ноде
для этого в терминале ноды кластера введите команду:
1 |
kubectl get secrets |
1 2 |
NAME TYPE DATA AGE default-token-2qr7s kubernetes.io/service-account-token 3 3d7h |
она показывает имеющиеся секреты
получите сертификат используя имя секрета и скопируйте его полностью в гитлаб
1 |
kubectl get secret default-token-2qr7s -o jsonpath="{['data']['ca\.crt']}" | base64 --decode |
1 2 3 4 5 |
-----BEGIN CERTIFICATE----- MIIC+TCCAeGgAwIBAgIJAPo6nlw1y3FuMA0GCSqGSIb3DQEBCwUAMBIxEDAOBgNV .............................................................. LMm1Z1GeawSWHU/+JC7RDQDCH1JGUbHOMj7huxidHZ3+WY9LAm+qe8LhVu0O -----END CERTIFICATE----- |
Service Token - это служебный токен доступа, для учетной записи пользователя с административными правами
создайте файл с именем gitlab-admin-service-account.yaml
1 |
vi gitlab-admin-service-account.yaml |
скопируйте в него следующее содержимое:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
apiVersion: v1 kind: ServiceAccount metadata: name: gitlab-admin namespace: kube-system --- apiVersion: rbac.authorization.k8s.io/v1beta1 kind: ClusterRoleBinding metadata: name: gitlab-admin roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: gitlab-admin namespace: kube-system |
примените этот yaml файл
1 |
kubectl apply -f gitlab-admin-service-account.yaml |
запросите токен для учетной записи gitlab-admin и скопируйте его полностью в гитлаб
1 |
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep gitlab-admin | awk '{print $1}') |
чекбоксы оставьте по-умолчанию
нажмите "Add Kubernetes cluster"
Значок статуса интеграции должен изменится на "включено", если нет будет выведена ошибка, проверьте еще раз сертификат и токен
введите Base domain - это IP ноды кластера с wildcard доменом nip.io - x.x.x.x.nip.io
В разделе Applications установите Helm Tiller и Ingress