Compartilhar via


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 e Microsoft.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 comando kubectl 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 comandos helm 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 executa kubectl apply -f deployment.yaml -n default no cluster myPrivateCluster no myResourceGroup. O arquivo deployment.yaml está anexado a partir do diretório atual no computador de desenvolvimento em que az 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 executa kubectl apply -f deployment.yaml configmap.yaml -n default no cluster myPrivateCluster no myResourceGroup. Os arquivos deployment.yaml e configmap.yaml fazem parte do diretório atual no computador de desenvolvimento em que o az 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: