Sdílet prostřednictvím


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

Pro zajištění optimálního zabezpečení a snadného použití Microsoft doporučuje používat spravované identity místo instančních objektů k autorizaci přístupu z clusteru AKS k jiným prostředkům v Azure. Spravovaná identita je speciální typ instančního objektu, který lze použít k získání přihlašovacích údajů Microsoft Entra bez nutnosti spravovat a zabezpečit přihlašovací údaje. Další informace o použití spravované identity ve vašem clusteru najdete v tématu Použití spravované identity v AKS.

V tomto článku se dozvíte, jak vytvořit a použít instanční objekt s 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 správce Microsoft Entra ID nebo 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?

Požadavky

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

Vytvoření instančního objektu služby

Před vytvořením clusteru vytvořte instanční objekt.

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

    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, připojit se ke službě Azure Container Registry (ACR) nebo přistupovat ke klíčům nebo tajným klíčům v trezoru klíčů z vašeho clusteru, je potřeba delegovat přístup k těmto prostředkům instančnímu objektu. Pokud chcete delegovat přístup, přiřaďte k instančnímu objektu roli řízení přístupu na základě role (Azure RBAC).

Důležité

Rozšíření oprávnění udělených instančnímu objektu přidruženému ke clusteru může trvat až 60 minut.

  • Pomocí příkazu vytvořte přiřazení az role assignment create role. Zadejte hodnotu APPID instančního objektu parametru appId . Zadejte rozsah přiřazení role, například skupinu prostředků nebo prostředek virtuální sítě. Přiřazení role určuje, jaká oprávnění má instanční objekt pro prostředek a v jakém oboru.

    Pokud chcete například přiřadit oprávnění instančního objektu pro přístup k tajným kódům v trezoru klíčů, můžete použít následující příkaz:

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

    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.

V následujících částech jsou podrobně popsané běžné delegování, které možná budete muset přiřadit k instančnímu objektu.

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.

Ostatní úvahy

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 \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --query servicePrincipalProfile.clientId \
        --output tsv)
      

Odstraňová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ší, můžete během nasazování clusteru AKS narazit na chyby. 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" \
    --output 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.