Acessar um cluster privado do AKS (Serviço de Kubernetes do Azure)

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.

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

O pod criado pelo comando run fornece helm e a versão mais recente compatível do kubectl para seu cluster com kustomize.

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 .