Кубернетес. HTTPS API возвращает «Неавторизованный»

Запрос API Kubernetes curl https://192.168.0.139 --cacert /home/mongeo/ku-certs/ca.pem возвращает Unauthorized

Запрос curl localhost:8080 работал хорошо.

Мой стандарт kube-proxy и kube-apiserver (руководство по coreos+k8s)

Как получить данные по HTTPS?


person batazor    schedule 16.12.2015    source источник
comment
добавить адрес порта 443 для https   -  person Shiv Singh    schedule 16.12.2015
comment
попробуйте curl 192.168.0.139:443 --cacert /home/mongeo/ku-certs/ca.pem   -  person Shiv Singh    schedule 16.12.2015
comment
@ShivSingh Сингх Это не помогает   -  person batazor    schedule 16.12.2015


Ответы (6)


Вы указали --token-auth-file=<file> и/или --basic-auth-file=<otherfile> или один из других режимов аутентификации? Я не знаю, будет ли конечная точка https работать без одного из них (может быть, так и должно быть, но, по-видимому, это не так). Проверьте https://kubernetes.io/docs/admin/authentication/.

person Eric Tune    schedule 16.12.2015
comment
Как это поможет открыть страницу в браузере? Токен должен передаваться в чедерных запросах страниц? - person batazor; 17.12.2015

Привет, это то, что я сделал для токена,

  1. Найти адрес сервера Api

    • открыть /etc/kubernetes/kubelet.conf

      пример: server: https://10.1.32.120:6443

  2. Найти токен

    • открыть /etc/kubernetes/pki/tokens.csv

      пример: 4c95a1a22d19b20811,kubeadm-node-csr,07ccbf35-e206-11e6-ab8f-0010184e550e,system:kubelet-bootstrap

  3. В этом случае токен 4c95a1a22d19b20811
  4. Если используете почтальона, добавьте заголовок Authorization: Bearer 4c95a1a22d19b20811
person SyamAhmad    schedule 25.01.2017
comment
я не могу найти файл token.csv в своем каталоге /etc/kubernetes/pki/. Нужно ли нам самим добавлять файл токена?? - person Bruce wayne - The Geek Killer; 14.12.2020

Простой способ получить доступ к Kubernetes API из внешней сети — создать туннель SSH, например

ssh -L 9000:localhost:8080 [email protected]

Это перенаправит соединение с вашего локального порта 9000 на localhost:8080 на вашем сервере.

Пока туннель SSH открыт, вы можете запросить API на порту 9000 вашего компьютера.

person Gajus    schedule 20.10.2016
comment
kubectl proxy — это более простой способ установить локальный http-туннель к серверу API. - person phs; 26.06.2019

Существует несколько способов аутентификации в API. Самый простой способ авторизоваться — отправить заголовок Authentication со значением «bearer TOKEN_VALUE». Вы можете просмотреть конфигурацию API Kubernetes на своем сервере, чтобы найти определенные токены. Заголовок можно отправить с помощью http-запроса, используя расширение веб-браузера.

person Community    schedule 05.05.2016

наконец, я понял это:

lincai@pdbuddy:~/blackbox$ curl -v --cacert ./ca.pem --key ./admin-key.pem --cert ./admin.pem  https://xxxx/api/v1/
* Hostname was NOT found in DNS cache

> 
< HTTP/1.1 200 OK
person reachlin    schedule 23.08.2017
comment
Большой! Если вы хотите использовать файл из текущего каталога, поставьте перед ним префикс ./ во избежание путаницы с псевдонимом. - person 8.8.8.8; 09.08.2018
comment
Я заметил, что в моей среде, если я не использую префикс ./, я получаю несанкционированную ошибку. Я запускаю команду из папки, где есть сертификаты, почему она не работает? Это то, что я пытаюсь сделать, и это не сработало curl https://x:x:x::6443/api/ --key kubernetes.key --cert kubernetes.crt --cacert ca.crt, а это работает curl https://x:x:x::6443/api/ --key ./kubernetes.key --cert ./kubernetes.crt --cacert ./ca.crt - person srinu259; 25.04.2020

person    schedule
comment
Добавьте пояснение к ОП. Это поможет ему лучше понять. - person Haris; 17.12.2015