Как интегрировать Kubernetes с Gitlab - PullRequest
0 голосов
/ 17 мая 2018

Я пытаюсь интегрировать кластер Kubernetes с Gitlab для использования функции Gitlab Review Apps.

  • кластер Kubernetes создается через Rancher 1.6
  • Запуск kubectl get all из оболочки kubernetes дает
NAME             TYPE           CLUSTER-IP     EXTERNAL-IP    PORT(S)        AGE
svc/my-service   LoadBalancer   x.x.144.67     x.x.13.89   80:32701/TCP      30d
svc/kubernetes   ClusterIP      10.43.0.1      <none>         443/TCP        30d
  • На странице Gitlab CI / CD> Kubernetes нам нужно ввести в основном 3 поля:
    1. API URL
    2. Сертификат CA
    3. Токен

API URL

  • Если я не ошибаюсь, мы можем получить URL API Kubernetes из Rancher Dashboard> Kubernetes> CLI> Generate Config и скопировать URL server в cluster
apiVersion: v1
kind: Config
clusters:
- cluster:
    api-version: v1
    insecure-skip-tls-verify: true
    server: "https://x.x.122.197:8080/r/projects/1a7/kubernetes:6443"

Сертификат CA и токен?

  • Теперь вопрос в том, где взять сертификат CA (формат pem) и токен?

Я перепробовал все значения ca.crt и token из всех пространств имен с панели мониторинга Kubernetes, но при попытке установить приложение Helm Tiller я получаю эту ошибку на Gitlab:

Something went wrong while installing Helm Tiller

Can't start installation process

Вот как выглядит моя страница с секретами enter image description here

1 Ответ

0 голосов
/ 18 мая 2018

Я также умираю с kubernetes и GitLab.Я создал пару одноузловых «кластеров» для тестирования, один с minikube, а другой через kubeadm.

Я ответил на этот вопрос форум GitLab , но я публикую свое решение ниже:

API URL

В соответствии с официальной документацией , API URL только https://hostname:port без косой черты

Список секретов

Сначала я перечислил секреты как обычно:

$ kubectl get secrets
NAME                           TYPE                                  DATA      AGE
default-token-tpvsd            kubernetes.io/service-account-token   3         2d
k8s-dashboard-sa-token-XXXXX   kubernetes.io/service-account-token   3         1d

Получите служебный токен

$ kubectl -o json get secret k8s-dashboard-sa-token-XXXXX | jq -r '.data.token' | base64 -d
eyJhbGci    ... sjcuNA8w

Получите сертификат CA

Затем я получил сертификат CA непосредственно из вывода JSON через jq с пользовательским селектором:

$ kubectl -o json get secret k8s-dashboard-sa-token-XXXXX | jq -r '.data."ca.crt"' | base64 -d - | tee ca.crt
-----BEGIN CERTIFICATE-----
MIICyDCCAbCgAwIBAgIBADANBgkqhkiG9w0BAQsFADAVMRMwEQYDVQQDEwprdWJl
...        ...        ...        ...        ...        ...      
FT55iMtPtFqAOnoYBCiLH6oT6Z1ACxduxPZA/EeQmTUoRJG8joczI0V1cnY=
-----END CERTIFICATE-----

Проверка сертификата CA

С помощью CAСертификат на руках вы можете verify как обычно:

$ openssl x509 -in ca.crt -noout -subject -issuer
subject= /CN=kubernetes
issuer= /CN=kubernetes

$ openssl s_client -showcerts -connect 192.168.100.20:6443 < /dev/null &> apiserver.crt

$ openssl verify -verbose -CAfile ca.crt apiserver.crt
apiserver.crt: OK
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...