Поделиться через


Включите управляемую платформой AKS интеграцию Microsoft Entra для кластеров Kubernetes с помощью kubelogin

Интеграция Microsoft Entra с управляемым AKS упрощает процесс интеграции Microsoft Entra. Ранее необходимо было создать клиентское и серверное приложение, а клиент Microsoft Entra должен был назначить разрешения роли читателей каталогов. Теперь поставщик ресурсов Службы Azure Kubernetes (AKS) управляет клиентскими и серверными приложениями.

Администраторы кластера могут настроить управление доступом на основе ролей (RBAC) для Kubernetes в зависимости от членства в группе каталогов или удостоверения пользователей. Проверка подлинности Microsoft Entra предоставляется кластерам AKS с помощью OpenID Connect. OpenID Connect представляет собой уровень идентификации на основе протокола OAuth 2.0. Дополнительные сведения о OpenID Connect см. в документации по OpenID Connect.

Дополнительные сведения о потоке интеграции Microsoft Entra см. в документации по Microsoft Entra.

Ограничения

Ниже приведены ограничения для интеграции проверки подлинности в AKS:

  • Интеграция не может быть отключена после добавления.
  • Переход с интегрированного кластера на устаревшие кластеры идентификаторов Microsoft Entra ID не поддерживаются.
  • Кластеры без поддержки RBAC Kubernetes не могут добавить интеграцию.

Подготовка к работе

Чтобы установить надстройку AKS, убедитесь, что у вас есть следующие элементы:

  • Вы установили и настроили Azure CLI версии 2.29.0 или более поздней. Чтобы найти версию, выполните команду az --version. Если вам необходимо выполнить установку или обновление, см. статью Установка Azure CLI 2.0.
  • Требуется kubectl минимальная версия 1.18.1 или kubelogin. С помощью Azure CLI и модуля Azure PowerShell эти две команды включаются и автоматически управляются. Это означает, что они обновляются по умолчанию и выполняются az aks install-cli не обязательно или рекомендуется. Если вы используете автоматизированный конвейер, необходимо управлять обновлениями для правильной или последней версии. Разница между дополнительными версиями Kubernetes и kubectl не должна быть более одной версии. В противном случае проблемы проверки подлинности возникают в неправильной версии.
  • Если вы используете helm, вам нужна минимальная версия helm 3.3.
  • Для этой конфигурации требуется группа Microsoft Entra для кластера. Эта группа зарегистрирована в качестве группы администрирования в кластере для предоставления разрешений администратора. Если у вас нет существующей группы Microsoft Entra, ее можно создать с помощью az ad group create команды.

Примечание.

Интегрированные кластеры Microsoft Entra с использованием версии Kubernetes, более новой, чем версия 1.24, автоматически используют kubelogin формат. Начиная с Kubernetes версии 1.24, формат clusterUser учетных данных по умолчанию для кластеров Microsoft Entra ID - это exec, что требует kubelogin бинарный файл в исполнении PATH. Нет изменений в поведении для кластеров Entra, не относящихся к Microsoft, или кластеров Microsoft Entra ID, работающих с версией ниже 1.24. Существующие скачанные kubeconfig продолжают работать. Необязательный параметр format запроса включается при получении clusterUser учетных данных для перезаписи изменения поведения по умолчанию. Можно явно указать формат azure , если необходимо сохранить старый kubeconfig формат.

Включение интеграции в кластере AKS

Создание нового кластера

  1. Создайте группу ресурсов Azure с помощью az group create команды.

    az group create --name myResourceGroup --location centralus
    
  2. Создайте кластер AKS и включите доступ администрирования для группы Microsoft Entra с помощью az aks create команды.

    az aks create \
      --resource-group myResourceGroup \
      --name myManagedCluster \
      --enable-aad \
      --aad-admin-group-object-ids <id> \
      --aad-tenant-id <id> \
      --generate-ssh-keys
    

    При успешном создании кластера Microsoft Entra ID, управляемого AKS, содержится следующий раздел в теле ответа.

    "AADProfile": {
      "adminGroupObjectIds": [
      "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb"
      ],
      "clientAppId": null,
      "managed": true,
      "serverAppId": null,
      "serverAppSecret": null,
      "tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee"
    }
    

Использование имеющегося кластера

Включите интеграцию Microsoft Entra с управляемыми AKS в существующем кластере az aks update с поддержкой Kubernetes RBAC с помощью команды. Не забудьте задать группу администраторов, чтобы сохранить доступ к кластеру.

