Acessar um cluster privado do Serviço de Kubernetes do Azure (AKS) usando o recurso de invocação de comando ou Executar comando
Ao acessar um cluster do AKS privado, você deve se conectar ao cluster pela rede virtual do cluster, rede emparelhada ou um ponto de extremidade privado configurado. Essas abordagens exigem a configuração de uma VPN, do ExpressRoute, a implantação de um jumpbox dentro da rede virtual de cluster ou a criação de um ponto de extremidade privado dentro de outra rede virtual.
Com a CLI do Azure, você pode usar command invoke
para acessar clusters privados sem a necessidade de configurar uma VPN ou ExpressRoute. O command invoke
permite que você invoque comandos remotamente, como kubectl
e helm
, no seu cluster privado por meio da API do Azure sem se conectar diretamente ao cluster. As ações Microsoft.ContainerService/managedClusters/runcommand/action
e Microsoft.ContainerService/managedclusters/commandResults/read
controlam as permissões de uso de command invoke
.
Com o portal do Azure, você pode usar o recurso Run command
para executar comandos no cluster privado. O recurso Run command
usa a mesma funcionalidade command invoke
para executar comandos no cluster.
O pod criado pelo Run command
fornece kubectl
e helm
para operar o cluster. jq
, xargs
, grep
e awk
estão disponíveis para suporte ao Bash.
Antes de começar
Antes de começar, confirme se você tem os seguintes recursos implantados:
- Um cluster privado existente. Se você não tiver um, consulte Criar um cluster do AKS privado.
- A CLI do Azure versão 2.24.0 ou posterior. Execute
az --version
para encontrar a versão. Se você precisa instalar ou atualizar, consulte Instalar a CLI do Azure. - Acesso às funções
Microsoft.ContainerService/managedClusters/runcommand/action
eMicrosoft.ContainerService/managedclusters/commandResults/read
no cluster.
Limitações
Esse recurso foi projetado para simplificar o acesso ao cluster e não foi projetado para acesso programático. Se você tiver um programa invocando o Kubernetes usando Run command
, as seguintes desvantagens se aplicarão:
- Você só obtém exitCode e text output e perde os detalhes do nível da API.
- Um salto extra introduz pontos de falha extras.
O pod criado pelo Run command
é codificado com uma solicitação de 200m CPU
e 500Mi memory
e um limite de 500m CPU
e 1Gi memory
. Em casos raros em que todo o nó está empacotado, o pod não pode ser agendado dentro da limitação da API do ARM de 60 segundos. Isso significa que o Run command
falharia, mesmo que estivesse configurado para dimensionamento automático.
command invoke
executa os comandos do cluster, portanto, todos os comandos executados dessa maneira estão sujeitos às restrições de rede configuradas e a quaisquer outras restrições configuradas. Verifique se há nós e recursos suficientes no seu cluster para agendar esse pod de comando.
Observação
A saída para command invoke
é limitada a 512 kB de tamanho.
Executar comandos no cluster do AKS
Usar command invoke
para executar um único comando
Execute um comando no seu cluster usando o comando
az aks command invoke --command
. O exemplo de comando a seguir executa o comandokubectl get pods -n kube-system
no cluster myPrivateCluster no myResourceGroup.az aks command invoke \ --resource-group myResourceGroup \ --name myPrivateCluster \ --command "kubectl get pods -n kube-system"
Usar command invoke
para executar vários comandos
Execute vários comandos no seu cluster usando o comando
az aks command invoke --command
. O exemplo de comando a seguir executa três comandoshelm
no cluster myPrivateCluster no 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"
Use command invoke
para executar comandos com um arquivo ou diretório anexado
Execute comandos com um arquivo ou diretório anexado usando o comando
az aks command invoke --command
com o parâmetro--file
. O exemplo de comando a seguir executakubectl apply -f deployment.yaml -n default
no cluster myPrivateCluster no myResourceGroup. O arquivodeployment.yaml
está anexado a partir do diretório atual no computador de desenvolvimento em queaz aks command invoke
foi executado.az aks command invoke \ --resource-group myResourceGroup \ --name myPrivateCluster \ --command "kubectl apply -f deployment.yaml -n default" \ --file deployment.yaml
Use command invoke
para executar os comandos com todos os arquivos do diretório atual anexados
Execute comandos com todos os arquivos no diretório atual anexados usando o comando
az aks command invoke --command
com o parâmetro--file
. O exemplo de comando a seguir executakubectl apply -f deployment.yaml configmap.yaml -n default
no cluster myPrivateCluster no myResourceGroup. Os arquivosdeployment.yaml
econfigmap.yaml
fazem parte do diretório atual no computador de desenvolvimento em que oaz aks command invoke
foi executado.az aks command invoke \ --resource-group myResourceGroup \ --name myPrivateCluster \ --command "kubectl apply -f deployment.yaml configmap.yaml -n default" \ --file .
Solução de problemas
Para obter informações sobre os problemas mais comuns com az aks command invoke
e como corrigi-los, confira Resolver az aks command invoke
falhas.
Próximas etapas
Neste artigo, você aprendeu a acessar um cluster privado e executar comandos nesse cluster. Para obter mais informações sobre clusters do AKS, consulte os seguintes artigos:
Azure Kubernetes Service