Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье приведены пошаговые инструкции по включению и использованию назначаемого системой, назначаемого пользователем или предварительно созданного управляемого удостоверения kubelet в службе Azure Kubernetes (AKS).
Предварительные требования к управляемой идентификации AKS
Ознакомьтесь с обзором управляемых удостоверений в службе Azure Kubernetes (AKS), чтобы понять различные типы управляемых удостоверений, доступных в AKS , и как их можно использовать для безопасного доступа к ресурсам Azure.
Перед выполнением примеров в этой статье задайте подписку в качестве текущей активной подписки с помощью
az account setкоманды.az account set --subscription <subscription-id>Создайте группу ресурсов Azure, если у вас еще нет группы ресурсов, вызвав
az group createкоманду.az group create \ --name <resource-group-name> \ --location <location>
Минимальные требования к версии Azure CLI
- Убедитесь, что установлен Azure CLI версии 2.23.0 или более поздней. Чтобы узнать версию, выполните команду
az --version. Если вам нужно установить или обновить, см. статью "Установка Azure CLI". - Чтобы использовать предварительно созданное управляемое удостоверение kubelet, необходимо установить Azure CLI версии 2.26.0 или более поздней.
- Чтобы обновить существующий кластер для использования управляемого удостоверения, назначаемого системой , или управляемого удостоверения, назначаемого пользователем, необходимо установить Azure CLI версии 2.49.0 или более поздней.
Ограничения
Перемещение или перенос кластера с поддержкой управляемого удостоверения в другой клиент не поддерживается.
Если в кластере включена управляемая удостоверением pod (
aad-pod-identity) Microsoft Entra, модули Node-Managed Identity (NMI) изменяют iptables узлов, чтобы перехватывать запросы к конечной точке метаданных экземпляра Azure (IMDS). Эта конфигурация означает, что любой запрос, сделанный в конечную точку IMDS, перехватывается NMI, даже если конкретный pod не используетaad-pod-identity.Настраиваемое определение ресурса AzurePodIdentityException (CRD) можно настроить так, чтобы запросы к конечной точке IMDS, исходящие из pod, соответствующих меткам, определенным в CRD, должны быть направлены через прокси без какой-либо обработки в NMI. Исключите системные модули pod с
kubernetes.azure.com/managedby: aksметкой в пространстве имен kube-system ,aad-pod-identityнастроив CRD AzurePodIdentityException. Дополнительные сведения см. в статье Об использовании удостоверений Microsoft Entra, управляемых pod, в службе Azure Kubernetes.Чтобы настроить исключение, установите mic-exception YAML.
AKS не поддерживает использование управляемого удостоверения, назначаемого системой, при использовании пользовательской частной зоны DNS.
Регионы USDOD Central, USDOD East и USGov Iowa в облаке Azure для государственных организаций США не поддерживают создание кластера с управляемым удостоверением, назначаемым пользователем.
Предварительно созданное управляемое удостоверение kubelet должно быть управлямым удостоверением, назначенным пользователями.
Регионы "Восточная Часть Китая" и "Север Китая" в Microsoft Azure, управляемые 21Vianet, не поддерживаются.
Это важно
Все функции Microsoft Defender для облака официально будут сняты в Azure в китайском регионе 18 августа 2026 года. Из-за предстоящего выхода на пенсию клиенты Azure в Китае больше не смогут подключить новые подписки к службе. Новая подписка — это любая подписка, которая еще не была подключена к облачной службе Microsoft Defender до 18 августа 2025 года, дата объявления о выходе на пенсию. Дополнительные сведения об устаревании см. в объявлении “Microsoft Defender for Cloud Deprecation в Microsoft Azure, управляемой 21Vianet”.
Клиенты должны работать с представителями своих аккаунтов Microsoft Azure, управляемой компанией 21Vianet, чтобы оценить влияние этого прекращения на их собственные операции.
Рекомендации по обновлению кластера
При обновлении кластера рассмотрите следующие сведения:
- Обновление работает только в том случае, если требуется использовать обновление виртуального жесткого диска. Если вы используете последнюю версию виртуального жесткого диска, необходимо ждать, пока следующий виртуальный жесткий диск не будет доступен для выполнения обновления.
- Azure CLI гарантирует правильную настройку разрешений надстройки после завершения миграции. Если вы не используете Azure CLI для выполнения операции миграции, вам нужно самостоятельно управлять разрешениями идентификатора надстройки. Пример использования шаблона Azure Resource Manager (ARM) см. в статье "Назначение ролей Azure с помощью шаблонов ARM".
- Если ваш кластер использовал
--attach-acrдля извлечения образов из реестра контейнеров Azure (ACR), необходимо выполнитьaz aks update --resource-group <resource-group-name> --name <aks-cluster-name> --attach-acr <acr-resource-id>команду после обновления кластера, чтобы позволить новому kubelet, созданному для управляемой идентичности, иметь разрешение на извлечение образов из ACR. В противном случае вы не сможете загрузить из ACR после обновления.
Включение системного управляемого удостоверения на кластере AKS
Включить управляемое удостоверение, назначаемое системой, в новом кластере AKS
Управляемое удостоверение, назначаемое системой, по умолчанию включается при создании нового кластера AKS.
Создайте кластер AKS с помощью
az aks createкоманды.az aks create \ --resource-group <resource-group-name> \ --name <aks-cluster-name> \ --generate-ssh-keys
Обновление существующего кластера AKS для использования управляемого удостоверения, назначаемого системой
Обновите существующий кластер AKS с учетной записи службы на управляемое удостоверение, назначенное системой, используя команду
az aks updateс параметром--enable-managed-identity.az aks update \ --resource-group <resource-group-name> \ --name <aks-cluster-name> \ --enable-managed-identityПосле обновления кластера для использования управляемого удостоверения, назначаемого системой, а не субъекта-службы, плоскость управления и модули pod используют управляемое удостоверение, назначаемое системой, для авторизации при доступе к другим службам в Azure. Kubelet продолжает использовать учетную запись службы, пока вы не обновите пул агентов. Для обновления управляемого удостоверения можно использовать
az aks nodepool upgrade --resource-group <resource-group-name> --cluster-name <aks-cluster-name> --name <node-pool-name> --node-image-onlyкоманду на узлах. Обновление пула узлов приводит к простою для кластера AKS, так как узлы в пулах узлов оцеплены, осушены и переимычены.
Получение идентификатора субъекта управляемого удостоверения, назначаемого системой
Получите идентификатор субъекта для управляемого удостоверения, назначаемого системой кластера, с помощью
az aks showкоманды.CLIENT_ID=$(az aks show \ --name <aks-cluster-name> \ --resource-group <resource-group-name> \ --query identity.principalId \ --output tsv)
Добавьте назначение роли для системного управляемого удостоверения
Назначьте роль Azure RBAC управляемой системе с присвоенной системой идентичностью, воспользовавшись командой
az role assignment create.Для виртуальной сети, подключенного диска Azure, статического IP-адреса или таблицы маршрутов за пределами группы ресурсов рабочего узла по умолчанию необходимо назначить
Network Contributorроль в настраиваемой группе ресурсов.В следующем примере роль участника сети назначается управляемому удостоверению, назначаемого системой. Назначение роли ограничено группой ресурсов, содержащей виртуальную сеть.
az role assignment create \ --assignee <client-id> \ --role "Network Contributor" \ --scope <custom-resource-group-id>Примечание.
Для распространения разрешений, предоставленных управляемому удостоверению кластера, может потребоваться до 60 минут.
Создание управляемого удостоверения, назначаемого пользователем
Если у вас еще нет ресурса управляемого удостоверения, назначаемого пользователем, создайте его с помощью
az identity createкоманды.az identity create \ --name <identity-name> \ --resource-group <resource-group-name>Выходные данные должны выглядеть примерно так:
{ "clientId": "<client-id>", "clientSecretUrl": "<clientSecretUrl>", "id": "/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identity-name>", "location": "<location>", "name": "<identity-name>", "principalId": "<principal-id>", "resourceGroup": "<resource-group-name>", "tags": {}, "tenantId": "<tenant-id>", "type": "Microsoft.ManagedIdentity/userAssignedIdentities" }
Получение идентификатора субъекта управляемого удостоверения, назначаемого пользователем
Получите идентификатор субъекта управляемого удостоверения, назначаемого пользователем, с помощью
az identity showкоманды.CLIENT_ID=$(az identity show \ --name <identity-name> \ --resource-group <resource-group-name> \ --query principalId \ --output tsv)
Узнайте идентификатор ресурса управляемого удостоверения пользователя
Получите идентификатор ресурса управляемой удостоверенности, назначенной пользователем, используя команду
az identity show.RESOURCE_ID=$(az identity show \ --name <identity-name> \ --resource-group <resource-group-name> \ --query id \ --output tsv)
Назначьте роль Azure RBAC управляемому удостоверению, назначенному пользователем
Добавьте назначение роли для управляемого удостоверения пользователя с помощью команды
az role assignment create.В следующем примере роль пользователя секретов Key Vault назначается назначаемому пользователем управляемому удостоверению, чтобы предоставить ему разрешения на доступ к секретам в Key Vault. Назначение роли ограничено ресурсом хранилища ключей.
az role assignment create \ --assignee <client-id> \ --role "Key Vault Secrets User" \ --scope "<keyvault-resource-id>"Примечание.
Для распространения разрешений, предоставленных управляемому удостоверению кластера, может потребоваться до 60 минут.
Включите назначаемое пользователем управляемое удостоверение в кластере AKS
Включение назначаемого пользователем управляемого удостоверения на новом кластере AKS
Создайте кластер AKS с управляемым удостоверением, назначенным пользователем, используя команду
az aks create.--assign-identityВключите параметр и передайте идентификатор ресурса для управляемого удостоверения, назначаемого пользователем:az aks create \ --resource-group <resource-group-name> \ --name <cluster-name> \ --network-plugin azure \ --vnet-subnet-id <vnet-subnet-id> \ --dns-service-ip 10.2.0.10 \ --service-cidr 10.2.0.0/24 \ --assign-identity $RESOURCE_ID \ --generate-ssh-keys
Обновление существующего кластера для использования управляемого удостоверения, назначаемого пользователем
Обновите существующий кластер для использования пользовательско-заданного управляемого удостоверения с помощью команды
az aks update.--assign-identityВключите параметр и передайте идентификатор ресурса для управляемого удостоверения, назначаемого пользователем:az aks update \ --resource-group <resource-group-name> \ --name <cluster-name> \ --enable-managed-identity \ --assign-identity $RESOURCE_IDВыходные данные для успешного обновления кластера для использования управляемого удостоверения, назначаемого пользователем, должны выглядеть примерно так:
"identity": { "principalId": null, "tenantId": null, "type": "UserAssigned", "userAssignedIdentities": { "/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identity-name>": { "clientId": "<client-id>", "principalId": "<principal-id>" } } },Примечание.
Перенос управляемого удостоверения для плоскости управления с назначаемого системой на назначение пользователем не приводит к простою для пулов элементов управления и агентов. Компоненты плоскости управления продолжают использовать старый идентификатор, назначаемый системой, в течение нескольких часов до следующего обновления токена.
Определение типа управляемого удостоверения, используемого кластером
Убедитесь, какой тип управляемого удостоверения используется в вашем кластере с использованием команды
az aks show.az aks show \ --name <aks-cluster-name> \ --resource-group <resource-group-name> \ --query identity.type \ --output tsvЕсли кластер использует управляемое удостоверение, значение свойства типа будет SystemAssigned или UserAssigned.
Если кластер использует сервисный принципал, значение свойства типа будет равен NULL. Рассмотрите возможность обновления кластера для использования управляемого удостоверения.
Создайте управляемое удостоверение kubelet
Если у вас нет управляемого удостоверения kubelet, создайте его с помощью команды
az identity create.az identity create \ --name <kubelet-identity-name> \ --resource-group <resource-group-name>Выходные данные должны выглядеть примерно так:
{ "clientId": "<client-id>", "clientSecretUrl": "<clientSecretUrl>", "id": "/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<kubelet-identity-name>", "location": "<location>", "name": "<kubelet-identity-name>", "principalId": "<principal-id>", "resourceGroup": "<resource-group-name>", "tags": {}, "tenantId": "<tenant-id>", "type": "Microsoft.ManagedIdentity/userAssignedIdentities" }
Назначьте роль RBAC управляемому удостоверению kubelet
acrpullНазначьте роль управляемому удостоверению kubelet с помощьюaz role assignment createкоманды.az role assignment create \ --assignee <kubelet-client-id> \ --role "acrpull" \ --scope "<acr-registry-id>"
Включите управляемое удостоверение kubelet в кластере AKS
Включить управляемую идентичность kubelet в новом кластере AKS
Создайте кластер AKS с существующими удостоверениями с помощью
az aks createкоманды.az aks create \ --resource-group <resource-group-name> \ --name <aks-cluster-name> \ --network-plugin azure \ --vnet-subnet-id <vnet-subnet-id> \ --dns-service-ip 10.2.0.10 \ --service-cidr 10.2.0.0/24 \ --assign-identity <identity-resource-id> \ --assign-kubelet-identity <kubelet-identity-resource-id> \ --generate-ssh-keysУспешное создание кластера AKS с помощью управляемого удостоверения kubelet должно привести к выводу, похожему на следующий:
"identity": { "principalId": null, "tenantId": null, "type": "UserAssigned", "userAssignedIdentities": { "/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identity-name>": { "clientId": "<client-id>", "principalId": "<principal-id>" } } }, "identityProfile": { "kubeletidentity": { "clientId": "<client-id>", "objectId": "<object-id>", "resourceId": "/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<kubelet-identity-name>" } },
Обновление существующего кластера для использования управляемого удостоверения kubelet
Чтобы обновить существующий кластер для использования управляемого удостоверения kubelet, сначала получите текущее управляемое удостоверение уровня управления для кластера AKS.
Предупреждение
Обновление управляемых удостоверений kubelet обновляет пулы узлов вашего кластера AKS. Перед выполнением этих действий убедитесь, что у вас правильно настроены конфигурации доступности, такие как бюджеты прерываний Pod, чтобы избежать сбоев рабочей нагрузки. Также можно выполнить обновление во время периода обслуживания.
Убедитесь, что кластер AKS использует управляемое удостоверение, назначаемое пользователем, с помощью команды
az aks show.az aks show \ --resource-group <resource-group-name> \ --name <aks-cluster-name> \ --query "servicePrincipalProfile"Если кластер использует управляемое удостоверение, выходные данные содержат
clientIdсо значением msi. Если кластер использует служебный принципал, отображается идентификатор объекта. Например:# The cluster is using a managed identity. { "clientId": "msi" }Убедившись, что кластер использует управляемое удостоверение, с помощью команды
az aks showнайдите идентификатор ресурса управляемого удостоверения.az aks show --resource-group <resource-group-name> \ --name <aks-cluster-name> \ --query "identity"Для управляемого удостоверения, назначаемого пользователем, выходные данные должны выглядеть примерно так:
{ "principalId": null, "tenantId": null, "type": "UserAssigned", "userAssignedIdentities": <identity-resource-id> "clientId": "<client-id>", "principalId": "<principal-id>" },Обновите кластер с использованием ваших существующих удостоверений с помощью команды
az aks update. Укажите идентификатор ресурса управляемого удостоверения, назначаемого пользователем, для плоскости управления для аргументаassign-identity. Укажите идентификатор ресурса управляемого удостоверения kubelet для аргументаassign-kubelet-identity.az aks update \ --resource-group <resource-group-name> \ --name <aks-cluster-name> \ --enable-managed-identity \ --assign-identity <identity-resource-id> \ --assign-kubelet-identity <kubelet-identity-resource-id>Результат при успешном обновлении кластера, используя ваше собственное управляемое удостоверение kubelet, должен выглядеть следующим образом:
"identity": { "principalId": null, "tenantId": null, "type": "UserAssigned", "userAssignedIdentities": { "/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identity-name>": { "clientId": "<client-id>", "principalId": "<principal-id>" } } }, "identityProfile": { "kubeletidentity": { "clientId": "<client-id>", "objectId": "<object-id>", "resourceId": "/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<kubelet-identity-name>" } },
Узнайте свойства управляемого удостоверения kubelet
Получите свойства управляемого удостоверения kubelet с помощью
az aks showкоманды и запроса к свойствуidentityProfile.kubeletidentity.az aks show \ --name <aks-cluster-name> \ --resource-group <resource-group-name> \ --query "identityProfile.kubeletidentity"
Следующие шаги
- Используйте шаблоны Azure Resource Manager для создания кластера с включённой поддержкой управляемых учетных данных.
- Узнайте, как использовать kubelogin для всех поддерживаемых методов проверки подлинности Microsoft Entra в AKS.