az aks update \
  --resource-group MyResourceGroup \
  --name myManagedCluster \
  --enable-aad \
  --aad-admin-group-object-ids <id-1>,<id-2> \
  --aad-tenant-id <id>

Успешная активация управляемого кластером Идентификатора Microsoft Entra AKS содержит следующий раздел в тексте ответа:

"AADProfile": {
  "adminGroupObjectIds": [
      "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb"
  ],
  "clientAppId": null,
  "managed": true,
  "serverAppId": null,
  "serverAppSecret": null,
  "tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee"
}

Перенос устаревшего кластера на интеграцию

Если в кластере используется устаревшая интеграция Microsoft Entra, вы можете выполнить обновление до интеграции Microsoft Entra, управляемой az aks update AKS, с помощью команды.

Предупреждение

Кластеры уровня "Бесплатный" могут столкнуться с простоем сервера API во время обновления. Мы рекомендуем выполнить обновление в нерабочие часы. После обновления содержимое kubeconfig изменяется. Необходимо выполнить az aks get-credentials --resource-group <AKS resource group name> --name <AKS cluster name> для слияния новых учетных данных в kubeconfig файл.

az aks update \
  --resource-group myResourceGroup \
  --name myManagedCluster \
  --enable-aad \
  --aad-admin-group-object-ids <id> \
  --aad-tenant-id <id>

Успешная миграция управляемого кластером Идентификатора Microsoft Entra AKS содержит следующий раздел в тексте ответа:

"AADProfile": {
  "adminGroupObjectIds": [
      "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb"
  ],
  "clientAppId": null,
  "managed": true,
  "serverAppId": null,
  "serverAppSecret": null,
  "tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee"
}

Доступ к кластеру с поддержкой

  1. Получите учетные данные пользователя для доступа к кластеру az aks get-credentials с помощью команды.

    az aks get-credentials --resource-group myResourceGroup --name myManagedCluster
    
  2. Следуйте инструкциям по входу.

  3. Установите для kubelogin использования Azure CLI.

    kubelogin convert-kubeconfig -l azurecli
    
  4. Просмотрите узлы в кластере kubectl get nodes с помощью команды.

    kubectl get nodes
    

Неинтерактивный вход с помощью kubelogin

Существуют некоторые неинтерактивные сценарии, которые не поддерживаются kubectl. В этих случаях используйте kubelogin для подключения к кластеру с учетными данными субъекта-службы, неинтерактивными, для выполнения конвейеров непрерывной интеграции.

Примечание.

Интегрированные кластеры Microsoft Entra с использованием версии Kubernetes, более новой, чем версия 1.24, автоматически используют kubelogin формат. Начиная с версии Kubernetes 1.24, по умолчанию используется формат учетных данных clusterUser для кластеров Microsoft Entra ID, который требует наличия двоичного файла exec в пути выполнения. Нет изменений в поведении для кластеров Entra, не относящихся к Microsoft, или кластеров Microsoft Entra ID, работающих с версией ниже 1.24. Существующие скачанные kubeconfig продолжают работать. Необязательный параметр format запроса включается при получении clusterUser учетных данных для перезаписи изменения поведения по умолчанию. Можно явно указать формат azure , если необходимо сохранить старый kubeconfig формат.

При получении учетных clusterUser данных можно использовать format параметр запроса для перезаписи поведения по умолчанию. Можно задать значение azure для использования исходного kubeconfig формата:

az aks get-credentials --format azure

Если интегрированный кластер Microsoft Entra использует Kubernetes версии 1.24 или более поздней, необходимо вручную преобразовать kubeconfig формат.

export KUBECONFIG=/path/to/kubeconfig
kubelogin convert-kubeconfig

Если появится сообщение об ошибке: подключаемый модуль проверки подлинности Azure удален. Для преобразования kubelogin convert-kubeconfig формата вручную выполните командуkubeconfig. Дополнительные сведения см. в статье об известных проблемах Azure Kubelogin.

Устранение неполадок с доступом

Внимание

Шаг, описанный в этом разделе, предлагает альтернативный метод проверки подлинности по сравнению с обычной проверкой подлинности группы Microsoft Entra. Используйте этот параметр только в чрезвычайных ситуациях.

Если у вас нет административного доступа к допустимой группе Microsoft Entra, можно выполнить это обходное решение. Войдите с помощью учетной записи, являющейся членом роли администратора кластера Служба Azure Kubernetes, и предоставьте учетные данные администратора группы или клиента для доступа к кластеру.

Следующие шаги