Clusterverbinding gebruiken om veilig verbinding te maken met Kubernetes-clusters met Azure Arc
Met clusterverbinding kunt u veilig verbinding maken met Kubernetes-clusters met Azure Arc vanaf elke locatie zonder dat een binnenkomende poort moet worden ingeschakeld op de firewall.
Toegang tot het apiserver
Kubernetes-cluster met Azure Arc maakt de volgende scenario's mogelijk:
- Interactieve foutopsporing en probleemoplossing.
- Clustertoegang tot Azure-services voor aangepaste locaties en andere resources die erop zijn gemaakt.
Bekijk voordat u begint het conceptuele overzicht van de functie clusterverbinding.
Vereisten
Een Azure-account met een actief abonnement. Gratis een account maken
Een bestaand met Azure Arc verbonden Kubernetes-cluster.
- Als u nog geen cluster hebt verbonden, gebruikt u onze quickstart.
- Werk uw agents bij naar de nieuwste versie.
Schakel deze eindpunten in voor uitgaande toegang:
Eindpunt Poort *.servicebus.windows.net
443 guestnotificationservice.azure.com
,*.guestnotificationservice.azure.com
443 Notitie
Gebruik de opdracht
\GET https://guestnotificationservice.azure.com/urls/allowlist?api-version=2020-01-01&location=<location>
om het*.servicebus.windows.net
jokerteken om te zetten in specifieke eindpunten. Binnen deze opdracht moet de regio worden opgegeven voor de<location>
tijdelijke aanduiding.
Als u het regiosegment van een regionaal eindpunt wilt ophalen, verwijdert u alle spaties uit de naam van de Azure-regio. Bijvoorbeeld, regio VS - oost 2 , de regionaam is eastus2
.
Bijvoorbeeld: *.<region>.arcdataservices.com
moet zich in de regio VS - oost 2 bevinden *.eastus2.arcdataservices.com
.
Voer deze opdracht uit om een lijst met alle regio's weer te geven:
az account list-locations -o table
Get-AzLocation | Format-Table
Azure CLI installeren of bijwerken naar de nieuwste versie.
Installeer de nieuwste versie van de
connectedk8s
Azure CLI-extensie:az extension add --name connectedk8s
Als u de
connectedk8s
extensie al hebt geïnstalleerd, werkt u de extensie bij naar de nieuwste versie:az extension update --name connectedk8s
Vervang de tijdelijke aanduidingen en voer de onderstaande opdracht uit om de omgevingsvariabelen in te stellen die in dit document worden gebruikt:
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)
Verificatie instellen
Maak op het bestaande cluster met Arc het ClusterRoleBinding met een Microsoft Entra-verificatie- of serviceaccounttoken.
Microsoft Entra-verificatieoptie
Haal de
objectId
gekoppelde aan uw Microsoft Entra-entiteit op. Als u één gebruikersaccount gebruikt, haalt u de UPN (User Principal Name) op die is gekoppeld aan uw Microsoft Entra-entiteit.- Voor een Microsoft Entra-groepsaccount:
AAD_ENTITY_ID=$(az ad signed-in-user show --query id -o tsv)
Voor een Microsoft Entra-account voor één gebruiker:
AAD_ENTITY_ID=$(az ad signed-in-user show --query userPrincipalName -o tsv)
Voor een Microsoft Entra-toepassing:
AAD_ENTITY_ID=$(az ad sp show --id <id> --query id -o tsv)
Autoriseren van de entiteit met de juiste machtigingen.
Als u kubernetes native ClusterRoleBinding of RoleBinding gebruikt voor autorisatiecontroles op het cluster, waarbij het
kubeconfig
bestand naar hetapiserver
cluster verwijst voor directe toegang, kunt u er een maken die is toegewezen aan de Microsoft Entra-entiteit (service-principal of gebruiker) die toegang nodig heeft tot dit cluster. Voorbeeld:kubectl create clusterrolebinding demo-user-binding --clusterrole cluster-admin --user=$AAD_ENTITY_ID
Als u Azure RBAC gebruikt voor autorisatiecontroles op het cluster, kunt u een toepasselijke Azure-roltoewijzing maken die is toegewezen aan de Microsoft Entra-entiteit. Voorbeeld:
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
Verificatieoptie voor serviceaccounttoken
Als het
kubeconfig
bestand naar hetapiserver
Kubernetes-cluster verwijst, voert u deze opdracht uit om een serviceaccount te maken. In dit voorbeeld wordt het serviceaccount gemaakt in de standaardnaamruimte, maar u kunt elke andere naamruimte vervangen doordefault
.kubectl create serviceaccount demo-user -n default
Maak ClusterRoleBinding om dit serviceaccount de juiste machtigingen voor het cluster te verlenen. Als u een andere naamruimte in de eerste opdracht hebt gebruikt, vervangt u deze hier door
default
.kubectl create clusterrolebinding demo-user-binding --clusterrole cluster-admin --serviceaccount default:demo-user
Een serviceaccounttoken maken:
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')
Het token ophalen naar uitvoer naar de console
echo $TOKEN
Toegang tot uw cluster vanaf een clientapparaat
U hebt nu toegang tot het cluster vanaf een andere client. Voer de volgende stappen uit op een ander clientapparaat.
Meld u aan met behulp van Microsoft Entra-verificatie of tokenverificatie voor serviceaccounts.
Haal de clusterverbinding
kubeconfig
op die nodig is om vanaf elke locatie met het cluster te communiceren (zelfs buiten de firewall rondom het cluster), op basis van de gebruikte verificatieoptie:Als u Microsoft Entra-verificatie gebruikt:
az connectedk8s proxy -n $CLUSTER_NAME -g $RESOURCE_GROUP
Als u tokenverificatie voor serviceaccounts gebruikt:
az connectedk8s proxy -n $CLUSTER_NAME -g $RESOURCE_GROUP --token $TOKEN
Notitie
Met deze opdracht wordt de proxy geopend en wordt de huidige shell geblokkeerd.
Gebruik
kubectl
in een andere shellsessie om aanvragen naar het cluster te verzenden:kubectl get pods -A
U ziet nu een antwoord van het cluster met de lijst met alle pods onder de default
naamruimte.
Bekende beperkingen
Gebruik az connectedk8s show
deze optie om de Kubernetes-agentversie met Arc te controleren.
Als de gebruikte Microsoft Entra-entiteit deel uitmaakt van meer dan 200 groepen, ziet u mogelijk de volgende fout bij het indienen van aanvragen bij het Kubernetes-cluster:
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.
Dit is een bekende beperking. Ga als volgt te werk om deze fout te achterstalleren:
- Maak een service-principal, die minder waarschijnlijk lid is van meer dan 200 groepen.
- Meld u aan bij Azure CLI met de service-principal voordat u de
az connectedk8s proxy
opdracht uitvoert.
Volgende stappen
- Stel Microsoft Entra RBAC in op uw clusters.
- Clusterextensies implementeren en beheren.