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

Quando você acessa um cluster privado do AKS (Serviço de Kubernetes do Azure), precisa se conectar ao cluster por meio da VNet (rede virtual de cluster), uma rede emparelhada ou um ponto de extremidade privado configurado. Essas abordagens exigem uma configuração extra, como configurar uma VPN ou ExpressRoute.

Com a CLI do Azure, você pode usar command invoke para acessar clusters privados sem a necessidade de configurar uma VPN ou o 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 RBAC e Microsoft.ContainerService/managedClusters/commandResults/read controlam as permissões para usar 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 por Run command fornece kubectl e helm para operar seu cluster. jq, xargs, grep e awk estão disponíveis para suporte ao Bash.

Dica

Você pode usar o Azure Copilot para executar kubectl comandos no portal do Azure. Para obter mais informações, consulte Trabalhar com clusters do AKS com eficiência usando o Azure Copilot.

Pré-requisitos

Requisitos de sistema e permissão

Tipo de requisito Specification Como verificar
Versão da CLI do Azure 2.24.0 ou posterior Use o comando az --version para verificar sua versão.
Cluster do AKS privado Já deve existir Se você não tiver um cluster privado existente, siga as etapas em Criar um cluster privado do AKS.
Ações de RBAC Microsoft.ContainerService/managedClusters/runcommand/action e Microsoft.ContainerService/managedClusters/commandResults/read Verifique usando a página de controle de acesso (IAM) do portal do Azure ou o comando Azure CLI az role assignment list.

Executar especificações de recursos do pod de comando

Tipo de recurso Value Impacto
Solicitações de CPU 200m CPU mínima reservada para pod de comando
Solicitações de memória 500Mi Memória mínima reservada para pod de comando
Limites da CPU 500 m Máxima CPU disponível para o pod de comando
Limites de memória 1 Gi Memória máxima disponível para o pod de comando
Tempo limite da API do Azure Resource Manager (ARM) 60 segundos Tempo máximo para agendamento de pod
Limite de tamanho de saída 512 kB Tamanho máximo da saída do comando

Limitações e considerações

Escopo de projeto

  • Não para acesso programático: use Bastion, VPN ou ExpressRoute para chamadas de API automatizadas.
  • Dependência de agendamento de pod: requer recursos de cluster suficientes (consulte as especificações de recursos).
  • Limitações de saída: somente exitCode e texto , sem detalhes no nível da API.
  • As restrições de rede se aplicam: sujeitas a restrições de rede e segurança de cluster.

Possíveis pontos de falha

  • O agendamento de pods falhará se os nós tiverem recursos limitados.
  • Tempo limite da API ARM (60 segundos) se o pod não puder ser agendado rapidamente.
  • Truncamento de saída se a resposta exceder o limite de 512 kB.

Usar command invoke em um cluster do AKS privado com a CLI do Azure

  • Defina variáveis de ambiente para o grupo de recursos e o nome do cluster a serem usados nos comandos subsequentes.

    export AKS_RESOURCE_GROUP="<resource-group-name>"
    export AKS_CLUSTER_NAME="<cluster-name>"
    

    Essas variáveis de ambiente permitem executar comandos do AKS sem precisar reescrever seus nomes.

Usar command invoke para executar um único comando

  • Execute um único comando em seu cluster usando o az aks command invoke comando e o --command parâmetro para especificar o comando a ser executado. O exemplo a seguir obtém os pods no namespace kube-system.

    az aks command invoke \
      --resource-group $AKS_RESOURCE_GROUP \
      --name $AKS_CLUSTER_NAME \
      --command "kubectl get pods -n kube-system"
    

Usar command invoke para executar vários comandos

  • Execute vários comandos no cluster usando o az aks command invoke comando e o --command parâmetro para especificar os comandos a serem executados. O exemplo a seguir adiciona o repositório de gráficos Helm da Bitnami, atualiza o repositório e instala o gráfico nginx.

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

Usar command invoke para executar comandos com um arquivo anexado

Se você quiser executar um comando com um arquivo anexado, o arquivo deverá existir e estar acessível no diretório de trabalho atual. No exemplo a seguir, criamos um arquivo de implantação mínimo para demonstração.

  1. Criar um arquivo de manifesto do Kubernetes chamado deployment.yaml. O arquivo de implantação de exemplo a seguir implanta um nginx pod.

    cat <<EOF > deployment.yaml
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-demo
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: nginx-demo
      template:
        metadata:
          labels:
            app: nginx-demo
        spec:
          containers:
          - name: nginx
            image: nginx:1.21.6
            ports:
            - containerPort: 80
    EOF
    
  2. Aplique o arquivo de implantação ao cluster usando o az aks command invoke comando com o --file parâmetro para anexar o arquivo. O exemplo a seguir aplica o deployment.yaml arquivo ao default namespace.

    az aks command invoke \
      --resource-group $AKS_RESOURCE_GROUP \
      --name $AKS_CLUSTER_NAME \
      --command "kubectl apply -f deployment.yaml -n default" \
      --file deployment.yaml
    

Usar command invoke para executar comandos com todos os arquivos no diretório atual

Observação

Use apenas arquivos pequenos e necessários para evitar exceder os limites de tamanho do sistema.

No exemplo a seguir, criamos dois arquivos de implantação mínimos para demonstração.

  1. Criar dois arquivos de manifesto do Kubernetes nomeados deployment.yaml e configmap.yaml. Os arquivos de implantação de exemplo a seguir implantam um nginx pod e criam um ConfigMap com uma mensagem de boas-vindas.

    cat <<EOF > deployment.yaml
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-demo
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: nginx-demo
      template:
        metadata:
          labels:
            app: nginx-demo
        spec:
          containers:
          - name: nginx
            image: nginx:1.21.6
            ports:
            - containerPort: 80
    EOF
    
    cat <<EOF > configmap.yaml
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: nginx-config
    data:
      welcome-message: "Hello from configmap"
    EOF
    
  2. Aplique os arquivos de implantação ao cluster usando o comando az aks command invoke com o parâmetro --file para anexar o arquivo. O exemplo a seguir aplica os arquivos deployment.yaml e configmap.yaml ao namespace default.

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

Usar Run command em um cluster do AKS privado no portal do Azure

Você pode usar os seguintes kubectl comandos com o Run command recurso:

  • kubectl get nodes
  • kubectl get deployments
  • kubectl get pods
  • kubectl describe nodes
  • kubectl describe pod <pod-name>
  • kubectl describe deployment <deployment-name>
  • kubectl apply -f <file-name>

Usar Run command para executar um único comando

  1. No portal do Azure, navegue até seu cluster privado.
  2. No menu de serviço, em recursos do Kubernetes, selecione Executar comando.
  3. Insira o comando que deseja executar e selecione Executar.

Use Run command para executar comandos com arquivos anexados

  1. No portal do Azure, navegue até seu cluster privado.

  2. No menu de serviço, em recursos do Kubernetes, selecione Executar comando.

  3. Selecione Anexar arquivos>Procurar arquivos.

    Captura de tela da anexação de arquivos ao comando Executar no portal do Azure.

  4. Selecione o arquivo ou os arquivos que você deseja anexar e selecione Anexar.

  5. Insira o comando que deseja executar e selecione Executar.

Desabilitar Run command

Você pode desabilitar o Run command recurso definindo .properties.apiServerAccessProfile.disableRunCommand como true.

Solucionar command invoke 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.

Neste artigo, você aprendeu a acessar um cluster privado e executar comandos nele. Para obter mais informações sobre clusters do AKS, consulte os seguintes artigos: