Aktivera Azure-hanterad identitetsautentisering för Kubernetes-kluster med kubelogin
Den AKS-hanterade Microsoft Entra-integreringen förenklar Microsoft Entra-integreringsprocessen. Tidigare var du tvungen att skapa en klient- och serverapp, och Microsoft Entra-klienten var tvungen att tilldela rollbehörigheter för katalogläsare . Nu hanterar AKS-resursprovidern klient- och serverapparna åt dig.
Klusteradministratörer kan konfigurera rollbaserad åtkomstkontroll för Kubernetes (Kubernetes RBAC) baserat på en användares identitets- eller kataloggruppsmedlemskap. Microsoft Entra-autentisering tillhandahålls till AKS-kluster med OpenID Connect. OpenID Connect är ett identitetslager som bygger på OAuth 2.0-protokollet. Mer information om OpenID Connect finns i OpenID Connect-dokumentationen.
Läs mer om Microsoft Entra-integreringsflödet i Microsoft Entra-dokumentationen.
Den här artikeln innehåller information om hur du aktiverar och använder hanterade identiteter för Azure-resurser med ditt AKS-kluster.
Begränsningar
Följande är begränsningar som integrerar Azure-hanterad identitetsautentisering i AKS.
- Integrering kan inte inaktiveras när den har lagts till.
- Nedgraderingar från ett integrerat kluster till äldre Microsoft Entra-ID-kluster stöds inte.
- Kluster utan Stöd för Kubernetes RBAC kan inte lägga till integreringen.
Innan du börjar
Följande krav måste uppfyllas för att AKS-tillägget för hanterad identitet ska kunna installeras korrekt.
- Azure CLI version 2.29.0 eller senare har installerats och konfigurerats. Kör
az --version
för att hitta versionen. Om du behöver installera eller uppgradera kan du läsa Installera Azure CLI. - Du behöver
kubectl
med en lägsta version av 1.18.1 ellerkubelogin
. Med Azure CLI och Azure PowerShell-modulen ingår dessa två kommandon och hanteras automatiskt. Det innebär att de uppgraderas som standard och körsaz aks install-cli
inte krävs eller rekommenderas. Om du använder en automatiserad pipeline måste du hantera uppgraderingar för rätt eller senaste version. Skillnaden mellan de mindre versionerna av Kubernetes ochkubectl
bör inte vara mer än en version. Annars uppstår autentiseringsproblem på fel version. - Om du använder helm behöver du en lägsta version av helm 3.3.
- Den här konfigurationen kräver att du har en Microsoft Entra-grupp för klustret. Den här gruppen är registrerad som en administratörsgrupp i klustret för att bevilja administratörsbehörigheter. Om du inte har någon befintlig Microsoft Entra-grupp kan du skapa en med kommandot
az ad group create
.
Kommentar
Microsoft Entra-integrerade kluster med en Kubernetes-version som är nyare än version 1.24 använder kubelogin
automatiskt formatet. Från och med Kubernetes version 1.24 är exec
standardformatet för clusterUser-autentiseringsuppgifterna för Microsoft Entra ID-kluster , vilket kräver kubelogin
binär kod i körningssökvägen. Det finns ingen beteendeförändring för icke-Microsoft Entra-kluster eller Microsoft Entra ID-kluster som kör en version som är äldre än 1.24.
Befintliga nedladdade kubeconfig
fortsätter att fungera. Ett valfritt frågeparameterformat ingår när du hämtar clusterUser-autentiseringsuppgifter för att skriva över standardbeteendeändringen. Du kan uttryckligen ange format till azure om du behöver behålla det gamla kubeconfig
formatet .
Aktivera integreringen i ditt AKS-kluster
Skapa ett nytt kluster
Skapa en Azure-resursgrupp med kommandot
az group create
.az group create --name myResourceGroup --location centralus
Skapa ett AKS-kluster och aktivera administrationsåtkomst för din Microsoft Entra-grupp med kommandot
az aks create
.az aks create \ --resource-group myResourceGroup \ --name myManagedCluster \ --enable-aad \ --aad-admin-group-object-ids <id> [--aad-tenant-id <id>] \ --generate-ssh-keys
Ett lyckat skapande av ett AKS-hanterat Microsoft Entra-ID-kluster innehåller följande avsnitt i svarstexten:
"AADProfile": { "adminGroupObjectIds": [ "5d24****-****-****-****-****afa27aed" ], "clientAppId": null, "managed": true, "serverAppId": null, "serverAppSecret": null, "tenantId": "72f9****-****-****-****-****d011db47" }
Använda ett befintligt kluster
Aktivera AKS-hanterad Microsoft Entra-integrering i ditt befintliga Kubernetes RBAC-aktiverade kluster med kommandot az aks update
. Se till att ange din administratörsgrupp så att den behåller åtkomsten till klustret.
az aks update --resource-group MyResourceGroup --name myManagedCluster --enable-aad --aad-admin-group-object-ids <id-1>,<id-2> [--aad-tenant-id <id>]
En lyckad aktivering av ett AKS-hanterat Microsoft Entra-ID-kluster har följande avsnitt i svarstexten:
"AADProfile": {
"adminGroupObjectIds": [
"5d24****-****-****-****-****afa27aed"
],
"clientAppId": null,
"managed": true,
"serverAppId": null,
"serverAppSecret": null,
"tenantId": "72f9****-****-****-****-****d011db47"
}
Migrera äldre kluster till integrering
Om klustret använder äldre Microsoft Entra-integrering kan du uppgradera till AKS-hanterad Microsoft Entra-integrering via az aks update
kommandot .
Varning
Kluster på den kostnadsfria nivån kan uppleva api-serveravbrott under uppgraderingen. Vi rekommenderar att du uppgraderar under dina kontorstider.
Efter uppgraderingen ändras kubeconfig-innehållet. Du måste köra az aks get-credentials --resource-group <AKS resource group name> --name <AKS cluster name>
för att sammanfoga de nya autentiseringsuppgifterna till kubeconfig-filen.
az aks update --resource-group myResourceGroup --name myManagedCluster --enable-aad --aad-admin-group-object-ids <id> [--aad-tenant-id <id>]
En lyckad migrering av ett AKS-hanterat Microsoft Entra-ID-kluster har följande avsnitt i svarstexten:
"AADProfile": {
"adminGroupObjectIds": [
"5d24****-****-****-****-****afa27aed"
],
"clientAppId": null,
"managed": true,
"serverAppId": null,
"serverAppSecret": null,
"tenantId": "72f9****-****-****-****-****d011db47"
}
Få åtkomst till ditt aktiverade kluster
Hämta användarautentiseringsuppgifterna för att komma åt klustret med hjälp av
az aks get-credentials
kommandot .az aks get-credentials --resource-group myResourceGroup --name myManagedCluster
Följ anvisningarna för att logga in.
Ange
kubelogin
att använda Azure CLI.kubelogin convert-kubeconfig -l azurecli
Visa noderna i klustret med
kubectl get nodes
kommandot .kubectl get nodes
Icke-interaktiv inloggning med kubelogin
Det finns vissa icke-interaktiva scenarier som inte stöder kubectl
. I dessa fall kan du använda kubelogin
för att ansluta till klustret med en icke-interaktiv autentiseringsuppgift för tjänstens huvudnamn för att utföra pipelines för kontinuerlig integrering.
Kommentar
Microsoft Entra-integrerade kluster med en Kubernetes-version som är nyare än version 1.24 använder kubelogin
automatiskt formatet. Från och med Kubernetes version 1.24 är exec
standardformatet för clusterUser-autentiseringsuppgifterna för Microsoft Entra ID-kluster , vilket kräver kubelogin
binär kod i körningssökvägen. Det finns ingen beteendeförändring för icke-Microsoft Entra-kluster eller Microsoft Entra ID-kluster som kör en version som är äldre än 1.24.
Befintliga nedladdade kubeconfig
fortsätter att fungera. Ett valfritt frågeparameterformat ingår när du hämtar clusterUser-autentiseringsuppgifter för att skriva över standardbeteendeändringen. Du kan uttryckligen ange format till azure om du behöver behålla det gamla kubeconfig
formatet .
När du hämtar clusterUser-autentiseringsuppgifterna kan du använda
format
frågeparametern för att skriva över standardbeteendet. Du kan ange värdet tillazure
för att använda det ursprungliga kubeconfig-formatet:az aks get-credentials --format azure
Om ditt Microsoft Entra-integrerade kluster använder Kubernetes version 1.24 eller senare måste du konvertera kubeconfig-formatet manuellt.
export KUBECONFIG=/path/to/kubeconfig kubelogin convert-kubeconfig
Kommentar
Om du får meddelandefelet : Azure auth-plugin-programmet har tagits bort., måste du köra kommandot kubelogin convert-kubeconfig
för att konvertera kubeconfig-formatet manuellt.
Mer information finns i Kända Problem med Azure Kubelogin.
Felsökning av åtkomstproblem
Viktigt!
Steget som beskrivs i det här avsnittet föreslår en alternativ autentiseringsmetod jämfört med den normala Microsoft Entra-gruppautentiseringen. Använd endast det här alternativet i en nödsituation.
Om du saknar administrativ åtkomst till en giltig Microsoft Entra-grupp kan du följa den här lösningen. Logga in med ett konto som är medlem i azure Kubernetes Service-klusteradministratörsrollen och ge din grupp- eller klientadministratör autentiseringsuppgifter för att få åtkomst till klustret.
Nästa steg
- Läs mer om Microsoft Entra-integrering med Kubernetes RBAC.
- Läs mer om aks- och Kubernetes-identitetsbegrepp.
- Lär dig hur du använder kubelogin för alla Microsoft Entra-autentiseringsmetoder som stöds i AKS.
- Använd ARM-mallar (Azure Resource Manager) för att skapa AKS-hanterade Microsoft Entra ID-aktiverade kluster.
Azure Kubernetes Service