Używanie jednostki usługi z usługą Azure Kubernetes Service (AKS)

Klaster usługi AKS wymaga jednostki usługi Microsoft Entra lub tożsamości zarządzanej w celu dynamicznego tworzenia innych zasobów platformy Azure, takich jak usługa Azure Load Balancer lub usługa Azure Container Registry (ACR, Azure Load Balancer lub Azure Container Registry).

Uwaga

Zalecamy używanie tożsamości zarządzanych do uwierzytelniania za pomocą innych zasobów na platformie Azure i jest to domyślna metoda uwierzytelniania dla klastra usługi AKS. Aby uzyskać więcej informacji na temat używania tożsamości zarządzanej z klastrem, zobacz Używanie tożsamości zarządzanej przypisanej przez system.

W tym artykule przedstawiono sposób tworzenia i używania jednostki usługi dla klastrów usługi AKS.

Zanim rozpoczniesz

Aby utworzyć jednostkę usługi Microsoft Entra, musisz mieć uprawnienia do rejestrowania aplikacji w dzierżawie firmy Microsoft Entra i przypisania aplikacji do roli w ramach subskrypcji. Jeśli nie masz niezbędnych uprawnień, musisz poprosić administratora usługi Microsoft Entra ID lub administratora subskrypcji o przypisanie niezbędnych uprawnień lub wstępne utworzenie jednostki usługi do użycia z klastrem usługi AKS.

Jeśli używasz jednostki usługi z innej dzierżawy firmy Microsoft Entra, istnieją inne zagadnienia dotyczące uprawnień dostępnych podczas wdrażania klastra. Być może nie masz odpowiednich uprawnień do odczytywania i zapisywania informacji o katalogu. Aby uzyskać więcej informacji, zobacz Jakie są domyślne uprawnienia użytkownika w identyfikatorze Entra firmy Microsoft?

Wymagania wstępne

  • Jeśli używasz interfejsu wiersza polecenia platformy Azure, potrzebujesz interfejsu wiersza polecenia platformy Azure w wersji 2.0.59 lub nowszej. Uruchom polecenie az --version, aby dowiedzieć się, jaka wersja jest używana. Jeśli konieczna będzie instalacja lub uaktualnienie, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.
  • Jeśli używasz programu Azure PowerShell, potrzebujesz programu Azure PowerShell w wersji 5.0.0 lub nowszej. Uruchom polecenie Get-InstalledModule -Name Az, aby dowiedzieć się, jaka wersja jest używana. Jeśli musisz zainstalować lub uaktualnić, zobacz Instalowanie modułu Azure Az programu PowerShell.

Ręczne tworzenie jednostki usługi

  1. Utwórz jednostkę usługi przy użyciu az ad sp create-for-rbac polecenia .

    az ad sp create-for-rbac --name myAKSClusterServicePrincipal
    

    Dane wyjściowe powinny być podobne do następujących przykładowych danych wyjściowych:

    {
      "appId": "559513bd-0c19-4c1a-87cd-851a26afd5fc",
      "displayName": "myAKSClusterServicePrincipal",
      "name": "http://myAKSClusterServicePrincipal",
      "password": "e763725a-5eee-40e8-a466-dc88d980f415",
      "tenant": "72f988bf-86f1-41af-91ab-2d7cd011db48"
    }
    
  2. Skopiuj wartości dla appId i password z danych wyjściowych. Są one używane podczas tworzenia klastra usługi AKS w następnej sekcji.

Określanie jednostki usługi dla klastra usługi AKS

  • Użyj istniejącej jednostki usługi dla nowego klastra usługi AKS przy użyciu az aks create polecenia i użyj --service-principal parametrów i --client-secret , aby określić appId wartości i password z danych wyjściowych odebranych w poprzedniej sekcji.

    az aks create \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --service-principal <appId> \
        --client-secret <password>
    

    Uwaga

    Jeśli używasz istniejącej jednostki usługi z dostosowanym wpisem tajnym, upewnij się, że wpis tajny nie jest dłuższy niż 190 bajtów.

Delegowanie dostępu do innych zasobów platformy Azure

Aby uzyskać dostęp do innych zasobów, możesz użyć jednostki usługi dla klastra usługi AKS. Jeśli na przykład chcesz wdrożyć klaster usługi AKS w istniejącej podsieci sieci wirtualnej platformy Azure lub połączyć się z usługą Azure Container Registry (ACR), musisz delegować dostęp do tych zasobów do jednostki usługi. Wypełnienie uprawnienia do klastra przy użyciu tożsamości zarządzanej przypisanej przez system może potrwać 60 minut.

  • Utwórz przypisanie roli przy użyciu az role assignment create polecenia . Przypisz element appId do określonego zakresu, takiego jak grupa zasobów lub zasób sieci wirtualnej. Rola definiuje uprawnienia, które ma jednostka usługi w zasobie.

    Uwaga

    Element --scope dla zasobu musi być pełnym identyfikatorem zasobu, takim jak /subscriptions/<guid>/resourceGroups/myResourceGroup lub /subscriptions/guid>/<resourceGroups/myResourceGroupVnet/providers/Microsoft.Network/virtualNetworks/myVnet.

    az role assignment create --assignee <appId> --scope <resourceScope> --role Contributor
    

W poniższych sekcjach opisano typowe delegowanie, które może być konieczne do przypisania.

