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 vom System zugewiesene verwaltete Identität auf einem neuen oder vorhandenen AKS-Cluster aktivieren, die Prinzipal-ID der vom System zugewiesenen verwalteten Identität abrufen und eine Rollenzuweisung für die vom System zugewiesene verwaltete 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.23.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. - Um einen vorhandenen Cluster für die Verwendung einer vom System zugewiesenen verwalteten Identität zu aktualisieren, benötigen Sie Azure CLI, Version 2.49.0 oder höher, installiert.
- 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
- AKS unterstützt die Verwendung einer systemseitig zugewiesenen verwalteten Identität bei Verwendung einer benutzerdefinierten privaten DNS-Zone nicht.
Ü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.
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 create einen AKS-Cluster.
az aks create \
--resource-group <resource-group-name> \
--name <aks-cluster-name> \
--generate-ssh-keys
Aktualisieren eines vorhandenen Clusters zur Verwendung einer vom System 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 update Befehls mit dem --enable-managed-identity Parameter.
az aks update \
--resource-group <resource-group-name> \
--name <aks-cluster-name> \
--enable-managed-identity
Nachdem Sie den Cluster so aktualisiert haben, dass anstelle eines Dienstprinzipals eine vom System zugewiesene verwaltete Identität verwendet wird, verwenden die Steuerebene und die Pods die vom System zugewiesene verwaltete Identität für die Autorisierung, wenn sie auf andere Dienste in Azure zugreifen. 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-only auf 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 show verwenden.
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
Hinweis
Für ein virtuelles Netzwerk (VNet), einen angeschlossenen Azure-Datenträger, eine statische IP-Adresse oder eine Routing-Tabelle außerhalb der Standard-Worker-Node-Ressourcengruppe müssen Sie der angepassten Ressourcengruppe die Rolle Network Contributor zuweisen.
Weisen Sie der vom System zugewiesenen verwalteten Identität mithilfe des Befehls az role assignment create eine Azure RBAC-Rolle zu. 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 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 vom System zugewiesenen verwalteten Identität mithilfe von Terraform
Fügen Sie den folgenden Code zu main.tf hinzu, um einen AKS-Cluster mit einer vom System zugewiesenen verwalteten Identität zu erstellen.
resource "azurerm_kubernetes_cluster" "system_assigned" {
name = "aks-system"
location = azurerm_resource_group.example.location
resource_group_name = azurerm_resource_group.example.name
dns_prefix = "akssystem"
identity {
type = "SystemAssigned"
}
default_node_pool {
name = "system"
node_count = 1
vm_size = "Standard_DS2_v2"
}
}
Hinzufügen einer Rollenzuweisung für eine vom System zugewiesene verwaltete Identität mithilfe von Terraform
Fügen Sie den folgenden Code hinzu, um eine Rollenzuweisung für die systemzugewiesene verwaltete Identität zu main.tf zu erstellen. In diesem 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.
resource "azurerm_role_assignment" "system_assigned_network_contributor" {
scope = azurerm_resource_group.example.id
role_definition_name = "Network Contributor"
principal_id = azurerm_kubernetes_cluster.system_assigned.identity[0].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 Benutzer zugewiesenen verwalteten Identität in AKS
- Verwenden einer bereits erstellten verwalteten Kubelet-Identität in AKS
- Verwenden von Kubelogin zum Authentifizieren von Benutzern in Azure Kubernetes Service (AKS)