Použití instančního objektu se službou Azure Kubernetes Service (AKS)

Cluster AKS vyžaduje buď instanční objekt Microsoft Entra, nebo spravovanou identitu k dynamickému vytváření a správě dalších prostředků Azure, jako je Azure Load Balancer nebo Azure Container Registry (ACR).

Poznámka:

Ke ověřování s jinými prostředky v Azure doporučujeme používat spravované identity a jedná se o výchozí metodu ověřování pro váš cluster AKS. Další informace o používání spravované identity s clusterem najdete v tématu Použití spravované identity přiřazené systémem.

V tomto článku se dozvíte, jak vytvořit a použít instanční objekt pro clustery AKS.

Než začnete

Pokud chcete vytvořit instanční objekt Microsoft Entra, musíte mít oprávnění k registraci aplikace v tenantovi Microsoft Entra a k přiřazení aplikace k roli ve vašem předplatném. Pokud nemáte potřebná oprávnění, musíte požádat svého správce Microsoft Entra ID nebo správce předplatného, aby přiřadil potřebná oprávnění nebo předem vytvořil instanční objekt pro použití s clusterem AKS.

Pokud používáte instanční objekt z jiného tenanta Microsoft Entra, jsou při nasazení clusteru k dispozici další aspekty oprávnění. Možná nemáte příslušná oprávnění ke čtení a zápisu informací o adresáři. Další informace naleznete v tématu Jaké jsou výchozí uživatelská oprávnění v Microsoft Entra ID?

Předpoklady

  • Pokud používáte Azure CLI, potřebujete Azure CLI verze 2.0.59 nebo novější. Verzi zjistíte spuštěním příkazu az --version. Pokud potřebujete instalaci nebo upgrade, přečtěte si téma Instalace Azure CLI.
  • Pokud používáte Azure PowerShell, potřebujete Azure PowerShell verze 5.0.0 nebo novější. Verzi zjistíte spuštěním příkazu Get-InstalledModule -Name Az. Pokud potřebujete nainstalovat nebo upgradovat, přečtěte si téma Instalace modulu Azure Az PowerShell.

Ruční vytvoření instančního objektu

  1. Pomocí příkazu vytvořte instanční objekt az ad sp create-for-rbac .

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

    Výstup by se měl podobat následujícímu příkladu výstupu:

    {
      "appId": "559513bd-0c19-4c1a-87cd-851a26afd5fc",
      "displayName": "myAKSClusterServicePrincipal",
      "name": "http://myAKSClusterServicePrincipal",
      "password": "e763725a-5eee-40e8-a466-dc88d980f415",
      "tenant": "72f988bf-86f1-41af-91ab-2d7cd011db48"
    }
    
  2. Zkopírujte hodnoty pro appId výstup a password z výstupu. Použijete je při vytváření clusteru AKS v další části.

Specifikace instančního objektu pro cluster AKS

  • Použijte existující instanční objekt pro nový cluster AKS pomocí az aks create příkazu a pomocí --service-principal parametrů --client-secret určete appId a password z výstupu, který jste obdrželi v předchozí části.

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

    Poznámka:

    Pokud používáte existující instanční objekt s přizpůsobeným tajným kódem, ujistěte se, že tajný kód není delší než 190 bajtů.

Delegování přístupu k jiným prostředkům Azure

Instanční objekt pro cluster AKS můžete použít pro přístup k dalším prostředkům. Pokud například chcete nasadit cluster AKS do existující podsítě virtuální sítě Azure nebo se připojit ke službě Azure Container Registry (ACR), musíte na tyto prostředky delegovat přístup k instančnímu objektu. Naplnění oprávnění clusteru pomocí spravované identity přiřazené systémem může trvat až 60 minut.

  • Pomocí příkazu vytvořte přiřazení az role assignment create role. appId Přiřaďte konkrétní obor, například skupinu prostředků nebo prostředek virtuální sítě. Role definuje, jaká oprávnění má instanční objekt pro prostředek.

    Poznámka:

    Prostředek --scope musí být úplným ID prostředku, například /subscriptions/<guid>/resourceGroups/myResourceGroup nebo /subscriptions/<guid>/resourceGroups/myResourceGroupVnet/providers/Microsoft.Network/virtualNetworks/myVnet.

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

V následujících částech najdete podrobnosti o běžných delegováních, které možná budete muset přiřadit.

