Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O CanIPull é uma ferramenta de diagnóstico para AKS (Serviço de Kubernetes do Azure). Implante-o usando Azure Copilot ou o manifesto completo do Kubernetes neste artigo. O CanIPull lê a configuração de identidade do cluster a partir de um nó selecionado, verifica a resolução de DNS para um servidor de autenticação do Registro de Contêiner do Azure (ACR) e valida a troca inicial de tokens do ACR.
Este artigo mostra como executar o CanIPull usando Azure Copilot ou um manifesto do Kubernetes. O CanIPull v0.1.0 é executado em apenas um nó Linux AMD64 por vez. Repita a verificação em outros nós com suporte para comparar sua conectividade ou configuração.
Importante
O CanIPull não é um teste de extração de imagem de ponta a ponta. Um resultado bem-sucedido não confirma o acesso ao repositório, ao manifesto da imagem ou à camada da imagem, porque o CanIPull não seleciona nem extrai uma imagem.
Pré-requisitos
Antes de começar, você precisa de:
- Um cluster do AKS existente com pelo menos um nó Linux AMD64.
- Uma instância do ACR existente que você deseja testar.
Para implantar o CanIPull com Azure Copilot, você também precisa ter acesso a Azure Copilot no portal Azure.
Para implantar o CanIPull manualmente, você também precisa:
- CLI do Azure instalado.
- Uma sessão de CLI do Azure autenticada com permissões para obter credenciais de usuário para o cluster do AKS e ler a instância do ACR.
-
kubectlconfigurado para se conectar ao cluster do AKS. - Permissões do Kubernetes para listar nós em escopo de cluster; criar, recuperar, listar, monitorar e excluir pods no namespace
default; e recuperar logs dos pods no namespacedefault.
Implantar o CanIPull com Azure Copilot
O Azure Copilot pode selecionar o cluster do AKS, o nó Linux AMD64 e o servidor de autenticação do ACR e, em seguida, implantar o CanIPull para você. O diagnóstico verifica a resolução de DNS e a troca de token do ACR a partir do nó selecionado. Ele não seleciona nem acessa um repositório ou imagem.
- No portal do Azure, abra Copilot.
- Insira um dos seguintes comandos:
Help me deploy CanIPull to my AKS cluster.Can an AMD64 Linux node in my AKS cluster resolve and authenticate to a specific Azure Container Registry?Help me test ACR token exchange from an AMD64 Linux node in my AKS cluster.
- Selecione o cluster do AKS e o nó Linux AMD64 no qual você deseja que o CanIPull seja executado.
- Selecione a instância do ACR cujo servidor de autenticação você deseja usar para as verificações de troca de token e DNS.
- Examine as seleções e confirme a implantação.
- Após a conclusão da implantação, siga o prompt para abrir o painel Executar comando .
- Examine os logs do CanIPull para obter resultados de DNS, identidade de cluster e troca de token do ACR.
Para obter mais informações sobre essa experiência, consulte Usar CanIPull com Azure Copilot.
Implantar o CanIPull manualmente
Para implantar o CanIPull manualmente, conecte-se ao cluster, selecione um nó Linux AMD64, obtenha o servidor de logon do ACR totalmente qualificado e salve o manifesto completo do pod fornecido nesta seção como canipull.yaml e execute kubectl apply --filename canipull.yaml. O pod de uso único permite que você escolha o nó de destino e inspecione os logs de diagnóstico diretamente com kubectl.
Importante
O manifesto monta /etc/kubernetes/azure.json a partir do nó selecionado. Esse arquivo contém uma configuração de identidade de cluster confidencial. Implante o pod somente se você for um administrador de cluster confiável. Não aumente a verbosidade do CanIPull porque níveis mais altos podem imprimir os tokens de acesso. Exclua o pod assim que concluir o teste.
Conectar ao cluster e selecionar um nó
Defina variáveis para o cluster do AKS e a instância do ACR.
RESOURCE_GROUP=<resource-group> CLUSTER_NAME=<aks-cluster-name> ACR_NAME=<acr-name>Obtenha as credenciais do cluster.
az aks get-credentials \ --resource-group $RESOURCE_GROUP \ --name $CLUSTER_NAMEObtenha o servidor de logon do ACR. O CanIPull espera o servidor de login totalmente qualificado, como
myregistry.azurecr.io, em vez do nome do recurso do ACR.ACR_LOGIN_SERVER=$(az acr show \ --name $ACR_NAME \ --query loginServer \ --output tsv) echo $ACR_LOGIN_SERVERListe os nós AMD64 Linux e escolha o nó em que você deseja executar a verificação de diagnóstico. O CanIPull
v0.1.0suporta apenas nodos AMD64.kubectl get nodes \ --selector kubernetes.io/os=linux,kubernetes.io/arch=amd64 \ --output wide
Criar e implantar o manifesto CanIPull completo
Copie o manifesto completo em um arquivo chamado
canipull.yaml. Substitua<target-linux-node>e<acr-login-server>pelo nome do nó e pelo servidor de logon do ACR da seção anterior. O manifesto fixa o CanIPull ao nó selecionado, desabilita a montagem de tokens de conta de serviço e a escalada de privilégios, e monta a configuração de nó necessária como somente leitura.apiVersion: v1 kind: Pod metadata: name: canipull namespace: default labels: app: canipull spec: automountServiceAccountToken: false nodeName: <target-linux-node> restartPolicy: Never containers: - name: canipull image: mcr.microsoft.com/aks/canipull:v0.1.0 imagePullPolicy: IfNotPresent args: - <acr-login-server> securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL readOnlyRootFilesystem: true volumeMounts: - name: azure-config mountPath: /etc/kubernetes/azure.json readOnly: true volumes: - name: azure-config hostPath: path: /etc/kubernetes/azure.json type: FileCrie o pod.
kubectl apply --filename canipull.yamlAguarde a conclusão do pod.
kubectl get pod canipull --watchPressione Ctrl+C quando o estado do pod mudar para
CompletedouError.
Revise os resultados do CanIPull
Exiba a saída de diagnóstico.
kubectl logs canipull
Um teste bem-sucedido inclui os seguintes resultados:
- O servidor de autenticação do ACR é resolvido por meio do DNS.
- O CanIPull lê a configuração do Azure do nó.
- A identidade do kubelet do cluster ou a entidade de serviço pode se autenticar.
- O ACR aceita a troca de tokens inicial.
Esses resultados confirmam apenas que o nó selecionado pode resolver o servidor de autenticação do ACR e que a identidade do cluster pode concluir a troca inicial de tokens. O CanIPull não puxa uma imagem nem valida o acesso a um repositório, manifesto de imagem ou camada de imagem.
A mensagem de sucesso final da ferramenta usa uma redação mais ampla do que o escopo do teste e se assemelha à seguinte saída:
Your cluster can pull images from <acr-login-server>!
Para verificar um pull de imagem de ponta a ponta, implante uma carga de trabalho que faça referência a uma imagem no repositório de destino.
Se o teste falhar, examine a linha de log marcada FAILED. As causas mais comuns incluem:
- Não é possível resolver o servidor de autenticação do ACR a partir do nó selecionado.
- O nó selecionado não contém
/etc/kubernetes/azure.json. - As credenciais de identidade do cluster não são válidas.
- O ACR rejeita a troca de token para a identidade do kubelet ou a entidade de serviço.
Se a troca de tokens falhar porque a identidade não está autorizada a acessar o ACR, consulte Authenticate with ACR from AKS.
Limpar os recursos
Exclua o pod CanIPull e remova seu acesso à configuração do nó.
kubectl delete pod canipull