Använd en tjänstens huvudnamn med Azure Kubernetes Service (AKS)
Ett AKS-kluster kräver antingen ett Microsoft Entra-tjänsthuvudnamn eller en hanterad identitet för att dynamiskt skapa och hantera andra Azure-resurser, till exempel en Azure Load Balancer eller Azure Container Registry (ACR).
Kommentar
Vi rekommenderar att du använder hanterade identiteter för att autentisera med andra resurser i Azure, och de är standardautentiseringsmetoden för ditt AKS-kluster. Mer information om hur du använder en hanterad identitet med klustret finns i Använda en systemtilldelad hanterad identitet.
Den här artikeln visar hur du skapar och använder ett huvudnamn för tjänsten för dina AKS-kluster.
Innan du börjar
Om du vill skapa ett Huvudnamn för Microsoft Entra-tjänsten måste du ha behörighet att registrera ett program med din Microsoft Entra-klientorganisation och tilldela programmet till en roll i din prenumeration. Om du inte har de behörigheter som krävs måste du be ditt Microsoft Entra-ID eller prenumerationsadministratör att tilldela nödvändiga behörigheter eller i förväg skapa ett huvudnamn för tjänsten som du kan använda med ditt AKS-kluster.
Om du använder ett huvudnamn för tjänsten från en annan Microsoft Entra-klientorganisation finns det andra överväganden kring de behörigheter som är tillgängliga när du distribuerar klustret. Du kanske inte har rätt behörighet att läsa och skriva kataloginformation. Mer information finns i Vilka är standardanvändarbehörigheterna i Microsoft Entra-ID?
Förutsättningar
- Om du använder Azure CLI behöver du Azure CLI version 2.0.59 eller senare. Kör
az --version
för att hitta versionen. Om du behöver installera eller uppgradera kan du läsa Installera Azure CLI. - Om du använder Azure PowerShell behöver du Azure PowerShell version 5.0.0 eller senare. Kör
Get-InstalledModule -Name Az
för att hitta versionen. Om du behöver installera eller uppgradera kan du läsa Installera Azure Az PowerShell-modulen.
Skapa tjänstens huvudnamn manuellt
Skapa ett huvudnamn för
az ad sp create-for-rbac
tjänsten med kommandot .az ad sp create-for-rbac --name myAKSClusterServicePrincipal
Dina utdata bör likna följande exempelutdata:
{ "appId": "559513bd-0c19-4c1a-87cd-851a26afd5fc", "displayName": "myAKSClusterServicePrincipal", "name": "http://myAKSClusterServicePrincipal", "password": "e763725a-5eee-40e8-a466-dc88d980f415", "tenant": "72f988bf-86f1-41af-91ab-2d7cd011db48" }
Kopiera värdena för
appId
ochpassword
från utdata. Du använder dessa när du skapar ett AKS-kluster i nästa avsnitt.
Ange ett tjänstens huvudnamn för ett AKS-kluster
Använd ett befintligt huvudnamn för tjänsten för ett nytt AKS-kluster med kommandot
az aks create
och använd parametrarna--service-principal
och--client-secret
för att angeappId
ochpassword
från utdata som du fick föregående avsnitt.az aks create \ --resource-group myResourceGroup \ --name myAKSCluster \ --service-principal <appId> \ --client-secret <password>
Kommentar
Om du använder ett befintligt huvudnamn för tjänsten med anpassad hemlighet kontrollerar du att hemligheten inte är längre än 190 byte.
Delegera åtkomst till andra Azure-resurser
Du kan använda tjänstens huvudnamn för AKS-klustret för att få åtkomst till andra resurser. Om du till exempel vill distribuera ditt AKS-kluster till ett befintligt undernät för virtuella Azure-nätverk eller ansluta till Azure Container Registry (ACR) måste du delegera åtkomsten till dessa resurser till tjänstens huvudnamn. Behörighet som beviljas till ett kluster med hjälp av en systemtilldelad hanterad identitet kan ta upp till 60 minuter att fylla i.
Skapa en rolltilldelning med kommandot
az role assignment create
.appId
Tilldela till ett visst omfång, till exempel en resursgrupp eller en virtuell nätverksresurs. Rollen definierar vilka behörigheter tjänstens huvudnamn har för resursen.Kommentar
--scope
För en resurs måste vara ett fullständigt resurs-ID, till exempel /subscriptions/<guid>/resourceGroups/myResourceGroup eller /subscriptions/<guid>/resourceGroups/myResourceGroupVnet/providers/Microsoft.Network/virtualNetworks/myVnet.az role assignment create --assignee <appId> --scope <resourceScope> --role Contributor
I följande avsnitt beskrivs vanliga delegeringar som du kan behöva tilldela.
Azure Container Registry
Om du använder Azure Container Registry (ACR) som containeravbildningsarkiv måste du bevilja behörighet till tjänstens huvudnamn för aks-klustret för att läsa och hämta avbildningar. Vi rekommenderar att du använder az aks create
kommandot eller az aks update
för att integrera med ett register och tilldela lämplig roll för tjänstens huvudnamn. Detaljerade steg finns i Autentisera med Azure Container Registry från Azure Kubernetes Service.
Nätverk
Du kan använda avancerade nätverk där det virtuella nätverket och undernätet eller offentliga IP-adresser finns i en annan resursgrupp. Tilldela den inbyggda rollen Nätverksdeltagare i undernätet i det virtuella nätverket. Du kan också skapa en anpassad roll med behörighet att komma åt nätverksresurserna i resursgruppen. Mer information finns i BEHÖRIGHETer för AKS-tjänsten.
Lagring
Om du behöver komma åt befintliga diskresurser i en annan resursgrupp tilldelar du någon av följande uppsättningar rollbehörigheter:
- Skapa en anpassad roll och definiera behörigheterna Microsoft.Compute/disks/read och Microsoft.Compute/disks/write , eller
- Tilldela den inbyggda rollen Virtuell datordeltagare i resursgruppen.
Azure Container Instances
Om du använder Virtual Kubelet för att integrera med AKS och väljer att köra Azure Container Instances (ACI) i resursgruppen separat från AKS-klustret, måste AKS-klustertjänstens huvudnamn beviljas deltagarbehörigheter för ACI-resursgruppen.
Övrigt att tänka på
Tänk på följande när du använder AKS och microsoft entra-tjänstens huvudnamn:
- Tjänstens huvudnamn för Kubernetes är en del av klusterkonfigurationen, men använd inte den här identiteten för att distribuera klustret.
- Som standard är autentiseringsuppgifterna för tjänstens huvudnamn giltiga i ett år. Du kan uppdatera eller rotera autentiseringsuppgifterna för tjänstens huvudnamn när som helst.
- Varje huvudnamn för tjänsten är associerat med ett Microsoft Entra-program. Du kan associera tjänstens huvudnamn för ett Kubernetes-kluster med valfritt giltigt Microsoft Entra-programnamn (till exempel: https://www.contoso.org/example). URL:en för programmet behöver inte vara en verklig slutpunkt.
- När du anger Klient-ID för tjänstens huvudnamn använder du värdet för
appId
. - På de virtuella agentnoddatorerna i Kubernetes-klustret lagras autentiseringsuppgifterna för tjänstens huvudnamn i
/etc/kubernetes/azure.json
filen. - När du tar bort ett AKS-kluster som skapades med kommandot
az aks create
tas inte tjänstens huvudnamn som skapats bort automatiskt.Om du vill ta bort tjänstens huvudnamn frågar du efter klustrets servicePrincipalProfile.clientId och tar bort det med hjälp av
az ad sp delete
kommandot . Ersätt värdena för parametern-g
för resursgruppens namn och-n
parameter för klusternamnet:az ad sp delete --id $(az aks show -g myResourceGroup -n myAKSCluster --query servicePrincipalProfile.clientId -o tsv)
Felsöka
Azure CLI cachelagrar autentiseringsuppgifterna för tjänstens huvudnamn för AKS-kluster. Om dessa autentiseringsuppgifter upphör att gälla uppstår fel under AKS-klusterdistributionen. Om du kör az aks create
kommandot och får ett felmeddelande som liknar följande kan det tyda på ett problem med autentiseringsuppgifterna för den cachelagrade tjänstens huvudnamn:
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'.
Du kan kontrollera förfallodatumet för autentiseringsuppgifterna för tjänstens huvudnamn med hjälp av az ad app credential list
kommandot med frågan "[].endDateTime"
.
az ad app credential list --id <app-id> --query "[].endDateTime" -o tsv
Standardförfallotiden för autentiseringsuppgifter för tjänstens huvudnamn är ett år. Om dina autentiseringsuppgifter är äldre än ett år kan du återställa befintliga autentiseringsuppgifter eller skapa ett nytt huvudnamn för tjänsten.
Allmän Azure CLI-felsökning
Azure CLI kan köras i flera gränssnittsmiljöer, men med små formatvariationer. Om du har oväntade resultat med Azure CLI-kommandon kan du läsa Så här använder du Azure CLI.
Nästa steg
Mer information om Microsoft Entra-tjänstens huvudnamn finns i Objekt för program och tjänstens huvudnamn.
Information om hur du uppdaterar autentiseringsuppgifterna finns i Uppdatera eller rotera autentiseringsuppgifterna för tjänstens huvudnamn i AKS.