Azure Container Registry

Pokud jako úložiště imagí kontejneru používáte Službu Azure Container Registry (ACR), musíte instančnímu objektu pro cluster AKS udělit oprávnění ke čtení a načítání imagí. K integraci s registrem a přiřazení příslušné role pro instanční objekt doporučujeme použít az aks create příkaz nebo az aks update příkaz. Podrobný postup najdete v tématu Ověřování pomocí služby Azure Container Registry ze služby Azure Kubernetes Service.

Sítě

Můžete použít pokročilé sítě, ve kterých jsou virtuální síť a podsíť nebo veřejné IP adresy v jiné skupině prostředků. Přiřaďte předdefinované roli Přispěvatel sítě v podsíti v rámci virtuální sítě. Případně můžete vytvořit vlastní roli s oprávněními pro přístup k síťovým prostředkům v této skupině prostředků. Další informace najdete v tématu Oprávnění služby AKS.

Úložiště

Pokud potřebujete získat přístup k existujícím prostředkům disku v jiné skupině prostředků, přiřaďte jednu z následujících sad oprávnění role:

Azure Container Instances

Pokud použijete Virtual Kubelet k integraci s AKS a rozhodnete se spustit službu Azure Container Instances (ACI) ve skupině prostředků odděleně od clusteru AKS, musí být instančnímu objektu clusteru AKS udělena oprávnění Přispěvatel ve skupině prostředků ACI.

Další aspekty

Při použití AKS a instančního objektu Microsoft Entra zvažte následující skutečnosti:

  • Instanční objekt pro Kubernetes je součástí konfigurace clusteru, ale tuto identitu nepoužívejte k nasazení clusteru.
  • Ve výchozím nastavení jsou přihlašovací údaje instančního objektu platné po dobu jednoho roku. Přihlašovací údaje instančního objektu můžete kdykoli aktualizovat nebo otočit.
  • Každý instanční objekt je přidružený k aplikaci Microsoft Entra. Instanční objekt pro cluster Kubernetes můžete přidružit k libovolnému platnému názvu aplikace Microsoft Entra (například: https://www.contoso.org/example). Adresa URL aplikace nemusí být skutečný koncový bod.
  • Při zadávání ID klienta instančního objektu použijte hodnotu appId.
  • Na virtuálních počítačích uzlů agenta v clusteru Kubernetes se přihlašovací údaje instančního objektu /etc/kubernetes/azure.json ukládají do souboru.
  • Když odstraníte cluster AKS vytvořený pomocí az aks create příkazu, instanční objekt se automaticky neodstraní.
    • Pokud chcete odstranit instanční objekt, zadejte dotaz na servicePrincipalProfile.clientId vašeho clusteru a odstraňte ho az ad sp delete pomocí příkazu. Nahraďte hodnoty parametru -g pro název skupiny prostředků a -n parametr pro název clusteru:

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

Odstranění potíží

Azure CLI ukládá přihlašovací údaje instančního objektu do mezipaměti pro clustery AKS. Pokud platnost těchto přihlašovacích údajů vyprší, dojde při nasazování clusteru AKS k chybám. Pokud příkaz spustíte az aks create a zobrazí se podobná chybová zpráva, může to znamenat problém s přihlašovacími údaji instančního objektu uloženého v mezipaměti:

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'.

Pomocí příkazu s dotazem můžete zkontrolovat datum vypršení platnosti přihlašovacích údajů az ad app credential list instančního objektu "[].endDateTime" .

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

Výchozí čas vypršení platnosti přihlašovacích údajů instančního objektu je jeden rok. Pokud jsou vaše přihlašovací údaje starší než jeden rok, můžete stávající přihlašovací údaje resetovat nebo vytvořit nový instanční objekt.

Obecné řešení potíží s Azure CLI

Azure CLI může běžet v několika prostředích prostředí, ale s mírnými variacemi formátu. Pokud máte neočekávané výsledky s příkazy Azure CLI, přečtěte si, jak úspěšně používat Azure CLI.

Další kroky

Další informace o instančních objektech společnosti Microsoft Entra naleznete v tématu Objekty aplikace a instanční objekty.

Informace o tom, jak aktualizovat přihlašovací údaje, najdete v tématu Aktualizace nebo obměna přihlašovacích údajů pro instanční objekt v AKS.