Как добавить самозаверяющий центр сертификации Azure AKS Kubernetes Cluster в интеграцию GitLab CI / CD Kubernetes? - PullRequest
0 голосов
/ 09 июня 2018

Я пытаюсь добавить свой кластер Azure AKS Kubernetes в мою интеграцию GitLab CI / CD Kubernetes.

Я могу выполнить kubectl команды на кластере с моего компьютера после того, как я запустил эту команду:

az aks get-credentials --resource-group <resource-group-name> --name <kubernetes-cluster-name>

Создан файл .kube/config с таким содержимым:

apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: <some long base64 string here>
    server: https://<resource-group-name+some-hexadecimal-chars>.hcp.westeurope.azmk8s.io:443
  name: <kubernetes-cluster-name>
contexts:
- context:
    cluster: <kubernetes-cluster-name>
    user: clusterUser_<resource-group-name>_<kubernetes-cluster-name>
  name: <kubernetes-cluster-name>
current-context: <kubernetes-cluster-name>
kind: Config
preferences: {}
users:
- name: clusterUser_<resource-group-name>_<kubernetes-cluster-name>
  user:
    client-certificate-data: <some long base64 string here>
    client-key-data: <some long base64 string here>
    token: <some secret string of hexadecimal chars here>

В форме GitLab я должен ввести следующие поля:

  1. Имя кластера Kubernetes
  2. URL API
  3. Сертификат CA - пакет центра сертификации (формат PEM)
  4. Токен
  5. Пространство имен проекта (необязательно), уникально)

Я попробовал эти значения:

  1. Я поставил <kubernetes-cluster-name>, чтобы он совпадал с именем кластера в Azure и именем кластера в .kube/configфайл.
  2. Я поместил URL https://<resource-group-name+some-hexadecimal-chars>.hcp.westeurope.azmk8s.io:443, скопированный из файла .kube/config.
  3. Сначала я попытался certificate-authority-data из файла .kube/config, но не сработал, и яя уже перепробовал все три строки base64 из файла .kube/config, ни одна не работала.
  4. Я поставил токен из файла .kube/config.
  5. Оставьте это пустым, так какэто необязательно.

В GitLab, когда я пытаюсь нажать кнопку Install для установки румпеля, я получаю эту ошибку:

Something went wrong while installing Helm Tiller
Can't start installation process. nested asn1 error

И иногда я получаювместо этой ошибки:

Kubernetes error: SSL_connect returned=1 errno=0 state=error: certificate verify failed

Я пытаюсь заставить это работать со вчерашнего дня, много гуглял и ничего не находит.

Я думаю, что проблема с этим3-е поле, Сертификат CA, может быть, есть какой-то другой способ получить этот контент из командной строки az или kubectl.

Кто-то здесь, кто уже получил эту интеграцию Kubernetes из GitLab в Azure AKS?рабочий?

1 Ответ

0 голосов
/ 09 июня 2018

Позже я узнал, что строка base64 в certificate-authority-data файла .kube/config, в котором я копировал его содержимое в поле CA Certificate формы GitLab «Добавить кластер Kubernetes», это формат PEM, нов кодировке base64.

Формат PEM уже является представлением битов сертификата в кодировке base64, но в середине он имеет некоторые разрывы строк.Весь этот контент снова кодируется в base64, прежде чем он переходит к .kube/config, поэтому он превращается в большую однострочную строку base64.

Мне просто нужно было декодировать base64 эту большую однострочную строку (я использовалjavascript atob("....") в окне консоли Chrome), что дало мне что-то вроде этого:

-----BEGIN CERTIFICATE-----
MIIEyDCCArCgAwIBAgIRAOL3N8oMIwWIxcFTZhTkfgMwDQYJKoZIhvcNAQELBQAw
...
...
...
5gP7yoL1peZ+AWjCgcUVZYiItqrBLpWYDgY9g8btYDUIiWlqkmC0+kBaPfwCtckx
cUp3vlwRITrv0mzrxiQjTLTUpEy7EcD+U6IecA==
-----END CERTIFICATE-----

Затем я просто скопировал это содержимое в поле "Сертификат CA" GitLab, и оно заработало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...