Partager via


Accédez à un cluster Azure Kubernetes Service privé (AKS) à l’aide de la fonction d’invocation de commande ou d’exécution de commande

Lorsque vous accédez à un cluster AKS privé, vous devez vous connecter à ce cluster à partir du réseau virtuel du cluster, d’un réseau appairé ou d’un point de terminaison privé configuré. Ces approches nécessitent la configuration d’un VPN, ExpressRoute, le déploiement d’un serveur de rebond au sein du réseau virtuel du cluster ou la création d’un point de terminaison privé dans un autre réseau virtuel.

Avec l’interface Azure CLI, vous pouvez également utiliser command invoke pour accéder aux clusters privés sans devoir configurer un VPN ou Express Route. command invoke vous permet d’invoquer à distance des commandes comme kubectl et helm sur votre cluster privé par le biais de l’API Azure sans vous connecter directement au cluster. Les actions Microsoft.ContainerService/managedClusters/runcommand/action et Microsoft.ContainerService/managedclusters/commandResults/read contrôlent les autorisations d’utilisation de command invoke.

Avec le Portail Azure, vous pouvez utiliser la fonctionnalité Run command pour exécuter des commandes sur votre cluster privé. La fonctionnalité Run command utilise la même fonctionnalité command invoke pour exécuter des commandes sur votre cluster.

Le pod créé par le Run command fournit des kubectl et des helm pour l’exploitation de votre cluster. jq, xargs, grep et awk sont disponibles pour la prise en charge de Bash.

Avant de commencer

Avant de commencer, assurez-vous de disposer des ressources et des autorisations suivantes :

  • Un cluster privé existant. Si vous n’en avez pas, consultez Créer un cluster AKS privé.
  • Azure CLI version 2.24.0 ou ultérieure. Exécutez az --version pour trouver la version. Si vous devez installer ou mettre à niveau, voir Installer Azure CLI.
  • Accès aux rôles Microsoft.ContainerService/managedClusters/runcommand/action et Microsoft.ContainerService/managedclusters/commandResults/read sur le cluster.

Limites

Cette fonctionnalité est conçue pour simplifier l’accès au cluster et n’est pas conçue pour l’accès programmatique. Si vous avez un programme invoquant Kubernetes à l’aide de Run command, les inconvénients suivants existent :

  • Vous obtenez uniquement exitCode et sortie de texte, et vous perdez les détails au niveau de l’API.
  • Un tronçon supplémentaire introduit des points d’échec supplémentaires.

Le pod créé par le Run command est codé en dur avec une requête 200m CPU et 500Mi memory, ainsi qu’une limite 500m CPU et 1Gi memory. Dans de rares cas où tous vos nœuds sont compressés, le pod ne peut pas être planifié dans la limite de l’API ARM de 60 secondes. Cela signifie que le Run command échouerait, même s’il est configuré pour la mise à l’échelle automatique.

command invoke exécute les commandes à partir de votre cluster, de sorte que toutes les commandes exécutées de cette manière sont soumises aux restrictions réseau (et autres) que vous avez configurées sur votre cluster. Assurez-vous également qu’il existe suffisamment de nœuds et de ressources dans votre cluster pour planifier ce pod de commande.

Remarque

La sortie pour command invoke est limitée à 512 ko.

Exécuter des commandes sur votre cluster AKS

Utiliser command invoke pour exécuter une seule commande

  • Exécutez une commande sur votre cluster à l’aide de la commande az aks command invoke --command. L’exemple de commande ci-dessous exécute la commande kubectl get pods -n kube-system sur le cluster myPrivateCluster dans myResourceGroup.

    az aks command invoke \
      --resource-group myResourceGroup \
      --name myPrivateCluster \
      --command "kubectl get pods -n kube-system"
    

Utiliser command invoke pour exécuter plusieurs commandes

  • Exécutez plusieurs commandes sur votre cluster à l’aide de la commande az aks command invoke --command. L’exemple de commande ci-dessous exécute 3 commandes helm sur le cluster myPrivateCluster dans myResourceGroup.

    az aks command invoke \
      --resource-group myResourceGroup \
      --name myPrivateCluster \
      --command "helm repo add bitnami https://charts.bitnami.com/bitnami && helm repo update && helm install my-release bitnami/nginx"
    

Utiliser command invoke pour exécuter des commandes avec un fichier ou un répertoire attaché

  • Exécutez des commandes avec un fichier ou un répertoire joint à l’aide de la commande az aks command invoke --command avec le paramètre --file. L’exemple de commande ci-dessous exécute kubectl apply -f deployment.yaml -n default sur le cluster myPrivateCluster dans myResourceGroup. Le fichier deployment.yaml est joint à partir du répertoire actif de l’ordinateur de développement où az aks command invoke a été exécuté.

    az aks command invoke \
      --resource-group myResourceGroup \
      --name myPrivateCluster \
      --command "kubectl apply -f deployment.yaml -n default" \
      --file deployment.yaml
    

Utilisez command invoke pour exécuter des commandes avec tous les fichiers du répertoire actif joints

  • Exécutez des commandes avec tous les fichiers du répertoire actif joints à l’aide de la commande az aks command invoke --command avec le paramètre --file. L’exemple de commande ci-dessous exécute kubectl apply -f deployment.yaml configmap.yaml -n default sur le cluster myPrivateCluster dans myResourceGroup. Les fichiers deployment.yaml et configmap.yaml font partie du répertoire actif de l’ordinateur de développement où az aks command invoke a été exécuté.

    az aks command invoke \
      --resource-group myResourceGroup \
      --name myPrivateCluster \
      --command "kubectl apply -f deployment.yaml configmap.yaml -n default" \
      --file .
    

Dépannage

Pour plus d’informations sur les problèmes les plus courants liés à az aks command invoke et sur la façon de les résoudre, consultez Résoudre les échecs « az aks command invoke ».

Étapes suivantes

Dans cet article, vous avez appris à accéder à un cluster privé et à y exécuter des commandes. Pour plus d’informations sur les clusters AKS, consultez la documentation suivante :