Включение проверки подлинности управляемого удостоверения Azure для кластеров Kubernetes с помощью kubelogin

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

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

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

В этой статье содержатся сведения о включении и использовании управляемых удостоверений для ресурсов Azure с кластером AKS.

Ограничения

Ниже приведены ограничения, которые интегрируют проверку подлинности управляемого удостоверения Azure в 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 выполнения. Изменение поведения для кластеров, отличных от Microsoft Entra, или кластеров идентификаторов Microsoft Entra, работающих старше версии 1.24. Существующие скачанные kubeconfig продолжают работать. Необязательный формат параметра запроса включается при получении учетных данных 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 AKS содержит следующий раздел в тексте ответа:

    "AADProfile": {
        "adminGroupObjectIds": [
        "5d24****-****-****-****-****afa27aed"
        ],
        "clientAppId": null,
        "managed": true,
        "serverAppId": null,
        "serverAppSecret": null,
        "tenantId": "72f9****-****-****-****-****d011db47"
    }
    

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

Включите интеграцию 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": [
        "5d24****-****-****-****-****afa27aed"
    ],
    "clientAppId": null,
    "managed": true,
    "serverAppId": null,
    "serverAppSecret": null,
    "tenantId": "72f9****-****-****-****-****d011db47"
    }

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

Если в кластере используется устаревшая интеграция 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": [
        "5d24****-****-****-****-****afa27aed"
    ],
    "clientAppId": null,
    "managed": true,
    "serverAppId": null,
    "serverAppSecret": null,
    "tenantId": "72f9****-****-****-****-****d011db47"
    }

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

  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, которое требует kubelogin двоичного файла в path выполнения. Изменение поведения для кластеров, отличных от Microsoft Entra, или кластеров идентификаторов Microsoft Entra, работающих старше версии 1.24. Существующие скачанные kubeconfig продолжают работать. Необязательный формат параметра запроса включается при получении учетных данных 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, и предоставьте учетные данные администратора группы или клиента для доступа к кластеру.

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