Utiliser la connexion de cluster pour vous connecter de manière sécurisée aux clusters Kubernetes avec Azure Arc
Avec la connexion de cluster, vous pouvez vous connecter de manière sécurisée aux clusters Kubernetes de n’importe quel lieu avec Azure Arc sans avoir besoin d’activer un port entrant sur le pare-feu.
L’accès au apiserver
du cluster Kubernetes avec Azure Arc rend les scénarios suivants possibles :
- Débogage et résolution des problèmes de manière interactive.
- Accès des services Azure au cluster pour les emplacements personnalisés et les autres ressources créées par-dessus.
Avant de commencer, passez en revue la vue d’ensemble conceptuelle de la fonctionnalité de connexion au cluster.
Prérequis
Compte Azure avec un abonnement actif. Créez un compte gratuitement.
Cluster Kubernetes avec Azure Arc connecté.
- Si vous n’avez pas encore connecté de cluster, utilisez notre démarrage rapide.
- Mettez à niveau vos agents vers la dernière version.
Activez la configuration réseau requise pour Kubernetes avec Arc
Activez ces points de terminaison pour un accès sortant :
Point de terminaison Port *.servicebus.windows.net
443 guestnotificationservice.azure.com
,*.guestnotificationservice.azure.com
443 Remarque
Pour translater le caractère générique
*.servicebus.windows.net
en points de terminaison spécifiques, utilisez la commande\GET https://guestnotificationservice.azure.com/urls/allowlist?api-version=2020-01-01&location=<location>
. Dans cette commande, la région doit être spécifiée pour l’espace réservé<location>
.
Pour obtenir le segment de région d’un point de terminaison régional, supprimez tous les espaces du nom de la région Azure. Par exemple, région USA Est 2 , le nom de la région est eastus2
.
Par exemple : *.<region>.arcdataservices.com
doit se trouver *.eastus2.arcdataservices.com
dans la région USA Est 2.
Pour afficher la liste de toutes les régions, exécutez cette commande :
az account list-locations -o table
Get-AzLocation | Format-Table
Installez ou mettez à niveau Azure CLI avec la dernière version.
Installez la dernière version de l’extension Azure CLI
connectedk8s
:az extension add --name connectedk8s
Si vous avez déjà installé l’extension
connectedk8s
, mettez-la à jour vers la dernière version :az extension update --name connectedk8s
Remplacez les espaces réservés et exécutez la commande ci-dessous pour définir les variables d’environnement utilisées dans ce document :
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)
Configurer l’authentification
Sur le cluster avec Arc existant, créez le ClusterRoleBinding avec l’authentification Microsoft Entra ou le jeton de compte de service.
Option d’authentification Microsoft Entra
Récupérez l’élément
objectId
associé à votre entité Microsoft Entra. Si vous utilisez un compte d’utilisateur unique, obtenez le nom d’utilisateur principal (UPN) associé à votre entité Microsoft Entra.- Pour un compte de groupe Microsoft Entra :
AAD_ENTITY_ID=$(az ad signed-in-user show --query id -o tsv)
Pour un compte d’utilisateur unique Microsoft Entra :
AAD_ENTITY_ID=$(az ad signed-in-user show --query userPrincipalName -o tsv)
Pour une application Microsoft Entra :
AAD_ENTITY_ID=$(az ad sp show --id <id> --query id -o tsv)
Autorisez l’entité avec les autorisations appropriées.
Si vous utilisez ClusterRoleBinding ou RoleBinding en mode natif dans Kubernetes pour les vérifications d’autorisation sur le cluster, avec le fichier
kubeconfig
pointant vers leapiserver
de votre cluster pour un accès direct, vous pouvez en créer un mappé à l’entité Microsoft Entra (principal du service ou utilisateur) qui doit accéder à ce cluster. Par exemple :kubectl create clusterrolebinding demo-user-binding --clusterrole cluster-admin --user=$AAD_ENTITY_ID
Si vous utilisez Azure RBAC pour les contrôles d’autorisation sur le cluster, vous pouvez créer une attribution de rôle Azure applicable mappée à l’entité Microsoft Entra. Par exemple :
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
Option d’authentification du jeton du compte de service
Avec le
kubeconfig
fichier pointant vers leapiserver
de votre cluster Kubernetes, exécutez cette commande pour créer un compte de service. Cet exemple crée le compte de service dans l’espace de noms par défaut, mais vous pouvez remplacer n’importe quel autre espace de noms pourdefault
.kubectl create serviceaccount demo-user -n default
Créez ClusterRoleBinding afin d’octroyer à ce compte de service les autorisations appropriées pour le cluster. Si vous avez utilisé un espace de noms différent dans la première commande, remplacez-le ici par
default
.kubectl create clusterrolebinding demo-user-binding --clusterrole cluster-admin --serviceaccount default:demo-user
Créez un jeton de compte de service :
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')
Obtenir le jeton pour la sortie dans la console
echo $TOKEN
Accéder à votre cluster à partir d’un appareil client
Vous pouvez maintenant accéder au cluster à partir d’un autre client. Exécutez les étapes suivantes sur un autre appareil client.
Connectez-vous à l’aide de l’authentification Microsoft Entra ou de l’authentification par jeton de compte de service.
Récupérez la connexion de cluster
kubeconfig
nécessaire pour communiquer avec le cluster depuis n’importe quel emplacement (même en dehors du pare-feu entourant le cluster), en fonction de l’option d’authentification utilisée :Si vous utilisez l’authentification Microsoft Entra :
az connectedk8s proxy -n $CLUSTER_NAME -g $RESOURCE_GROUP
Si vous utilisez l’authentification du jeton du compte de service :
az connectedk8s proxy -n $CLUSTER_NAME -g $RESOURCE_GROUP --token $TOKEN
Remarque
Cette commande ouvre le proxy et bloque l’interpréteur de commandes actuel.
Dans une autre session d’interpréteur de commandes, utilisez
kubectl
pour envoyer des requêtes au cluster :kubectl get pods -A
Vous devez voir une réponse du cluster contenant la liste de tous les pods présents dans l’espace de noms default
.
Limitations connues
Utilisez az connectedk8s show
pour vérifier la version de votre agent Kubernetes avec Arc.
Quand des requêtes sont adressées au cluster Kubernetes, si l’entité Microsoft Entra utilisée fait partie de plus de 200 groupes, l’erreur suivante peut se produire :
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.
Il s’agit d’une limitation connue. Pour contourner cette erreur :
- Créez un principal de service, qui est moins susceptible d’être membre de plus de 200 groupes.
- Connectez-vous à Azure CLI avec le principal de service avant d’exécuter la commande
az connectedk8s proxy
.
Étapes suivantes
- Configurez Microsoft Entra RBAC sur vos clusters.
- Déployer et gérer des extensions de cluster.