Я также умираю с 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