Instanční objekty se službou Azure Kubernetes Service (AKS)
Pro interakci s rozhraními API Azure vyžaduje cluster AKS Azure Active Directory (AD) nebo spravovanou identitu. K dynamickému vytváření a správě dalších prostředků Azure, jako je nástroj pro vyrovnávání zatížení Azure nebo registr kontejnerů (ACR), je potřeba objekt služby nebo spravovaná identita.
Tento článek ukazuje, jak vytvořit a používat instanční objekt pro vaše clustery služby AKS.
Než začnete
Abyste mohli vytvořit instanční objekt služby Azure AD, musíte mít oprávnění k registraci aplikace v tenantu Azure AD a přiřazení aplikace k roli v předplatném. Pokud nemáte potřebná oprávnění, možná budete muset požádat správce služby Azure AD nebo předplatného o jejich přiřazení nebo vytvořit instanční objekt pro použití se službou AKS předem.
Pokud používáte objekt služby z jiného tenanta Azure AD, při nasazování clusteru jsou k dispozici další aspekty týkající se oprávnění. Možná nemáte příslušná oprávnění ke čtení a zápisu informací o adresáři. Další informace najdete v tématu Jaká jsou výchozí uživatelská oprávnění v Azure Active Directory?
Potřebujete také nainstalované a nakonfigurované Rozhraní příkazového řádku 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.
Automatické vytvoření a použití instančního objektu
Když vytvoříte cluster AKS v Azure Portal nebo pomocí příkazu az aks create, Azure vytvoří spravovanou identitu.
V následujícím příkladu rozhraní příkazového řádku Azure není zadán instanční objekt. V tomto scénáři Azure CLI vytvoří spravovanou identitu pro cluster AKS.
az aks create --name myAKSCluster --resource-group myResourceGroup
Ruční vytvoření instančního objektu
Pokud chcete ručně vytvořit instanční objekt pomocí Azure CLI, použijte příkaz az ad sp create-for-rbac.
az ad sp create-for-rbac --name myAKSClusterServicePrincipal
Výstup se podobá následujícímu příkladu. Poznamenejte si sami appId a password. Tyto hodnoty se používají při vytváření clusteru AKS v další části.
{
"appId": "559513bd-0c19-4c1a-87cd-851a26afd5fc",
"displayName": "myAKSClusterServicePrincipal",
"name": "http://myAKSClusterServicePrincipal",
"password": "e763725a-5eee-40e8-a466-dc88d980f415",
"tenant": "72f988bf-86f1-41af-91ab-2d7cd011db48"
}
Specifikace instančního objektu pro cluster AKS
Chcete-li použít existující instanční objekt, když vytváříte cluster AKS pomocí příkazu az aks create, použijte parametry --service-principal a --client-secret k určení appId a password z výstupu příkazu az ad sp create-for-rbac:
az aks create \
--resource-group myResourceGroup \
--name myAKSCluster \
--service-principal <appId> \
--client-secret <password>
Poznámka
Pokud používáte existující objekt služby s vlastním tajným kódem, ujistěte se, že tajný kód není delší než 190 bajtů.
Pokud nasadíte cluster AKS pomocí portálu Microsoft Azure, na stránce ověřování dialogového okna Vytvořit cluster Kubernetes zvolit Konfigurace instančního objektu. Vyberte Použít existující a zadejte následující hodnoty:
- ID klienta instančního objektu je vaše appId
- Tajný klíč klienta instančního objektu služby je hodnota hesla

