Acessar um cluster privado do Serviço Kubernetes do Azure (AKS) usando o recurso de comando invoke ou Run command
Quando você acessa um cluster AKS privado, precisa se conectar ao cluster a partir da rede virtual do cluster, de uma rede emparelhada ou de um ponto de extremidade privado configurado. Essas abordagens exigem a configuração de uma VPN, Rota Expressa, a implantação de uma jumpbox dentro da rede virtual do 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 Rota Expressa. command invoke
permite que você invoque comandos remotamente, como kubectl
e helm
, em seu cluster privado por meio da API do Azure sem se conectar diretamente ao cluster. As Microsoft.ContainerService/managedClusters/runcommand/action
ações e Microsoft.ContainerService/managedclusters/commandResults/read
controlam as permissões de uso command invoke
do .
Com o portal do Azure, você pode usar o Run command
recurso para executar comandos em seu cluster privado. O Run command
recurso usa a mesma command invoke
funcionalidade para executar comandos no cluster.
O pod criado pelo Run command
fornece kubectl
e helm
para operar seu cluster. jq
, xargs
, grep
, e awk
estão disponíveis para suporte Bash.
Antes de começar
Antes de começar, certifique-se de que tem os seguintes recursos e permissões:
- Um cluster privado existente. Se não tiver um, consulte Criar um cluster AKS privado.
- A CLI do Azure versão 2.24.0 ou posterior. Executar
az --version
para localizar a versão. Se precisar de instalar ou atualizar, veja Install Azure CLI (Instalar o Azure CLI). - Acesso às
Microsoft.ContainerService/managedClusters/runcommand/action
funções 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
o , as seguintes desvantagens se aplicam:
- Você obtém apenas exitCode e saída de texto, e perde detalhes de nível de API.
- Um salto extra introduz pontos de falha extras.
O pod criado pelo é codificado Run command
com um 200m CPU
e 500Mi memory
pedido, e um 500m CPU
e 1Gi memory
limite. Em casos raros em que todo o nó está compactado, o pod não pode ser programado dentro da limitação da API ARM de 60 segundos. Isso significa que o Run command
falharia, mesmo que esteja 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 em seu cluster para agendar esse pod de comando.
Nota
A saída para command invoke
é limitada a 512kB de tamanho.
Executar comandos no cluster AKS
Use command invoke
para executar um único comando
Execute um comando no cluster usando o
az aks command invoke --command
comando. O comando de exemplo a seguir executa okubectl get pods -n kube-system
comando no cluster myPrivateCluster em myResourceGroup.az aks command invoke \ --resource-group myResourceGroup \ --name myPrivateCluster \ --command "kubectl get pods -n kube-system"
Use command invoke
para executar vários comandos
Execute vários comandos no cluster usando o
az aks command invoke --command
comando. O comando de exemplo a seguir executa trêshelm
comandos no cluster myPrivateCluster em 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
az aks command invoke --command
comando com o--file
parâmetro. O comando de exemplo a seguir é executadokubectl apply -f deployment.yaml -n default
no cluster myPrivateCluster em myResourceGroup. Odeployment.yaml
arquivo é anexado a partir do diretório atual no computador de desenvolvimento ondeaz 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 comandos com todos os arquivos no diretório atual anexado
Execute comandos com todos os arquivos no diretório atual anexado usando o
az aks command invoke --command
comando com o--file
parâmetro. O comando de exemplo a seguir é executadokubectl apply -f deployment.yaml configmap.yaml -n default
no cluster myPrivateCluster em myResourceGroup. Osdeployment.yaml
arquivos econfigmap.yaml
fazem parte do diretório atual no computador de desenvolvimento ondeaz 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 .
Resolução de Problemas
Para obter informações sobre os problemas mais comuns e az aks command invoke
como corrigi-los, consulte Resolver az aks command invoke
falhas.
Próximos passos
Neste artigo, você aprendeu como acessar um cluster privado e executar comandos nesse cluster. Para obter mais informações sobre clusters AKS, consulte os seguintes artigos:
Azure Kubernetes Service