Udostępnij za pośrednictwem


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

Klaster AKS wymaga jednostki usługi Microsoft Entra lub tożsamości zarządzanej do 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).

Aby uzyskać optymalne zabezpieczenia i łatwość użycia, firma Microsoft zaleca używanie tożsamości zarządzanych, a nie jednostek usług w celu autoryzowania dostępu z klastra usługi AKS do innych zasobów na platformie Azure. Tożsamość zarządzana to specjalny typ jednostki usługi, który może służyć do uzyskiwania poświadczeń firmy Microsoft Entra bez konieczności zarządzania i zabezpieczania poświadczeń. Aby uzyskać więcej informacji na temat używania tożsamości zarządzanej z klastrem, zobacz Używanie tożsamości zarządzanej w usłudze AKS.

W tym artykule pokazano, jak utworzyć jednostkę usługi i używać jej z klastrami 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.

Tworzenie jednostki usługi

Utwórz jednostkę usługi przed utworzeniem klastra.

  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": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "displayName": "myAKSClusterServicePrincipal",
      "name": "http://myAKSClusterServicePrincipal",
      "password": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "tenant": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
    }
    
  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> \
        --generate-ssh-keys
    

    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, połącz się z usługą Azure Container Registry (ACR) lub kluczami dostępu lub wpisami tajnymi w magazynie kluczy z klastra, musisz delegować dostęp do tych zasobów do jednostki usługi. Aby delegować dostęp, przypisz rolę kontroli dostępu na podstawie ról (RBAC) platformy Azure do jednostki usługi.

Ważne

Propagacja uprawnień udzielonych jednostce usługi skojarzonej z klastrem może potrwać 60 minut.

  • Utwórz przypisanie roli przy użyciu az role assignment create polecenia . Podaj wartość identyfikatora appID jednostki usługi dla parametru appId . Określ zakres przypisania roli, taki jak grupa zasobów lub zasób sieci wirtualnej. Przypisanie roli określa, jakie uprawnienia ma jednostka usługi w zasobie i w jakim zakresie.

    Aby na przykład przypisać uprawnienia jednostki usługi do uzyskiwania dostępu do wpisów tajnych w magazynie kluczy, możesz użyć następującego polecenia:

    az role assignment create \
        --assignee <appId> \
        --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.KeyVault/vaults/<vault-name>" \
        --role "Key Vault Secrets User"
    

    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.

W poniższych sekcjach opisano typowe delegowanie, które mogą być konieczne do przypisania do jednostki usługi.

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 uwagi

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 \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --query servicePrincipalProfile.clientId \
        --output 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 mogą 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" \
    --output 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.