Я настроил кластер kubernetes
с нуля. Это просто означает, что я не пользовался услугами, предоставляемыми другими, а использовал сам установщик k8s. Раньше у нас были другие кластеры, но с провайдерами, и они дают вам tls cert and key
для аутентификации и т. Д. Теперь этот кластер был настроен мной самостоятельно, у меня есть доступ через kubectl
:
$ kubectl get all
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 21h
$
Я такжепопробовал это и я могу добавить пользовательский ключ, но затем, когда я пытаюсь выполнить запрос через curl, я получаю pods is forbidden: User "system:anonymous" cannot list resource "pods" in API group "" at the cluster scope
.
Я не могу понять, где я могу получить сертификат и ключдля аутентификации пользователя с использованием API для tls auth. Я пытался понять официальные документы, но у меня ничего не получилось. Может ли кто-нибудь помочь мне найти, где находятся эти файлы или как добавить или получить сертификаты, которые я могу использовать для остальных API?
Edit1: мой файл .kube.config выглядит следующим образом:
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: LS0t(...)=
server: https://private_IP:6443
name: kubernetes
contexts:
- context:
cluster: kubernetes
user: kubernetes-admin
name: kubernetes-admin@kubernetes
current-context: kubernetes-admin@kubernetes
kind: Config
preferences: {}
users:
- name: kubernetes-admin
user:
client-certificate-data: LS0tLS(...)Qo=
client-key-data: LS0(...)tCg==
Он работает с локального хоста просто нормально. В другой руке я кое-что заметил. С локального хоста я могу получить доступ к кластеру, генерируя токен, используя этот метод.
Также обратите внимание, что сейчас я не против создания нескольких ролей для нескольких пользователей и т. Д. Мне просто нужноДоступ к API из удаленного и может быть с использованием «по умолчанию» аутентификации или ролей. Теперь, когда я пытаюсь сделать то же самое с удаленного компьютера, я получаю следующее:
- Я попытался использовать этот конфиг для запуска
kubectl get all
с удаленного компьютера, он работает некоторое время, а затем заканчивается Unable to connect to the server: dial tcp
private_IP: 6443 : i/o timeout.
- Это происходит потому, что в конфигурации
private_IP
, тогда я изменил IP на Public_IP:6443
и теперь получаю следующее: Unable to connect to the server: x509: certificate is valid for some_private_IP, My_private_IP, not Public_IP:6443
- Имейте в виду, что этои
AWS ec2
экземпляр с elastic IP
(Вы можете думать о Elastic IP как о общедоступном IP-адресе при традиционной настройке, но этот общедоступный IP-адрес находится на вашем общедоступном маршрутизаторе, а затем этот маршрутизатор направляет запросы на ваш фактический сервер в частной сети). Для фанатов AWS, как я уже сказал, я не могу использовать сервис EKS здесь.
Так как мне получить возможность использовать Public IP?