Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule wyjaśniono, jak włączyć tożsamość zarządzaną przypisaną przez system w nowym lub istniejącym klastrze usługi AKS, uzyskać identyfikator podmiotu zabezpieczeń tożsamości zarządzanej przypisanej przez system i dodać przypisanie roli dla tożsamości zarządzanej przypisanej przez system.
Wymagania wstępne
Przeczytaj Przegląd tożsamości zarządzanych w usłudze Azure Kubernetes Service (AKS) aby zrozumieć różne typy tożsamości zarządzanych dostępnych w usłudze AKS i jak można ich używać do bezpiecznego uzyskiwania dostępu do zasobów Azure.
Ustaw subskrypcję jako aktywną subskrypcję przy użyciu polecenia
az account set.az account set --subscription <subscription-id>
Istniejąca grupa zasobów platformy Azure. Jeśli go nie masz, możesz go utworzyć przy użyciu
az group createpolecenia .az group create \ --name <resource-group-name> \ --location <location>
- Zainstalowany interfejs wiersza polecenia platformy Azure w wersji 2.23.0 lub nowszej. Uruchom
az --version, aby znaleźć wersję. Jeśli musisz zainstalować lub uaktualnić, zobacz Install Azure CLI. - Aby zaktualizować istniejący klaster do używania tożsamości zarządzanej przypisanej przez system, musisz zainstalować interfejs wiersza polecenia platformy Azure w wersji 2.49.0 lub nowszej.
- Narzędzie Terraform zainstalowane lokalnie. Aby uzyskać instrukcje dotyczące instalacji, zobacz Instalowanie programu Terraform.
Ograniczenia
- Po utworzeniu klastra z tożsamością zarządzaną nie można wrócić do używania zasady usługi.
- Przenoszenie lub migrowanie klastra z włączoną obsługą tożsamości zarządzanej do innej dzierżawy nie jest obsługiwane.
- Jeśli klaster ma włączoną tożsamość zarządzaną Microsoft Entra dla zasobników (
aad-pod-identity), tożsamość zarządzana przez węzły (Node-Managed Identity, NMI) modyfikuje tabele ip węzłów w celu przechwycenia wywołań do punktu końcowego Azure Instance Metadata Service (IMDS). Ta konfiguracja oznacza, że każde żądanie skierowane do punktu końcowego IMDS jest przechwytywane przez NMI, nawet jeśli określony pod nie używa elementuaad-pod-identity.- Można skonfigurować niestandardową definicję zasobu AzurePodIdentityException (CRD), aby określić, że żądania do punktu końcowego IMDS pochodzące z zasobników pasujących do etykiet zdefiniowanych w CRD powinny być przekierowane bez żadnego przetwarzania w NMI. Wyklucz zasobniki systemowe z etykietą
kubernetes.azure.com/managedby: aksw przestrzeni nazw kube-system, konfigurując CRD AzurePodIdentityException waad-pod-identity. Aby uzyskać więcej informacji, zobacz Używanie tożsamości zarządzanych przez pod w Microsoft Entra w usłudze Azure Kubernetes Service (AKS). - Aby skonfigurować wyjątek, zainstaluj mic-exception YAML.
- Można skonfigurować niestandardową definicję zasobu AzurePodIdentityException (CRD), aby określić, że żądania do punktu końcowego IMDS pochodzące z zasobników pasujących do etykiet zdefiniowanych w CRD powinny być przekierowane bez żadnego przetwarzania w NMI. Wyklucz zasobniki systemowe z etykietą
- Usługa AKS nie obsługuje korzystania z tożsamości zarządzanej przypisanej przez system w przypadku korzystania z niestandardowej prywatnej strefy DNS.
Zagadnienia dotyczące aktualizacji klastra
Podczas aktualizowania klastra należy wziąć pod uwagę następujące informacje:
- Aktualizacja działa tylko wtedy, gdy istnieje aktualizacja dysku VHD do korzystania. Jeśli używasz najnowszego wirtualnego dysku twardego, musisz poczekać, aż następny wirtualny dysk twardy będzie dostępny w celu przeprowadzenia aktualizacji.
- Interfejs wiersza polecenia platformy Azure zapewnia, że uprawnienie dodatku jest poprawnie ustawione po przeprowadzeniu migracji. Jeśli nie używasz Azure CLI do przeprowadzenia operacji migrowania, musisz samodzielnie zarządzać uprawnieniami tożsamości dodatku. Aby zapoznać się z przykładem użycia szablonu Azure Resource Manager (ARM), zobacz Przypisywanie ról Azure za pomocą szablonów ARM.
- Jeśli twój klaster używał
--attach-acrdo pobierania obrazów z Azure Container Registry (ACR), należy uruchomić polecenieaz aks update --resource-group <resource-group-name> --name <aks-cluster-name> --attach-acr <acr-resource-id>po zaktualizowaniu klastra, aby umożliwić nowo utworzonemu kubeletowi używanemu do tożsamości zarządzanej uzyskanie uprawnień do pobierania z ACR. W przeciwnym razie nie będzie można pobrać z ACR po aktualizacji.
Włącz tożsamość zarządzaną przypisywaną przez system w nowym klastrze AKS
Tożsamość zarządzana przypisana przez system jest domyślnie włączona podczas tworzenia nowego klastra usługi AKS.
Utwórz klaster AKS przy użyciu polecenia az aks create.
az aks create \
--resource-group <resource-group-name> \
--name <aks-cluster-name> \
--generate-ssh-keys
Aktualizowanie istniejącego klastra w celu używania tożsamości zarządzanej przypisanej przez system
Zaktualizuj istniejący klaster usługi AKS z jednostki usługi do przypisanej przez system tożsamości zarządzanej az aks update przy użyciu polecenia z parametrem --enable-managed-identity .
az aks update \
--resource-group <resource-group-name> \
--name <aks-cluster-name> \
--enable-managed-identity
Po zaktualizowaniu klastra do używania tożsamości zarządzanej przypisanej przez system zamiast jednostki usługi, zarówno płaszczyzna kontrolna, jak i zasobniki używają tożsamości zarządzanej przypisanej przez system do autoryzacji podczas uzyskiwania dostępu do innych usług w Azure. Rozwiązanie Kubelet kontynuuje korzystanie z jednostki usługi, dopóki nie uaktualnisz również puli agentów. Aby zaktualizować tożsamość zarządzaną, możesz użyć az aks nodepool upgrade --resource-group <resource-group-name> --cluster-name <aks-cluster-name> --name <node-pool-name> --node-image-only polecenia w węzłach. Uaktualnienie puli węzłów powoduje przestój klastra usługi AKS, ponieważ węzły w pulach węzłów są zablokowane, czyszczone i ponownie obrazowane.
Pobierz główny identyfikator tożsamości zarządzanej przypisanej przez system
Pobierz główny identyfikator dla systemowej tożsamości zarządzanej przypisanej do klastra przy użyciu polecenia az aks show.
CLIENT_ID=$(az aks show \
--name <aks-cluster-name> \
--resource-group <resource-group-name> \
--query identity.principalId \
--output tsv)
Dodaj przypisanie roli dla tożsamości zarządzanej przez system
Uwaga / Notatka
W przypadku sieci wirtualnej, dysku platformy Azure, statycznego adresu IP lub tabeli tras poza domyślną grupą zasobów węzła procesu roboczego należy przypisać rolę Network Contributor na niestandardowej grupie zasobów.
Przypisz rolę RBAC platformy Azure do tożsamości zarządzanej przypisanej przez system przy użyciu polecenia az role assignment create. W poniższym przykładzie przypisano rolę Współautor sieci do tożsamości zarządzanej przypisanej przez system. Przypisanie roli jest ograniczone do grupy zasobów zawierającej sieć wirtualną.
az role assignment create \
--assignee <client-id> \
--role "Network Contributor" \
--scope <custom-resource-group-id>
Uwaga / Notatka
Propagacja uprawnień udzielonych tożsamości zarządzanej klastra może potrwać do 60 minut.
Tworzenie pliku konfiguracji narzędzia Terraform
Pliki konfiguracji narzędzia Terraform definiują infrastrukturę, którą program Terraform tworzy i zarządza.
Utwórz plik o nazwie
main.tfi dodaj następujący kod, aby zdefiniować wersję programu Terraform i określić dostawcę platformy Azure:terraform { required_version = ">= 1.0" required_providers { azurerm = { source = "hashicorp/azurerm" version = "~> 4.0" } } } provider "azurerm" { features {} }Dodaj następujący kod do
main.tf, aby utworzyć grupę zasobów platformy Azure. W razie potrzeby możesz zmienić nazwę i lokalizację grupy zasobów.resource "azurerm_resource_group" "example" { name = "aks-rg" location = "East US" }
Tworzenie klastra usługi AKS z tożsamością zarządzaną przypisaną przez system przy użyciu narzędzia Terraform
Dodaj następujący kod do main.tf, aby utworzyć klaster usługi AKS z tożsamością zarządzaną przydzieloną przez system.
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"
}
}
Dodawanie przypisania roli dla tożsamości zarządzanej przypisanej przez system przy użyciu narzędzia Terraform
Dodaj następujący kod do main.tf, aby utworzyć przypisanie roli dla tożsamości zarządzanej przypisanej przez system. W tym przykładzie przypisano rolę Współautor sieci do tożsamości zarządzanej przypisanej przez system. Przypisanie roli jest ograniczone do grupy zasobów zawierającej sieć wirtualną.
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
}
Inicjowanie narzędzia Terraform
Zainicjuj Terraform w katalogu zawierającym plik main.tf przy użyciu polecenia terraform init. To polecenie pobiera dostawcę platformy Azure wymaganego do zarządzania zasobami platformy Azure za pomocą narzędzia Terraform.
terraform init
Tworzenie planu wykonania programu Terraform
Utwórz plan wykonywania narzędzia Terraform przy użyciu terraform plan polecenia . To polecenie pokazuje zasoby, które narzędzie Terraform utworzy lub zmodyfikuje w ramach subskrypcji platformy Azure.
terraform plan
Stosowanie konfiguracji narzędzia Terraform
Po przejrzeniu i potwierdzeniu planu wykonania zastosuj konfigurację narzędzia Terraform przy użyciu terraform apply polecenia . To polecenie tworzy lub modyfikuje zasoby zdefiniowane w pliku w main.tf ramach subskrypcji platformy Azure.
terraform apply
Weryfikowanie wdrożenia narzędzia Terraform
Po zastosowaniu konfiguracji narzędzia Terraform możesz zweryfikować wdrożenie przy użyciu az aks show polecenia z parametrem --query , aby odfiltrować dane wyjściowe i wyświetlić informacje o tożsamości. Przykład:
az aks show \
--name <cluster-name> \
--resource-group <resource-group> \
--query identity.type \
--output tsv
Treści powiązane
Aby dowiedzieć się więcej o tożsamościach zarządzanych w usłudze AKS, zobacz następujące artykuły:
- Omówienie tożsamości zarządzanych w usłudze Azure Kubernetes Service (AKS)
- Używanie tożsamości zarządzanej przypisanej przez użytkownika w usłudze AKS
- Używanie wstępnie utworzonej tożsamości zarządzanej kubelet w usłudze AKS
- Używanie narzędzia kubelogin do uwierzytelniania użytkowników w usłudze Azure Kubernetes Service (AKS)