Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Med klusteranslutning kan du på ett säkert sätt ansluta till Azure Arc-aktiverade Kubernetes-kluster var som helst utan att kräva att någon inkommande port aktiveras i brandväggen.
Åtkomst till apiserver
Det Azure Arc-aktiverade Kubernetes-klustret möjliggör följande scenarier:
- Interaktiv avlusning och felsökning.
- Klusteråtkomst till Azure-tjänster för anpassade platser och andra resurser som skapats ovanpå det.
Innan du börjar kan du läsa den konceptuella översikten över funktionen för klusteranslutning.
Förutsättningar
Ett Azure-konto med en aktiv prenumeration. Skapa ett konto kostnadsfritt.
Ett befintligt Azure Arc-aktiverat Kubernetes-anslutet kluster.
- Om du inte har anslutit ett kluster ännu använder du vår snabbstart.
- Uppgradera dina agenter till den senaste versionen.
Aktivera nätverkskrav för Arc-aktiverade Kubernetes, inklusive alla slutpunkter som anges som nödvändiga för klusteranslutning.
Installera eller uppdatera Azure CLI till den senaste versionen.
Installera den senaste versionen av
connectedk8s
Azure CLI-tillägget:az extension add --name connectedk8s
Om du redan har installerat
connectedk8s
tillägget uppdaterar du tillägget till den senaste versionen:az extension update --name connectedk8s
Ersätt platshållarna och kör kommandot nedan för att ange de miljövariabler som används i det här dokumentet:
CLUSTER_NAME=<cluster-name> RESOURCE_GROUP=<resource-group-name> ARM_ID_CLUSTER=$(az connectedk8s show -n $CLUSTER_NAME -g $RESOURCE_GROUP --query id -o tsv)
Konfigurera autentisering
I det befintliga Arc-aktiverade klustret skapar du ClusterRoleBinding med antingen Microsoft Entra-autentisering eller tjänstkontotoken.
Microsoft Entra-autentiseringsalternativ
Hämta det
objectId
som är kopplat till din Microsoft Entra-entitet. För enskilda användarkonton hämtar du det användarhuvudnamn (UPN) som är associerat med din Microsoft Entra-entitet.För ett Microsoft Entra-gruppkonto:
AAD_ENTITY_ID=$(az ad signed-in-user show --query id -o tsv)
För ett enskilt Microsoft Entra-användarkonto:
AAD_ENTITY_ID=$(az ad signed-in-user show --query userPrincipalName -o tsv)
För ett Microsoft Entra-program:
AAD_ENTITY_ID=$(az ad sp show --id <id> --query id -o tsv)
Auktorisera entiteten med lämpliga behörigheter.
Om du använder Kubernetes inbyggda ClusterRoleBinding eller RoleBinding för att utföra auktoriseringskontroller i klustret, där
kubeconfig
-filen pekar påapiserver
-anslutningen till ditt kluster för direkt åtkomst, kan du koppla detta till Microsoft Entra-entiteten som behöver åtkomst till det här klustret. Till exempel:kubectl create clusterrolebinding demo-user-binding --clusterrole cluster-admin --user=$AAD_ENTITY_ID
Om du använder Azure RBAC för auktoriseringskontroller i klustret kan du skapa en tillämplig Azure-rolltilldelning mappad till Microsoft Entra-entiteten. Till exempel:
az role assignment create --role "Azure Arc Kubernetes Viewer" --assignee $AAD_ENTITY_ID --scope $ARM_ID_CLUSTER az role assignment create --role "Azure Arc Enabled Kubernetes Cluster User Role" --assignee $AAD_ENTITY_ID --scope $ARM_ID_CLUSTER
Autentiseringsalternativ för tjänstekontotoken
När filen
kubeconfig
är kopplad tillapiserver
i ditt Kubernetes-kluster, kör det här kommandot för att skapa ett servicekonto. Det här exemplet skapar tjänstkontot i standardnamnområdet, men du kan ersätta alla andra namnområden meddefault
.kubectl create serviceaccount demo-user -n default
Skapa ett ClusterRoleBinding för att ge det här tjänstkontot lämpliga behörigheter för klustret. Om du använde ett annat namnområde i det första kommandot ersätter du det här med
default
.kubectl create clusterrolebinding demo-user-binding --clusterrole cluster-admin --serviceaccount default:demo-user
Skapa en tjänstkontotoken:
kubectl apply -f - <<EOF apiVersion: v1 kind: Secret metadata: name: demo-user-secret annotations: kubernetes.io/service-account.name: demo-user type: kubernetes.io/service-account-token EOF
TOKEN=$(kubectl get secret demo-user-secret -o jsonpath='{$.data.token}' | base64 -d | sed 's/$/\n/g')
Hämta token för utskrift till konsolen
echo $TOKEN
Få åtkomst till klustret från en klientenhet
Nu kan du komma åt klustret från en annan klient. Kör följande steg på en annan klientenhet.
Logga in med antingen Microsoft Entra-autentisering eller autentisering med tjänstkontotoken.
Hämta den klusteranslutning
kubeconfig
som behövs för att kommunicera med klustret var som helst (även utanför brandväggen som omger klustret), baserat på det autentiseringsalternativ som används:För Microsoft Entra-autentisering:
az connectedk8s proxy -n $CLUSTER_NAME -g $RESOURCE_GROUP
För tokenautentisering för tjänstkonto:
az connectedk8s proxy -n $CLUSTER_NAME -g $RESOURCE_GROUP --token $TOKEN
Anmärkning
Den här kommandot öppnar proxyn och blockerar den aktuella skalet.
I en annan skal-session, använd
kubectl
för att skicka förfrågningar till klustret.kubectl get pods -A
Du bör nu se ett svar från klustret som innehåller listan över alla pods under default
-namnrymden.
Kända begränsningar
När du gör begäranden till Kubernetes-klustret kan följande fel uppstå om tjänstens huvudnamn för Microsoft Entra ingår i fler än 200 grupper:
Overage claim (users with more than 200 group membership) for SPN is currently not supported. For troubleshooting, please refer to aka.ms/overageclaimtroubleshoot
Det här är en känd begränsning. För att komma förbi det här felet:
- Skapa ett tjänsthuvud, som sannolikt inte är medlem i fler än 200 grupper.
-
Logga in på Azure CLI med tjänstens huvudnamn innan du kör
az connectedk8s proxy
kommandot.
Nästa steg
- Konfigurera Microsoft Entra RBAC i dina kluster.
- Distribuera och hantera klustertillägg.
- Hjälp med att skydda klustret på andra sätt genom att följa riktlinjerna i säkerhetsboken för Azure Arc-aktiverade Kubernetes.