Удаленный доступ к Kubernetes API

У меня есть кластер k8s, смонтированный в инстансе Amazon EC2, и я хочу настроить CI с помощью GitLab. Для этого GitLab запросил у меня URL-адрес Kubernetes API.

Я запустил kubectl cluster-info, чтобы получить запрошенную информацию, и вижу 3 строки:

Я полагаю, что нужен главный URL-адрес Kubernetes, но это частный IP-адрес. Как я могу правильно открыть API?

Любые идеи ?


person ramiromd    schedule 18.05.2020    source источник


Ответы (2)


Для большей безопасности держите IP-адреса главных узлов kubernetes в секрете и используйте LoadBalancer, предоставляемый AWS, для доступа к серверу Kubernetes API. Вы также можете настроить завершение TLS в LoadBalancer.

person Arghya Sadhu    schedule 18.05.2020

используйте kubectl config view, чтобы получить адрес сервера, он будет выглядеть как server: https://172.26.2.101:6443 .

Сначала вам нужно определить свой общедоступный IP-адрес главного узла или балансировщика нагрузки, если таковой имеется, в качестве альтернативы DNS. Вы можете сделать это,

удалить текущие сертификаты apiserver

sudo rm /etc/kubernetes/pki/apiserver.*

генерировать новые сертификаты

sudo kubeadm init phase certs apiserver --apiserver-cert-extra-sans=<public_ip>

Затем вам нужно захватить свой ключ администратора, сертификат и сертификат CA из файла .kube / config.

данные ключа клиента:

echo -n "LS0...Cg==" | base64 -d > admin.key

данные сертификата клиента:

echo -n "LS0...Cg==" | base64 -d > admin.crt

данные центра сертификации:

echo -n "LS0...Cg==" | base64 -d > ca.crt

Теперь вы можете запросить свой api через curl, пример ниже, чтобы запросить информацию о подах.

curl https://<public_ip>:6443/api/v1/pods  \
--key admin.key \
--cert admin.crt \
--cacert ca.crt

И, конечно же, убедитесь, что вы разрешили требуемые порты

person Nurhun    schedule 20.02.2021