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 eller kubelogin. 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örs az 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 och kubectl 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 execstandardformatet 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

  1. Skapa en Azure-resursgrupp med kommandot az group create .

    az group create --name myResourceGroup --location centralus
    
  2. 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

  1. 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
    
  2. Följ anvisningarna för att logga in.

  3. Ange kubelogin att använda Azure CLI.

    kubelogin convert-kubeconfig -l azurecli
    
  4. 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 execstandardformatet 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 till azure 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