Delegování přístupu na jiné prostředky Azure
Objekt služby pro cluster AKS je možné použít pro přístup k jiný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 k Azure Container Registry (ACR), musíte delegovat přístup na tyto prostředky na tento objekt služby.
Pokud chcete delegovat oprávnění, vytvořte přiřazení role pomocí příkazu az role assignment create. appIdPřiřaďte k určitému oboru, například ke skupině prostředků nebo prostředku virtuální sítě. Role pak definuje, jaká oprávnění má instanční objekt k prostředku, jak je znázorněno v následujícím příkladu:
az role assignment create --assignee <appId> --scope <resourceScope> --role Contributor
Pro prostředek musí být úplné ID prostředku, například --scope /subscriptions/ <guid> /resourceGroups/myResourceGroup nebo /subscriptions/ <guid> /resourceGroups/myResourceGroupVnet/providers/Microsoft.Network/virtualNetworks/myVnet.
Poznámka
Pokud jste ze skupiny prostředků uzlu odebrali přiřazení role Přispěvatel, může dojít k selhání následujících operací. Naplnění oprávnění udělených clusterům pomocí spravované identity systému může trvat až 60 minut.
Následující části podrobně popisují běžná delegování, která možná budete muset provést.
Azure Container Registry
Pokud jako Azure Container Registry imagí kontejneru používáte službu ACR, musíte vašemu clusteru AKS udělit oprávnění ke čtení a čtení imagí. V současné době se doporučuje použít příkaz az aks create nebo az aks update k integraci s registrem a přiřazení příslušné role pro objekt služby. Podrobný postup najdete v tématu Ověřování pomocí Azure Container Registry z Azure Kubernetes Service.
Sítě
Můžete použít pokročilé sítě, ve kterých se virtuální síť, podsíť nebo veřejné IP adresy nachází v jiné skupině prostředků. V podsíti v rámci virtuální sítě přiřaďte předdefinovou roli Přispěvatel 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ší podrobnosti najdete v tématu Oprávnění služby AKS.
Storage
Možná budete potřebovat přístup ke stávajícím prostředkům na disku v jiné skupině prostředků. Přiřaďte jednu z následujících oprávnění role:
- Vytvořte vlastní roli a definujte následující oprávnění role:
- Microsoft.Compute/disks/read
- Microsoft.Compute/disks/write
- Případně můžete přiřadit předdefinovou Storage přispěvatele účtu pro skupinu prostředků.
Azure Container Instances
Pokud k integraci s AKS používáte Virtual Kubelet a rozhodnete se spustit Azure Container Instances (ACI) ve skupině prostředků odděleně od clusteru AKS, instanční objekt AKS musí mít udělená oprávnění Přispěvatel pro skupinu prostředků ACI.
Další aspekty
Při použití instančních objektů služeb Azure AD a AKS mějte na paměti následující informace.
- Instanční objekt pro Kubernetes je součástí konfigurace clusteru. K nasazení clusteru ale nepoužívejte identitu.
- 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 otáčet .
- Každý instanční objekt je přidružený k aplikaci Azure AD. Instanční objekt pro cluster Kubernetes se dá přidružit k libovolnému platnému názvu aplikace Azure AD (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ů agentů v clusteru Kubernetes se přihlašovací údaje instančního objektu ukládají do souboru.
/etc/kubernetes/azure.json - Pokud použijete příkaz az aks create k automatickému vygenerování instančního objektu, zapíší se přihlašovací údaje instančního objektu do souboru
~/.azure/aksServicePrincipal.jsonna počítači, který jste ke spuštění příkazu použili. - Pokud instanční objekt nebudete výslovně předávat v dalších příkazech rozhraní příkazového řádku AKS, použije se výchozí instanční objekt umístěný v
~/.azure/aksServicePrincipal.json. - Volitelně můžete také odebrat soubor aksServicePrincipal. JSON a AKS vytvoří nový instanční objekt.
- Při odstraňování clusteru AKS vytvořeného příkazem az aks create se instanční objekt, který se vytvořil automaticky, neodstraní.
Pokud chcete odstranit instanční objekt, zadejte dotaz na svůj cluster servicePrincipalProfile. ClientID a pak ho odstraňte pomocí příkazu AZ AD SP Delete. Nahraďte následující názvy skupin prostředků a názvů clusterů vlastními hodnotami:
az ad sp delete --id $(az aks show -g myResourceGroup -n myAKSCluster --query servicePrincipalProfile.clientId -o tsv)
Řešení potíží
Azure CLI ukládá přihlašovací údaje instančního objektu pro cluster AKS do mezipaměti. Pokud vyprší platnost těchto přihlašovacích údajů, při nasazování clusterů AKS dojde k chybám. Při spuštění AZ AKS Create může znamenat problém s přihlašovacími údaji instančního objektu uloženého v mezipaměti následující chybová zpráva:
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í následujícího příkazu zkontrolujte stáří souboru s přihlašovacími údaji.
ls -la $HOME/.azure/aksServicePrincipal.json
Výchozí čas vypršení platnosti přihlašovacích údajů instančního objektu je jeden rok. Pokud je soubor aksServicePrincipal. JSON starší než jeden rok, odstraňte soubor a pokuste se znovu nasadit cluster AKS.
Další kroky
další informace o Azure Active Directory instančních objektech naleznete v tématu Application and service instanční objekty.
Informace o tom, jak aktualizovat přihlašovací údaje, najdete v tématu aktualizace nebo otočení přihlašovacích údajů pro instanční objekt v AKS.