Använda klusteranslutning för att ansluta på ett säkert sätt till Azure Arc-aktiverade Kubernetes-kluster
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 felsökning 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 utan kostnad.
Ett befintligt Azure Arc-aktiverat Kubernetes-anslutet kluster.
- Om du inte har anslutit ett kluster ännu kan du använda vår snabbstart.
- Uppgradera dina agenter till den senaste versionen.
Aktivera dessa slutpunkter för utgående åtkomst:
Slutpunkt Port *.servicebus.windows.net
443 guestnotificationservice.azure.com
,*.guestnotificationservice.azure.com
443 Kommentar
Om du vill översätta
*.servicebus.windows.net
jokertecknet till specifika slutpunkter använder du kommandot\GET https://guestnotificationservice.azure.com/urls/allowlist?api-version=2020-01-01&location=<location>
. I det här kommandot måste regionen anges för<location>
platshållaren.
Om du vill hämta regionsegmentet för en regional slutpunkt tar du bort alla blanksteg från Namnet på Azure-regionen. Till exempel regionen USA, östra 2 , är eastus2
regionnamnet .
Till exempel: *.<region>.arcdataservices.com
bör finnas *.eastus2.arcdataservices.com
i regionen USA, östra 2.
Om du vill se en lista över alla regioner kör du det här kommandot:
az account list-locations -o table
Get-AzLocation | Format-Table
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 den
objectId
associerade med din Microsoft Entra-entitet. Om du använder ett enda användarkonto 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 auktoriseringskontroller i klustret, med
kubeconfig
filen som pekar påapiserver
klustret för direkt åtkomst, kan du skapa en mappad till Microsoft Entra-entiteten (tjänstens huvudnamn eller användare) 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änstkontotoken
kubeconfig
När filen pekar påapiserver
kubernetes-klustret kör du det här kommandot för att skapa ett tjänstkonto. 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 ClusterRoleBinding för att ge det här tjänstkontot rätt behörigheter i 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 till utdata 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:Om du använder Microsoft Entra-autentisering:
az connectedk8s proxy -n $CLUSTER_NAME -g $RESOURCE_GROUP
Om du använder tokenautentisering för tjänstkonto:
az connectedk8s proxy -n $CLUSTER_NAME -g $RESOURCE_GROUP --token $TOKEN
Kommentar
Det här kommandot öppnar proxyn och blockerar det aktuella gränssnittet.
I en annan shell-session använder du
kubectl
för att skicka begäranden till klustret:kubectl get pods -A
Nu bör du se ett svar från klustret som innehåller listan över alla poddar under default
namnområdet.
Kända begränsningar
Använd az connectedk8s show
för att kontrollera din Arc-aktiverade Kubernetes-agentversion.
När du gör begäranden till Kubernetes-klustret kan följande fel uppstå om den Microsoft Entra-entitet som används är en del av mer än 200 grupper:
You must be logged in to the server (Error:Error while retrieving group info. Error:Overage claim (users with more than 200 group membership) is currently not supported.
Det här är en känd begränsning. För att komma förbi det här felet:
Nästa steg
- Konfigurera Microsoft Entra RBAC i dina kluster.
- Distribuera och hantera klustertillägg.