Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieser Artikel enthält schrittweise Anleitungen zum Aktivieren und Verwenden einer vom System zugewiesenen, vom Benutzer zugewiesenen oder vorab erstellten verwalteten Kubelet-Identität in Azure Kubernetes Service (AKS).
Voraussetzungen für verwaltete AKS-Identitäten
Lesen Sie die Übersicht über verwaltete Identitäten in Azure Kubernetes Service (AKS), um die verschiedenen Typen von verwalteten Identitäten zu verstehen, die in AKS verfügbar sind und wie Sie diese verwenden können, um sicher auf Azure-Ressourcen zuzugreifen.
Bevor Sie die Beispiele in diesem Artikel ausführen, legen Sie Ihr Abonnement mithilfe des
az account setBefehls als aktuelles aktives Abonnement fest.az account set --subscription <subscription-id>Erstellen Sie eine Azure-Ressourcengruppe, wenn Sie noch keines haben, indem Sie den
az group createBefehl aufrufen.az group create \ --name <resource-group-name> \ --location <location>
Mindestanforderungen für die Azure CLI-Version
- Vergewissern Sie sich, dass mindestens die Version 2.23.0 der Azure CLI installiert ist. Führen Sie
az --versionaus, um die Version zu ermitteln. Informationen zum Durchführen einer Installation oder eines Upgrades finden Sie bei Bedarf unter Installieren der Azure CLI. - Um eine zuvor erstellte Kubelet-verwaltete Identität zu verwenden, müssen Sie Azure CLI Version 2.26.0 oder höher installiert haben.
- Zum Aktualisieren eines vorhandenen Clusters für die Verwendung einer systemseitig zugewiesenen verwalteten Identität oder einer benutzerseitig zugewiesenen verwalteten Identität muss Azure CLI, Version 2.49.0 oder höher installiert sein.
Einschränkungen
Das Verschieben oder Migrieren von Clustern mit aktivierter verwalteter Identität zu einem anderen Mandanten wird nicht unterstützt.
Wenn für den Cluster die verwaltete Microsoft Entra-Podidentität (
aad-pod-identity) aktiviert wurde, werden die iptables der Knoten von NMI-Pods (Node Managed Identity) so geändert, dass Aufrufe des Azure Instance Metadata-Endpunkts (IMDS) abgefangen werden. Diese Konfiguration bedeutet, dass jede Anforderung, die an den IMDS-Endpunkt gerichtet ist, von NMI abgefangen wird, auch wenn ein bestimmter Podaad-pod-identitynicht verwendet.Die benutzerdefinierte AzurePodIdentityException-Ressourcendefinition (CRD) kann so konfiguriert werden, das sie angibt, dass an den IMDS-Endpunkt gerichtete Anforderungen, die von einem Pod stammen, der in der CRD definierte Bezeichnungen abgleicht, ohne Verarbeitung in NMI über einen Proxy zu senden sind. Schließen Sie die Systempods mit der Bezeichnung
kubernetes.azure.com/managedby: aksim Namespace kube-system inaad-pod-identitydurch Konfigurieren der AzurePodIdentityException-CRD aus. Weitere Informationen finden Sie unter Verwenden von podseitig verwalteten Microsoft Entra-Identitäten in Azure Kubernetes Service.Installieren zur Konfiguration einer Ausnahme die YAML-Datei „mic-exception“.
AKS unterstützt die Verwendung einer systemseitig zugewiesenen verwalteten Identität bei Verwendung einer benutzerdefinierten privaten DNS-Zone nicht.
Die Regionen „USDOD, Mitte“, „USDOD, Osten“ und „USGov, Iowa“ in der Azure US Government-Cloud unterstützen das Erstellen eines Clusters mit einer benutzerseitig zugewiesenen verwalteten Identität nicht.
- Eine zuvor erstellte verwaltete Kubelet-Identität muss eine vom Benutzer zugewiesene verwaltete Identität sein.
- Die Regionen „China, Osten“ und „China, Norden“ werden in Microsoft Azure operated by 21Vianet nicht unterstützt.
Hinweis
Beachten Sie beim Aktualisieren Ihres Clusters die folgenden Informationen:
Eine Aktualisierung funktioniert nur, wenn ein VHD-Update verwendet werden kann. Wenn Sie die neueste VHD ausführen, müssen Sie warten, bis die nächste VHD verfügbar wird, um die Aktualisierung vorzunehmen.
Die Azure CLI stellt sicher, dass die Berechtigung Ihres Add-Ons nach der Migration richtig festgelegt ist. Wenn Sie nicht die Azure CLI zum Durchführen des Migrationsvorgangs verwenden, müssen Sie die Berechtigung der Add-On-Identität selbst festlegen. Ein Beispiel für die Verwendung einer ARM-Vorlage (Azure Resource Manager) finden Sie unter Zuweisen von Azure-Rollen mithilfe von ARM-Vorlagen.
Wenn Ihr Cluster
--attach-acrverwendete, um Images aus der Azure Container Registry (ACR) abzurufen, müssen Sie nach dem Aktualisieren Ihres Clusters denaz aks update --resource-group <resource-group-name> --name <aks-cluster-name> --attach-acr <acr-resource-id>Befehl ausführen, damit das neu erstellte Kubelet, das für die verwaltete Identität verwendet wird, die Berechtigung erhält, Images aus der ACR abzurufen. Andernfalls können Sie nach der Aktualisierung keinen Pull aus ACR ausführen.
Aktivieren einer vom System zugewiesenen verwalteten Identität auf einem AKS-Cluster
Aktivieren einer systemseitig zugewiesenen verwalteten Identität in einem neuen AKS-Cluster
Eine vom System zugewiesene verwaltete Identität ist standardmäßig aktiviert, wenn Sie einen neuen AKS-Cluster erstellen.
Erstellen Sie mit dem Befehl
az aks createeinen AKS-Cluster.az aks create \ --resource-group <resource-group-name> \ --name <aks-cluster-name> \ --generate-ssh-keys
Aktualisieren eines vorhandenen AKS-Clusters zur Verwendung einer systemseitig zugewiesenen verwalteten Identität
Aktualisieren Sie einen vorhandenen AKS-Cluster von einem Dienstprinzipal auf eine vom System zugewiesene verwaltete Identität mithilfe des
az aks updateBefehls mit dem--enable-managed-identityParameter.az aks update \ --resource-group <resource-group-name> \ --name <aks-cluster-name> \ --enable-managed-identityNachdem Sie den Cluster so aktualisiert haben, dass anstelle eines Dienstprinzipals eine systemseitig zugewiesene verwaltete Identität verwendet wird, verwenden die Steuerungsebene und Pods die systemseitig zugewiesene verwaltete Identität für die Autorisierung beim Zugriff auf andere Dienste in Azure. Kubelet verwendet weiterhin einen Dienstprinzipal, bis Sie für Ihren Agentpool auch ein Upgrade durchführen. Sie können den Befehl
az aks nodepool upgrade --resource-group <resource-group-name> --cluster-name <aks-cluster-name> --name <node-pool-name> --node-image-onlyauf Ihren Knoten verwenden, um auf eine verwaltete Identität zu aktualisieren. Ein Upgrade des Knotenpools verursacht Ausfallzeiten für Ihren AKS-Cluster, da die Knoten in den Knotenpools abgeriegelt, entleert und neu abgebildet werden.
Abrufen der Hauptkennung einer vom System zugewiesenen verwalteten Identität
Rufen Sie die Prinzipal-ID für die systemseitig zugewiesene verwaltete Identität des Clusters ab, indem Sie den Befehl
az aks showverwenden.CLIENT_ID=$(az aks show \ --name <aks-cluster-name> \ --resource-group <resource-group-name> \ --query identity.principalId \ --output tsv)
Hinzufügen einer Rollenzuweisung für eine systemseitig zugewiesene verwaltete Identität
Weisen Sie der vom System zugewiesenen verwalteten Identität mithilfe des
az role assignment createBefehls eine Azure RBAC-Rolle zu.Für ein VNet, einen angefügten Azure-Datenträger, eine statische IP-Adresse oder eine Routingtabelle, die sich außerhalb der standardmäßigen Workerknoten-Ressourcengruppe befinden, müssen Sie die
Network Contributor-Rolle für die benutzerdefinierte Ressourcengruppe zuweisen.Im folgenden Beispiel wird die Rolle "Netzwerkmitwirkender" der vom System zugewiesenen verwalteten Identität zugewiesen. Die Rollenzuweisung gilt für die Ressourcengruppe, die das VNet enthält.
az role assignment create \ --assignee <client-id> \ --role "Network Contributor" \ --scope <custom-resource-group-id>Hinweis
Es kann bis zu 60 Minuten dauern, bis die Berechtigungen, die der verwalteten Identität Ihres Clusters gewährt wurden, verteilt sind.
Erstellen einer benutzerseitig zugewiesenen verwalteten Identität
Wenn Sie noch nicht über eine Ressource der benutzerseitig zugewiesenen verwalteten Identität verfügen, erstellen Sie eine mithilfe des Befehls
az identity create.az identity create \ --name <identity-name> \ --resource-group <resource-group-name>Ihre Ausgabe sollte in etwa wie die folgende Beispielausgabe aussehen:
{ "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" }
Abrufen der Prinzipal-ID der benutzerseitig zugewiesenen verwalteten Identität
Rufen Sie die Principal-ID der vom Benutzer zugewiesenen verwalteten Identität mithilfe des
az identity showBefehls ab.CLIENT_ID=$(az identity show \ --name <identity-name> \ --resource-group <resource-group-name> \ --query principalId \ --output tsv)
Abrufen der Ressourcen-ID der benutzerseitig zugewiesenen verwalteten Identität
Rufen Sie die Ressourcen-ID der vom Benutzer zugewiesenen verwalteten Identität mithilfe des
az identity showBefehls ab.RESOURCE_ID=$(az identity show \ --name <identity-name> \ --resource-group <resource-group-name> \ --query id \ --output tsv)
Zuweisen einer Azure RBAC-Rolle zur benutzerseitig zugewiesenen verwalteten Identität
Fügen Sie mithilfe des
az role assignment createBefehls eine Rollenzuweisung für die vom Benutzer zugewiesene verwaltete Identität hinzu.Im folgenden Beispiel wird der benutzerseitig zugewiesenen verwalteten Identität die Rolle Key Vault-Geheimnisbenutzer zugewiesen, um ihr Berechtigungen für den Zugriff auf Geheimnisse in einem Schlüsseltresor zu gewähren. Die Rollenzuweisung ist auf die Schlüsseltresorressource festgelegt:
az role assignment create \ --assignee <client-id> \ --role "Key Vault Secrets User" \ --scope "<keyvault-resource-id>"Hinweis
Es kann bis zu 60 Minuten dauern, bis die Berechtigungen, die der verwalteten Identität Ihres Clusters gewährt wurden, verteilt sind.
Aktivieren einer vom Benutzer zugewiesenen verwalteten Identität auf einem AKS-Cluster
Aktivieren einer vom Benutzer zugewiesenen verwalteten Identität in einem neuen AKS-Cluster
Erstellen Sie einen AKS-Cluster mit der vom Benutzer zugewiesenen verwalteten Identität mithilfe des
az aks createBefehls. Fügen Sie den Parameter--assign-identityhinzu, und übergeben Sie die Ressourcen-ID für die benutzerseitig zugewiesene verwaltete Identität: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
Aktualisieren eines vorhandenen Clusters zur Verwendung einer benutzerseitig zugewiesenen verwalteten Identität
Aktualisieren Sie einen vorhandenen Cluster, um mithilfe des
az aks updateBefehls eine vom Benutzer zugewiesene verwaltete Identität zu verwenden. Fügen Sie den Parameter--assign-identityhinzu, und übergeben Sie die Ressourcen-ID für die benutzerseitig zugewiesene verwaltete Identität:az aks update \ --resource-group <resource-group-name> \ --name <cluster-name> \ --enable-managed-identity \ --assign-identity $RESOURCE_IDDie Ausgabe bei einer erfolgreichen Clusteraktualisierung zur Verwendung einer benutzerseitig zugewiesenen verwalteten Identität sollte der folgenden Beispielausgabe ähneln:
"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>" } } },Hinweis
Die Migration einer verwalteten Identität für die Steuerungsebene von systemseitig zu benutzerseitig zugewiesen führt nicht zu Ausfallzeiten für Steuerungsebene und Agentpools. Die Komponenten der Steuerungsebene verwenden weiterhin die alte systemseitig zugewiesene Identität bis zu mehreren Stunden bis zur nächsten Tokenaktualisierung.
Ermitteln, welchen Typ von verwalteter Identität ein Cluster verwendet
Überprüfen Sie, welche Art von verwalteter Identität Ihr Cluster mit dem
az aks showBefehl verwendet.az aks show \ --name <aks-cluster-name> \ --resource-group <resource-group-name> \ --query identity.type \ --output tsvWenn der Cluster eine verwaltete Identität verwendet, ist der Wert der type-Eigenschaft entweder SystemAssigned oder UserAssigned.
Wenn der Cluster einen Dienstprinzipal verwendet, ist der Wert der type-Eigenschaft NULL. Führen Sie gegebenenfalls ein Upgrade Ihres Clusters durch, um eine verwaltete Identität zu verwenden.
Erstellen einer verwalteten Kubelet-Identität
Sollten Sie über keine verwaltete Kubelet-Identität verfügen, erstellen Sie eine mit dem Befehl
az identity create.az identity create \ --name <kubelet-identity-name> \ --resource-group <resource-group-name>Ihre Ausgabe sollte in etwa wie die folgende Beispielausgabe aussehen:
{ "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" }
Zuweisen einer RBAC-Rolle zu der verwalteten Kubelet-Identität
Weisen Sie der verwalteten Kubelet-Identität die
acrpullRolle mithilfe desaz role assignment createBefehls zu.az role assignment create \ --assignee <kubelet-client-id> \ --role "acrpull" \ --scope "<acr-registry-id>"
Aktivieren einer verwalteten Kubelet-Identität in einem AKS-Cluster
Aktivieren einer verwalteten Kubelet-Identität in einem neuen AKS-Cluster
Erstellen Sie mithilfe des Befehls
az aks createeinen AKS-Cluster mit den vorhandenen Identitäten.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-keysEine erfolgreiche AKS-Clustererstellung unter Verwendung einer verwalteten Kubelet-Identität sollte zu einer ähnlichen Ausgabe wie der folgenden führen:
"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>" } },
Aktualisieren eines vorhandenen Clusters zur Verwendung einer verwalteten Kubelet-Identität
Um einen vorhandenen Cluster für die Verwendung der verwalteten Kubelet-Identität zu aktualisieren, rufen Sie zunächst die aktuelle verwaltete Identität der Steuerungsebene für Ihren AKS-Cluster ab.
Warnung
Durch die Aktualisierung der vom Kubelet verwalteten Identität werden die Knotenpools Ihres AKS-Clusters aktualisiert. Stellen Sie sicher, dass Sie die richtigen Verfügbarkeitskonfigurationen, wie z. B. Pod Disruption Budgets, konfiguriert haben, bevor Sie diesen Vorgang ausführen, um Unterbrechungen der Workload zu vermeiden, oder führen Sie diesen Vorgang während eines Wartungsfensters aus.
Bestätigen Sie mit dem Befehl
az aks show, dass Ihr AKS-Cluster die benutzerseitig zugewiesene verwaltete Identität verwendet.az aks show \ --resource-group <resource-group-name> \ --name <aks-cluster-name> \ --query "servicePrincipalProfile"Wenn Ihr Cluster eine verwaltete Identität verwendet, zeigt die Ausgabe
clientIdmit dem Wert msi an. Ein Cluster mit einem Dienstprinzipal zeigt eine Objekt-ID an. Beispiel:# The cluster is using a managed identity. { "clientId": "msi" }Nachdem Sie sich vergewissert haben, dass Ihr Cluster eine verwaltete Identität verwendet, suchen Sie die Ressourcen-ID der verwalteten Identität mit dem Befehl
az aks show.az aks show --resource-group <resource-group-name> \ --name <aks-cluster-name> \ --query "identity"Für eine benutzerseitig zugewiesene verwaltete Identität sollte Ihre Ausgabe ungefähr so aussehen wie die folgende Beispielausgabe:
{ "principalId": null, "tenantId": null, "type": "UserAssigned", "userAssignedIdentities": <identity-resource-id> "clientId": "<client-id>", "principalId": "<principal-id>" },Aktualisieren Sie mithilfe des Befehls
az aks updateIhren Cluster mit den vorhandenen Identitäten. Stellen Sie die Ressourcen-ID der benutzerseitig zugewiesenen verwalteten Identität für die Steuerebene für das Argumentassign-identitybereit. Stellen Sie die Ressourcen-ID der verwalteten Kubelet-Identität für das Argumentassign-kubelet-identitybereit.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>Die Ausgabe bei einer erfolgreichen Clusteraktualisierung unter Verwendung Ihrer eigenen verwalteten Kubelet-Identität sollte der folgenden Beispielausgabe ähneln:
"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>" } },
Abrufen der Eigenschaften der verwalteten Kubelet-Identität
Rufen Sie die Eigenschaften der verwalteten Kubelet-Identität mithilfe des Befehls
az aks showund Abfragen über die EigenschaftidentityProfile.kubeletidentityab.az aks show \ --name <aks-cluster-name> \ --resource-group <resource-group-name> \ --query "identityProfile.kubeletidentity"
Nächste Schritte
- Verwenden Sie Azure Resource Manager-Vorlagen zum Erstellen eines Clusters mit aktivierter verwalteter Identität.
- Erfahren Sie, wie Sie kubelogin für alle unterstützten Microsoft Entra-Authentifizierungsmethoden in AKS verwenden.