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. Данный инструмент не входит в состав продукта и требует дополнительной установки.

  1. Установите Helm.

  2. Создайте файл с настройками Helm, который будет использоваться для установки Kubelogin. В этом файле нужно указать параметры, которые необходимо использовать при установке. Пример файла конфигурации:

    apiVersion: v1 kind: ConfigMap metadata: name: kubelogin-config data: config.yaml: |- tls: enabled: false ca: |- -----BEGIN CA CERTIFICATE-----  
    
  3. Установите Kubelogin, используя команду helm install в кластер DropApp. Необходимо указать файл с настройками и параметры установки:

    helm install kubelogin /path/to/config.yaml --set username=<USERNAME> --set password=<PASSWORD>
    

    /path/to/config.yaml - путь к файлу с настройками, username и password - параметры для подключения к кластеру DropApp.

  4. Настройте провайдер 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
    
  5. Выполните команду:

    kubectl get pods
    

    Kubectl выполняет Kubelogin перед вызовом API DropApp. Kubelogin автоматически открывает браузер.

  6. Введите данные учетной записи в выбранном провайдере.

    Вывод отобразит следующее:

    % 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).