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
etMicrosoft.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 commandekubectl 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 commandeshelm
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écutekubectl apply -f deployment.yaml -n default
sur le cluster myPrivateCluster dans myResourceGroup. Le fichierdeployment.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écutekubectl apply -f deployment.yaml configmap.yaml -n default
sur le cluster myPrivateCluster dans myResourceGroup. Les fichiersdeployment.yaml
etconfigmap.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 :
Azure Kubernetes Service