Kubelogin#
Kubelogin - инструмент, который позволяет взаимодействовать с кластером приложений с управлением DropApp в различных облачных окружениях или на локальной машине. Обеспечивает безопасную и простую аутентификацию и авторизацию доступа пользователя к кластеру без необходимости использования прямых учетных данных в виде логина и пароля. Для этого Kubelogin использует протоколы аутентификации OIDC (OpenID Connect) и OAuth для взаимодействия с провайдерами идентификации. Kubelogin позволяет настроить автоматический доступ к кластеру без необходимости введения пароля при подключении.
Kubelogin предназначен для работы в качестве подключаемого pod учетных данных клиента. При запуске kubectl, Kubelogin получает токен от провайдера, и kubectl получает доступ к API DropApp с помощью токена.
Kubelogin является плагином kubectl для аутентификации DropApp OIDC.
Важными изменениями версии Kubelogin v1.28.0 относительно v1.25.4 являются:
добавлен флаг
--oidc-redirect-url-authcode-keyboard, позволяющий пользователю устанавливать URI-перенаправления для клавиатуры с кодом авторизации;добавлен флаг
--force-refreshвget-token, для обновления ID-токена;добавлено изменение, которое реализует поток авторизации устройств OAuth 2.0 для аутентификации пользователей без открытия локального порта.
Установка Kubelogin#
Для выполнения данного сценария необходимы права администратора, а также установленный Helm.
Установите Helm.
Создайте файл с настройками Helm, который будет использоваться для установки Kubelogin. В этом файле нужно указать параметры, которые необходимо использовать при установке. Пример файла конфигурации:
apiVersion: v1 kind: ConfigMap metadata: name: kubelogin-config data: config.yaml: |- tls: enabled: false ca: |- -----BEGIN CA CERTIFICATE----- …Установите Kubelogin, используя команду
helm installв кластер DropApp. Необходимо указать файл с настройками и параметры установки:helm install kubelogin /path/to/config.yaml --set username=<USERNAME> --set password=<PASSWORD>/path/to/config.yaml- путь к файлу с настройками,usernameиpassword- параметры для подключения к кластеру DropApp.Настройте провайдер OIDC, привязку ролей кластера, сервер DropApp API и kubeconfig:
users: - name: oidc user: exec: apiVersion: client.authentication.io/v1beta1 command: kubectl args: - oidc-login - get-token - --oidc-issuer-url=ISSUER_URL - --oidc-client-id=YOUR_CLIENT_ID - --oidc-client-secret=YOUR_CLIENT_SECRETВыполните команду:
kubectl get podsKubectl выполняет Kubelogin перед вызовом API DropApp. Kubelogin автоматически открывает браузер.
Введите данные учетной записи в выбранном провайдере.
Вывод отобразит следующее:
% kubectl get pods Open http://localhost:8000 for authentication NAME READY STATUS RESTARTS AGE echoserver-86c78fdccd-nzmd5 1/1 Running 0 26dПосле аутентификации в шаге 4 Kubelogin возвращает учетные данные kubectl, а kubectl затем вызывает API-интерфейсы DropApp с этими учетными данными.
Kubelogin записывает токен ID и токен обновления в файл кеша токенов.
Если кешированный токен ID действителен, Kubelogin возвращает его. Если срок действия кешированного токена ID истек, Kubelogin обновит токен, используя токен обновления. Если срок действия токена обновления истек, Kubelogin выполнит повторную аутентификацию (необходимо повторить шаги 1-4).