Kubernetes: панель управления https Неавторизованный

Созданный на 30 авг. 2016  ·  3Комментарии  ·  Источник: kubernetes/kubernetes

Версия панели: 1.1
Версия Кубернета: 1.3.6
Операционная система: Ubuntu14.04
Перейти версии: 1.6.2
Разверните kubernetes и панель мониторинга как http://kubernetes.io/docs/getting-started-guides/ubuntu/

Я могу получить доступ к панели инструментов http://master-ip :8080/
но когда я получаю доступ к https://master-ip : 6443/, возвращаю «Неавторизованный»
Зачем?

areapiserver

Самый полезный комментарий

Я предполагаю, что ваши кластеры используют сертификаты для безопасной связи по HTTPS. Здесь есть 2 проблемы.

  1. Браузер не распознает корневой ЦС, поэтому он не может быть уверен, что соединение безопасно. Мы можем обойти это и все еще использовать это. Эта часть не является блокировщиком. :)
    zrzut ekranu z 2016-09-15 15-50-35
  2. Серверу API требуется клиентский сертификат/токен/пользователь и пароль (зависит от конфигурации) для авторизации клиента, иначе он вернет Unauthorized .

С помощью curl легко авторизоваться, потому что вы можете легко предоставить необходимые данные.
curl https://<MASTER_IP>/version --cacert ca.crt --cert admin.crt --key admin.key
curl https://<MASTER_IP>/version --header "Authorization: Bearer $TOKEN"`

С браузером все сложнее. Доступ к панели управления осуществляется несколькими способами:

  1. Вы можете открыть его через сервис, используя NodePort, и получить к нему доступ с помощью <MASTER_IP>:<NODE_PORT> . (Не безопасно)
  2. Импортируйте сертификаты в свой браузер.
  3. Используйте kubectl proxy и перейдите к http://127.0.0.1:8001/ (адрес привязки можно изменить). Он будет обрабатывать SSL-туннелирование, если ваш файл kubeconfig настроен на использование безопасного соединения.

Касательно второго варианта. Я могу предоставить некоторую информацию, как это сделать с помощью Firefox.

  1. Импортируйте сгенерированный сертификат CA в браузер.
    zrzut ekranu z 2016-09-15 16-05-47
  2. Импортируйте сертификат пользователя в Your Certificates . Если у вас есть 2 отдельных сертификата crt и key , лучше всего объединить их в сертификат PFX/PKCS#12 , потому что его легко импортировать непосредственно в хранилище сертификатов браузера. Вы можете использовать эту страницу или сделать это вручную, используя openssl .
    zrzut ekranu z 2016-09-15 16-09-44

Если сертификаты сгенерированы правильно, всплывающее окно будет отображаться при следующей попытке доступа к серверу API через HTTPS. Возможно, вам потребуется очистить кеш браузера.
zrzut ekranu z 2016-09-15 16-12-04

Теперь вы должны увидеть приборную панель. :)
zrzut ekranu z 2016-09-15 16-14-16

Я не знаю, как использовать токен носителя в браузере. Возможно, требуется ручная работа, чтобы добавить данные в заголовок HTTP перед отправкой запроса на сервер API.

Конечно, есть и другие варианты авторизации пользователя. Kubernetes поддерживает ABAC, RBAC и многое другое.

Все 3 Комментарий

У меня такая же проблема. И я думаю, что автор, возможно, еще не рассматривал это.
https://github.com/kubernetes/dashboard/issues/1116

Я предполагаю, что ваши кластеры используют сертификаты для безопасной связи по HTTPS. Здесь есть 2 проблемы.

  1. Браузер не распознает корневой ЦС, поэтому он не может быть уверен, что соединение безопасно. Мы можем обойти это и все еще использовать это. Эта часть не является блокировщиком. :)
    zrzut ekranu z 2016-09-15 15-50-35
  2. Серверу API требуется клиентский сертификат/токен/пользователь и пароль (зависит от конфигурации) для авторизации клиента, иначе он вернет Unauthorized .

С помощью curl легко авторизоваться, потому что вы можете легко предоставить необходимые данные.
curl https://<MASTER_IP>/version --cacert ca.crt --cert admin.crt --key admin.key
curl https://<MASTER_IP>/version --header "Authorization: Bearer $TOKEN"`

С браузером все сложнее. Доступ к панели управления осуществляется несколькими способами:

  1. Вы можете открыть его через сервис, используя NodePort, и получить к нему доступ с помощью <MASTER_IP>:<NODE_PORT> . (Не безопасно)
  2. Импортируйте сертификаты в свой браузер.
  3. Используйте kubectl proxy и перейдите к http://127.0.0.1:8001/ (адрес привязки можно изменить). Он будет обрабатывать SSL-туннелирование, если ваш файл kubeconfig настроен на использование безопасного соединения.

Касательно второго варианта. Я могу предоставить некоторую информацию, как это сделать с помощью Firefox.

  1. Импортируйте сгенерированный сертификат CA в браузер.
    zrzut ekranu z 2016-09-15 16-05-47
  2. Импортируйте сертификат пользователя в Your Certificates . Если у вас есть 2 отдельных сертификата crt и key , лучше всего объединить их в сертификат PFX/PKCS#12 , потому что его легко импортировать непосредственно в хранилище сертификатов браузера. Вы можете использовать эту страницу или сделать это вручную, используя openssl .
    zrzut ekranu z 2016-09-15 16-09-44

Если сертификаты сгенерированы правильно, всплывающее окно будет отображаться при следующей попытке доступа к серверу API через HTTPS. Возможно, вам потребуется очистить кеш браузера.
zrzut ekranu z 2016-09-15 16-12-04

Теперь вы должны увидеть приборную панель. :)
zrzut ekranu z 2016-09-15 16-14-16

Я не знаю, как использовать токен носителя в браузере. Возможно, требуется ручная работа, чтобы добавить данные в заголовок HTTP перед отправкой запроса на сервер API.

Конечно, есть и другие варианты авторизации пользователя. Kubernetes поддерживает ABAC, RBAC и многое другое.

Браузер должен проходить аутентификацию при доступе к защищенному порту сервера API. Как показывает https://github.com/kubernetes/kubernetes/issues/31665#issuecomment -247342834, это можно сделать с помощью аутентификации на основе сертификатов.

Для аутентификации на основе токенов браузеры не позволяют автоматически отправлять токены-носители вместе с вашими запросами.

Панель инструментов описывает, как вы можете использовать kubectl proxy , который добавляет ваши учетные данные для аутентификации и позволяет вам получить доступ к панели инструментов локально через прокси-сервер — https://github.com/kubernetes/dashboard#usage .

Была ли эта страница полезной?
0 / 5 - 0 рейтинги