Partager via


Accéder à l’API Kubernetes pour un cluster hub Azure Kubernetes Fleet Manager

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 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

  1. 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>
    
  2. Définissez l’abonnement Azure par défaut à utiliser à l’aide de la commande az account set :

    az account set --subscription ${SUBSCRIPTION_ID}
    
  3. 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/config
    
  4. Définissez la variable d’environnement suivante pour la valeur FLEET_ID de la ressource Kubernetes Fleet du cluster hub :

    export FLEET_ID=/subscriptions/${SUBSCRIPTION_ID}/resourceGroups/${GROUP}/providers/Microsoft.ContainerService/fleets/${FLEET}
    
  5. 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"
    }
    
  1. Vérifiez que vous pouvez accéder au serveur d’API à l’aide de la commande kubectl get memberclusters :

    kubectl get memberclusters
    

    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
    
  1. 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>
    
  2. 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