Azure Container Registry

Jeśli używasz usługi Azure Container Registry (ACR) jako magazynu obrazów kontenera, musisz udzielić uprawnień jednostce usługi dla klastra usługi AKS w celu odczytywania i ściągania obrazów. Zalecamy użycie az aks create polecenia or az aks update w celu zintegrowania z rejestrem i przypisania odpowiedniej roli dla jednostki usługi. Aby uzyskać szczegółowe instrukcje, zobacz Uwierzytelnianie za pomocą usługi Azure Container Registry z usługi Azure Kubernetes Service.

Sieć

Możesz użyć zaawansowanych funkcji sieciowych, w przypadku których sieć wirtualna i podsieć lub publiczne adresy IP znajdują się w innej grupie zasobów. Przypisz wbudowaną rolę Współautor sieci w podsieci w sieci wirtualnej. Alternatywnie możesz utworzyć rolę niestandardową z uprawnieniami dostępu do zasobów sieciowych w tej grupie zasobów. Aby uzyskać więcej informacji, zobacz Uprawnienia usługi AKS.

Storage

Jeśli musisz uzyskać dostęp do istniejących zasobów dysku w innej grupie zasobów, przypisz jeden z następujących zestawów uprawnień roli:

Azure Container Instances

Jeśli używasz wirtualnego rozwiązania Kubelet do integracji z usługą AKS i wybierzesz uruchamianie usługi Azure Container Instances (ACI) w grupie zasobów niezależnie od klastra usługi AKS, jednostka usługi klastra usługi AKS musi mieć przyznane uprawnienia Współautor w grupie zasobów usługi ACI.

Inne kwestie wymagające rozważenia

W przypadku korzystania z usługi AKS i jednostki usługi Microsoft Entra należy wziąć pod uwagę następujące kwestie:

  • Jednostka usługi dla platformy Kubernetes jest częścią konfiguracji klastra, ale nie używaj tej tożsamości do wdrożenia klastra.
  • Domyślnie poświadczenia jednostki usługi są ważne przez jeden rok. Poświadczenia jednostki usługi można aktualizować lub obracać w dowolnym momencie.
  • Każda jednostka usługi jest skojarzona z aplikacją firmy Microsoft Entra. Jednostkę usługi dla klastra Kubernetes można skojarzyć z dowolną prawidłową nazwą aplikacji Firmy Microsoft Entra (na przykład: https://www.contoso.org/example). Adres URL dla aplikacji nie musi być rzeczywistym punktem końcowym.
  • Podczas określania identyfikatora klienta jednostki usługi użyj wartości appId.
  • Na maszynach wirtualnych węzła agenta w klastrze Kubernetes poświadczenia jednostki usługi są przechowywane w /etc/kubernetes/azure.json pliku.
  • Usunięcie klastra usługi AKS utworzonego az aks create przy użyciu polecenia spowoduje, że utworzona jednostka usługi nie zostanie automatycznie usunięta.
    • Aby usunąć jednostkę usługi, wykonaj zapytanie dotyczące parametru servicePrincipalProfile.clientId klastra i usuń je przy użyciu az ad sp delete polecenia . Zastąp wartości parametru -g dla nazwy grupy zasobów i -n parametru nazwy klastra:

      az ad sp delete --id $(az aks show -g myResourceGroup -n myAKSCluster --query servicePrincipalProfile.clientId -o tsv)
      

Rozwiązywanie problemów

Interfejs wiersza polecenia platformy Azure buforuje poświadczenia jednostki usługi dla klastrów usługi AKS. Jeśli te poświadczenia wygasną, podczas wdrażania klastra usługi AKS wystąpią błędy. Jeśli uruchomisz az aks create polecenie i zostanie wyświetlony komunikat o błędzie podobny do następującego, może to wskazywać na problem z poświadczeniami jednostki usługi w pamięci podręcznej:

Operation failed with status: 'Bad Request'.
Details: The credentials in ServicePrincipalProfile were invalid. Please see https://aka.ms/aks-sp-help for more details.
(Details: adal: Refresh request failed. Status Code = '401'.

Datę wygaśnięcia poświadczeń jednostki usługi można sprawdzić przy użyciu az ad app credential list polecenia z zapytaniem "[].endDateTime" .

az ad app credential list --id <app-id> --query "[].endDateTime" -o tsv

Domyślny czas wygasania poświadczeń jednostki usługi wynosi jeden rok. Jeśli poświadczenia są starsze niż rok, możesz zresetować istniejące poświadczenia lub utworzyć nową jednostkę usługi.

Ogólne rozwiązywanie problemów z interfejsem wiersza polecenia platformy Azure

Interfejs wiersza polecenia platformy Azure może działać w kilku środowiskach powłoki, ale z niewielkimi odmianami formatu. Jeśli masz nieoczekiwane wyniki za pomocą poleceń interfejsu wiersza polecenia platformy Azure, zobacz Jak pomyślnie używać interfejsu wiersza polecenia platformy Azure.

Następne kroki

Aby uzyskać więcej informacji na temat jednostek usługi Microsoft Entra, zobacz Obiekty aplikacji i jednostki usługi.

Aby uzyskać informacje na temat sposobu aktualizowania poświadczeń, zobacz Aktualizowanie lub obracanie poświadczeń dla jednostki usługi w usłudze AKS.