kubectl proxy
действует точно как apiserver, точно так же, как целевой apiserver - но запросы через него уже аутентифицированы.Из вашего описания, «работает с curl», звучит так, как будто вы настроили его правильно, вам просто нужно настроить на нем клиентский kubectl:
kubectl --server=http://localhost:1111
(где находится порт 1111 на вашем локальном компьютерегде kubectl proxy
доступно; в вашем случае через туннель)
Если вам нужен exec или присоедините желоб kubectl proxy
, вам нужно запустить его либо с --disable-filter=true
, либо с --reject-paths='^$'
.Прочитайте мелкий шрифт и последствия для этих вариантов.
Безопасный путь
В общем, это не то, как я получаю доступ к кластерам через бастион.Проблема с вышеуказанным подходом заключается в том, что если кто-то получает доступ к бастиону, он сразу же имеет действительные учетные данные Kubernetes (так как для работы прокси-сервера kubectl они необходимы).Это также не самое безопасное решение, если бастион распределяется между несколькими операторами.Одним из главных пунктов бастиона было бы то, что на нем никогда не было полномочий.Мне кажется, что я получаю доступ к бастиону с моей рабочей станции с помощью:
ssh -D 1080 bastion
Это делает ssh выступающим в качестве SOCKS-прокси.Вам нужно GatewayPorts yes
в вашем sshd_config, чтобы это работало.После этого с рабочей станции я могу использовать
HTTPS_PROXY=socks5://127.0.0.1:1080 kubectl get pod