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.
In diesem Artikel wird erläutert, wie Sie eine vordefinierte kubelet verwaltete Identität für einen neuen oder vorhandenen AKS-Cluster aktivieren, die Eigenschaften der verwalteten Kubelet-Identität abrufen und eine Rollenzuweisung für die verwaltete Kubelet-Identität hinzufügen.
Voraussetzungen
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.
Legen Sie Ihr Abonnement mit dem
az account setBefehl als aktuelles aktives Abonnement fest.az account set --subscription <subscription-id>
Eine vorhandene Azure-Ressourcengruppe. Wenn Sie keins haben, können Sie einen mit dem
az group createBefehl erstellen.az group create \ --name <resource-group-name> \ --location <location>
- Azure CLI Version 2.26.0 oder höher installiert. Führen Sie
az --versionaus, um die Version zu ermitteln. Wenn Sie eine Installation oder ein Upgrade durchführen müssen, finden Sie weitere Informationen unter Azure CLI installieren.
- Terraform lokal installiert. Installationsanweisungen finden Sie unter Install Terraform.
Einschränkungen
- Nachdem Sie einen Cluster mit einer verwalteten Identität erstellt haben, können Sie nicht zurück zu einem Dienstprinzipal wechseln.
- 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.- Sie können die angepasste Ressourcendefinition (CRD) AzurePodIdentityException so konfigurieren, dass Anfragen an den IMDS-Endpunkt, die von einem Pod stammen, der mit den in der CRD definierten Bezeichnungen übereinstimmt, ohne Verarbeitung in NMI als Proxy behandelt werden. 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 Microsoft Entra pod-verwalteten Identitäten in Azure Kubernetes Service (AKS). - Um eine Ausnahme zu konfigurieren, installieren Sie die mic-exception YAML.
- Sie können die angepasste Ressourcendefinition (CRD) AzurePodIdentityException so konfigurieren, dass Anfragen an den IMDS-Endpunkt, die von einem Pod stammen, der mit den in der CRD definierten Bezeichnungen übereinstimmt, ohne Verarbeitung in NMI als Proxy behandelt werden. Schließen Sie die Systempods mit der Bezeichnung
- Eine zuvor erstellte verwaltete Kubelet-Identität muss eine vom Benutzer zugewiesene verwaltete Identität sein.
- Die Regionen China East und China North in Microsoft Azure betrieben von 21Vianet werden nicht unterstützt.
Von Bedeutung
Alle Microsoft Defender for Cloud features werden am 18. August 2026 in der Azure-Region in China offiziell eingestellt. Aufgrund dieser bevorstehenden Einstellung können Kunden von Azure in China keine neuen Abonnements mehr in den Dienst integrieren. Ein neues Abonnement ist jedes Abonnement, das noch nicht in den Microsoft Defender for Cloud-Dienst vor dem 18. August 2025 integriert wurde, dem Datum der Einstellungsankündigung. Weitere Informationen zur Einstellung finden Sie unter Microsoft Defender for Cloud Deprecation in Microsoft Azure Operated by 21Vianet Announcement.
Kunden sollten mit ihren Kundenservicemitarbeitern für Microsoft Azure, betrieben von 21Vianet, zusammenarbeiten, um die Auswirkungen dieser Einstellung auf ihren eigenen Betrieb zu bewerten.
Überlegungen zur Aktualisierung von Clustern
Berücksichtigen Sie beim Aktualisieren eines 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 ordnungsgemäß festgelegt ist. Wenn Sie die Azure CLI nicht zum Ausführen des Migrationsvorgangs verwenden, müssen Sie die Berechtigung der Add-On-Identität selbst behandeln. Ein Beispiel für die Verwendung einer Azure Resource Manager (ARM)-Vorlage finden Sie unter Azure-Rollen zuweisen mit 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.
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 acrpull Rolle mithilfe des az role assignment create Befehls zu.
az role assignment create \
--assignee <kubelet-client-id> \
--role "acrpull" \
--scope "<acr-registry-id>"
Aktivieren einer verwalteten Kubelet-Identität in einem neuen AKS-Cluster
Erstellen Sie mithilfe des Befehls az aks create einen 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-keys
Eine 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:{ "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. Geben Sie die Ressourcen-ID der vom Benutzer zugewiesenen verwalteten Identität für die Steuerebene für denassign-identityParameter an. Geben Sie für den Parameterassign-kubelet-identitydie Ressourcen-ID der verwalteten Identität von Kubelet an.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 show und Abfragen über die Eigenschaft identityProfile.kubeletidentity ab.
az aks show \
--name <aks-cluster-name> \
--resource-group <resource-group-name> \
--query "identityProfile.kubeletidentity"
Erstellen der Terraform-Konfigurationsdatei
Terraform-Konfigurationsdateien definieren die Infrastruktur, die Terraform erstellt und verwaltet.
Erstellen Sie eine Datei namens
main.tf, und fügen Sie den folgenden Code hinzu, um die Terraform-Version zu definieren und den Azure-Anbieter anzugeben:terraform { required_version = ">= 1.0" required_providers { azurerm = { source = "hashicorp/azurerm" version = "~> 4.0" } } } provider "azurerm" { features {} }Fügen Sie den folgenden Code hinzu, um eine Azure-Ressourcengruppe zu
main.tferstellen. Sie können den Namen und den Speicherort der Ressourcengruppe nach Bedarf ändern.resource "azurerm_resource_group" "example" { name = "aks-rg" location = "East US" }
Erstellen eines AKS-Clusters mit einer vordefinierten kubelet verwalteten Identität mithilfe von Terraform
Fügen Sie den folgenden Code hinzu, um eine verwaltete Kubelet-Identität und einen AKS-Cluster zu main.tf erstellen, der die verwaltete Kubelet-Identität verwendet:
resource "azurerm_user_assigned_identity" "kubelet" {
name = "aks-kubelet-identity"
resource_group_name = azurerm_resource_group.example.name
location = azurerm_resource_group.example.location
}
resource "azurerm_kubernetes_cluster" "kubelet_identity" {
name = "aks-kubelet"
location = azurerm_resource_group.example.location
resource_group_name = azurerm_resource_group.example.name
dns_prefix = "akskubelet"
identity {
type = "UserAssigned"
identity_ids = [azurerm_user_assigned_identity.kubelet.id]
}
kubelet_identity {
client_id = azurerm_user_assigned_identity.kubelet.client_id
object_id = azurerm_user_assigned_identity.kubelet.principal_id
user_assigned_identity_id = azurerm_user_assigned_identity.kubelet.id
}
default_node_pool {
name = "system"
node_count = 1
vm_size = "Standard_DS2_v2"
}
}
Hinzufügen einer Rollenzuweisung für die verwaltete Kubelet-Identität mithilfe von Terraform
Fügen Sie den folgenden Code zu main.tf hinzu, um eine Rollenzuweisung für die verwaltete kubelet identity zu erstellen. In diesem Beispiel wird die AcrPull-Rolle der verwalteten Identität des Kubelet zugewiesen, um ihm Berechtigungen zum Abrufen von Images aus der Azure Container Registry (ACR) zu erteilen. Die Rollenzuweisung ist auf die Ressourcengruppe eingegrenzt.
Hinweis
Weisen Sie in Produktionsszenarien die AcrPull-Rolle im Bereich Azure Container Registry anstelle der Ressourcen-Gruppe zu.
resource "azurerm_role_assignment" "kubelet_acr_pull" {
scope = azurerm_resource_group.example.id
role_definition_name = "AcrPull"
principal_id = azurerm_user_assigned_identity.kubelet.principal_id
}
Initialisieren Sie Terraform
Initialisieren Sie Terraform im Verzeichnis, das Ihre main.tf Datei enthält, mithilfe des terraform init Befehls. Dieser Befehl lädt den Azure-Anbieter herunter, der zum Verwalten von Azure-Ressourcen mit Terraform erforderlich ist.
terraform init
Terraform-Ausführungsplan erstellen
Erstellen Sie mit dem Befehl „terraform plan“ einen Terraform-Ausführungsplan. Dieser Befehl zeigt Ihnen die Ressourcen, die Terraform in Ihrem Azure-Abonnement erstellen oder ändern wird.
terraform plan
Terraform-Konfiguration anwenden
Wenden Sie nach der Überprüfung und Bestätigung des Ausführungsplans die Terraform-Konfiguration mit dem terraform apply Befehl an. Mit diesem Befehl werden die in Ihrer Datei in Ihrem main.tf Azure-Abonnement definierten Ressourcen erstellt oder geändert.
terraform apply
Überprüfen Sie die Terraform-Bereitstellung
Nachdem Sie die Terraform-Konfiguration angewendet haben, können Sie die Bereitstellung mit dem Befehl az aks show und dem Parameter --query überprüfen, um die Ausgabe zu filtern und die Identitätsinformationen anzuzeigen. Beispiel:
az aks show \
--name <cluster-name> \
--resource-group <resource-group> \
--query identity.type \
--output tsv
Verwandte Inhalte
Weitere Informationen zu verwalteten Identitäten in AKS finden Sie in den folgenden Artikeln:
- Übersicht über verwaltete Identitäten in Azure Kubernetes Service (AKS)
- Verwenden einer vom System zugewiesenen verwalteten Identität in AKS
- Verwenden einer vom Benutzer zugewiesenen verwalteten Identität in AKS
- Verwenden von Kubelogin zum Authentifizieren von Benutzern in Azure Kubernetes Service (AKS)