Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à : ✔️ Fleet Manager avec cluster hub
Si votre ressource Azure Kubernetes Fleet Manager (Kubernetes Fleet) a été créée avec un cluster hub, vous pouvez l’utiliser pour contrôler de manière centralisée des scénarios tels que la propagation des ressources Kubernetes. Dans cet article, vous allez apprendre à accéder à l’API Kubernetes pour un cluster hub Kubernetes Fleet.
Avant de commencer
- Si vous ne disposez pas d’un compte Azure, créez-en un gratuitement avant de commencer.
- Vous avez besoin d'une ressource Kubernetes Fleet avec un cluster hub et des clusters membres. Si vous n’en avez pas, consultez Créer une ressource Azure Kubernetes Fleet Manager et joindre des clusters membres à l’aide d’Azure CLI.
- L’identité (utilisateur ou principal de service) que vous utilisez doit disposer des autorisations Microsoft.ContainerService/fleets/listCredentials/action sur la ressource Kubernetes Fleet.
Si votre ressource Azure Kubernetes Fleet Manager (Kubernetes Fleet) a été créée avec un cluster de hub privé, vous pouvez l’utiliser pour contrôler de manière centralisée des scénarios tels que la propagation des ressources Kubernetes. Dans cet article, vous allez apprendre à accéder à l’API Kubernetes pour un cluster Kubernetes Fleet Hub privé en toute sécurité à l’aide de la fonctionnalité de tunneling client natif d’Azure Bastion.
L’utilisation d’Azure Bastion protège votre cluster de hub privé contre l’exposition de points de terminaison au monde extérieur, tout en fournissant un accès sécurisé. Pour plus d’informations, consultez Qu’est-ce qu’Azure Bastion ?
Avant de commencer
- Si vous ne disposez pas d’un compte Azure, créez-en un gratuitement avant de commencer.
- Vous avez besoin d'une ressource Kubernetes Fleet avec un cluster hub et des clusters membres. Si vous n’en avez pas, consultez Créer une ressource Azure Kubernetes Fleet Manager et joindre des clusters membres à l’aide d’Azure CLI.
- Vous avez besoin d’un réseau virtuel avec l’hôte Bastion déjà installé.
- Vérifiez que vous avez configuré un hôte Azure Bastion pour le réseau virtuel dans lequel se trouve Fleet Manager. Pour configurer un hôte Azure Bastion, consultez Démarrage rapide : Déployer Bastion avec les paramètres par défaut.
- Bastion doit être une référence SKU Standard ou Premium et la prise en charge du client natif doit être activée dans les paramètres de configuration.
- L’identité (utilisateur ou principal de service) que vous utilisez doit avoir :
- Autorisations pour Microsoft.ContainerService/fleets/listCredentials/action sur la ressource Kubernetes Fleet.
- Microsoft.Network/bastionHosts/read sur la ressource Bastion.
- Microsoft.Network/virtualNetworks/read sur le réseau virtuel du cluster de hub privé.
Accédez à l’API Kubernetes
Définissez les variables d'environnement suivantes pour votre ID d'abonnement, votre groupe de ressources et votre ressource Kubernetes Fleet :
export SUBSCRIPTION_ID=<subscription-id> export GROUP=<resource-group-name> export FLEET=<fleet-name>Définissez l’abonnement Azure par défaut à utiliser à l’aide de la commande
az account set:az account set --subscription ${SUBSCRIPTION_ID}Obtenez le fichier kubeconfig du cluster hub Kubernetes Fleet à l’aide de la commande
az fleet get-credentials:az fleet get-credentials --resource-group ${GROUP} --name ${FLEET}Vous devez obtenir un résultat semblable à l’exemple qui suit :
Merged "hub" as current context in /home/fleet/.kube/configDéfinissez la variable d’environnement suivante pour la valeur
FLEET_IDde la ressource Kubernetes Fleet du cluster hub :export FLEET_ID=/subscriptions/${SUBSCRIPTION_ID}/resourceGroups/${GROUP}/providers/Microsoft.ContainerService/fleets/${FLEET}Autorisez votre identité à accéder au cluster hub Kubernetes Fleet à l’aide des commandes suivantes.
Pour la variable d’environnement
ROLE, vous pouvez utiliser l’une des quatre définitions de rôle intégrées suivantes comme valeur :- Lecteur RBAC Azure Kubernetes Fleet Manager
- Auteur RBAC Azure Kubernetes Fleet Manager
- Administrateur RBAC Azure Kubernetes Fleet Manager
- Administrateur de cluster RBAC Azure Kubernetes Fleet Manager
export IDENTITY=$(az ad signed-in-user show --query "id" --output tsv) export ROLE="Azure Kubernetes Fleet Manager RBAC Cluster Admin" az role assignment create --role "${ROLE}" --assignee ${IDENTITY} --scope ${FLEET_ID}Vous devez obtenir un résultat semblable à l’exemple qui suit :
{ "canDelegate": null, "condition": null, "conditionVersion": null, "description": null, "id": "/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<GROUP>/providers/Microsoft.ContainerService/fleets/<FLEET>/providers/Microsoft.Authorization/roleAssignments/<assignment>", "name": "<name>", "principalId": "<id>", "principalType": "User", "resourceGroup": "<GROUP>", "roleDefinitionId": "/subscriptions/<SUBSCRIPTION_ID>/providers/Microsoft.Authorization/roleDefinitions/18ab4d3d-a1bf-4477-8ad9-8359bc988f69", "scope": "/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<GROUP>/providers/Microsoft.ContainerService/fleets/<FLEET>", "type": "Microsoft.Authorization/roleAssignments" }
Vérifiez que vous pouvez accéder au serveur d’API à l’aide de la commande
kubectl get memberclusters:kubectl get memberclustersSi la commande réussit, votre sortie doit ressembler à l’exemple suivant :
NAME JOINED AGE aks-member-1 True 2m aks-member-2 True 2m aks-member-3 True 2m
Ouvrez le tunnel vers le cluster hub de votre Private Fleet Manager :
export HUB_CLUSTER_ID=<hub-cluster-id-in-FL_resourceGroup> az network bastion tunnel --name <BastionName> --resource-group ${GROUP} --target-resource-id ${HUB_CLUSTER_ID}$ --resource-port 443 --port <LocalMachinePort>Dans une nouvelle fenêtre de terminal, connectez-vous au cluster hub via le tunnel Bastion et vérifiez l’accès au serveur d’API :
kubectl get memberclusters --server=https://localhost:<LocalMachinePort>Si la commande réussit, votre sortie doit ressembler à l’exemple suivant :
NAME JOINED AGE aks-member-1 True 2m aks-member-2 True 2m aks-member-3 True 2m