Resolver problemas de rede com o registo

Este artigo ajuda-o a resolver problemas que possa encontrar ao aceder a um registo de contentores Azure numa rede virtual ou atrás de um firewall ou servidor proxy.

Symptoms

Pode incluir um ou mais dos seguintes elementos:

  • Não é possível enviar ou puxar imagens e recebe erro dial tcp: lookup myregistry.azurecr.io
  • Não é possível enviar ou puxar imagens e recebe erro Client.Timeout exceeded while awaiting headers
  • Não é possível enviar ou puxar imagens e recebe erro de CLI do Azure Could not connect to the registry login server
  • Não é possível puxar imagens do registo para Azure Kubernetes Service ou outro Azure Service
  • Se não conseguir aceder a um registo atrás de um proxy HTTPS, recebe erro Error response from daemon: login attempt failed with status: 403 Forbidden ou Error response from daemon: Get <registry>: proxyconnect tcp: EOF Login failed
  • Não é possível configurar as definições de rede virtual e recebe erro Failed to save firewall and virtual network settings for container registry
  • Não é possível acessar ou exibir configurações do Registro no portal do Azure ou gerenciar o Registro usando a CLI do Azure
  • Impossível adicionar ou modificar definições de rede virtual ou regras de acesso público
  • O ACR Tasks não consegue enviar ou puxar imagens
  • O Microsoft Defender para a Cloud não consegue digitalizar imagens no registo, ou os resultados de análise não aparecem no Microsoft Defender para a Cloud
  • Recebe erro host is not reachable ao tentar aceder a um registo configurado com um endpoint privado.

Causas

  • Um firewall cliente ou proxy impede o acesso - solução
  • As regras de acesso à rede pública no registo impedem o acesso - solução
  • A configuração de rede virtual ou endpoint privado impede o acesso - solução
  • Tenta integrar o Microsoft Defender para a Cloud ou certos outros serviços Azure com um registo que tenha um ponto de extremidade privado, ponto de extremidade de serviço ou regras de acesso a IP públicas - solução

Diagnóstico adicional

Execute o comando az acr check-health para obter mais informações sobre a integridade do ambiente do Registro e, opcionalmente, acessar um Registro de destino. Por exemplo, diagnosticar certos problemas de conectividade ou configuração de rede.

Consulte Verificar a integridade de um registro de contêiner do Azure para obter exemplos de comando. Se forem reportados erros, reveja a referência de erro e as secções seguintes para soluções recomendadas.

Se estiver a ter problemas ao usar um Serviço Azure Kubernetes com um registo integrado, execute o comando az-aks check-acr para validar que o cluster AKS consegue aceder ao registo.

Nota

Alguns sintomas de conectividade de rede também podem ocorrer quando há problemas com a autenticação ou autorização do registo. Consulte Resolução de problemas de login, autenticação e autorização do registo.

Soluções potenciais

Configurar o acesso ao firewall do cliente

Para aceder a um registo por trás de um firewall cliente ou servidor proxy, configure regras de firewall para aceder aos endpoints públicos REST e dados do registo. Se os endpoints de dados dedicados estiverem ativados, precisa de regras para aceder a:

  • Endpoint REST: <registryname>.azurecr.io
  • Endpoint(s) de dados: <registry-name>.<region>.data.azurecr.io

Para um registo geo-replicado, configure o acesso ao endpoint de dados para cada réplica regional.

Por trás de um proxy HTTPS, certifique-se de que tanto o seu cliente Docker como o daemon Docker estão configurados para comportamento de proxy. Se mudares as definições do teu proxy para o daemon Docker, certifica-te de reiniciar o daemon.

Registos de recursos do registo na tabela ContainerRegistryLoginEvents podem ajudar a diagnosticar uma tentativa de ligação bloqueada.

Ligações úteis:

Configurar o acesso público ao registo

Se aceder a um registo pela internet, confirme que o registo permite o acesso à rede pública a partir do seu cliente. Por padrão, o registo de contentores do Azure permite o acesso aos endpoints públicos do registo de todas as redes. Um registo pode limitar o acesso a redes selecionadas ou a endereços IP selecionados.

Se o registo estiver configurado para uma rede virtual com um endpoint de serviço, desativar o acesso à rede pública também desativa o acesso sobre o endpoint de serviço. Se o seu registo estiver configurado para uma rede virtual com Private Link, as regras de rede IP não se aplicam aos endpoints privados do registo.

Ligações úteis:

Configurar o acesso ao VNet

Confirme que a rede virtual está configurada com um ponto final privado para Private Link ou um ponto final de serviço (prévia). Atualmente, um endpoint Azure Bastion não é suportado.

Se estiver configurado um endpoint privado, confirme que o DNS resolve o FQDN público do registo, como myregistry.azurecr.io para o endereço IP privado do registo.

  • Execute o comando az acr check-health com o parâmetro --vnet para confirmar o roteamento DNS para o endpoint privado na rede virtual.
  • Use uma utilidade de rede, como dig ou nslookup para consulta DNS.
  • Certifique-se de que os registos DNS estão configurados para o FQDN do registo e para cada um dos FQDNs do endpoint de dados.

Revise as regras NSG e as etiquetas de serviço usadas para limitar o tráfego de outros recursos na rede para o registo.

Se estiver configurado um endpoint de serviço para o registo, confirme que foi adicionada uma regra de rede ao registo que permite o acesso a partir dessa sub-rede de rede. O endpoint de serviço só suporta acesso a partir de máquinas virtuais e clusters AKS na rede.

Se quiser restringir o acesso ao registo usando uma rede virtual numa subscrição Azure diferente, certifique-se de registar o Microsoft.ContainerRegistry fornecedor de recursos nessa subscrição. Registe o fornecedor de recursos para o Azure Container Registry usando o portal Azure, CLI do Azure ou outras ferramentas Azure.

Se o Azure Firewall ou uma solução semelhante estiver configurado na rede, verifique se o tráfego de saída de outros recursos, como um cluster AKS, está ativado para chegar aos endpoints do registo.

Ligações úteis:

Configurar o acesso ao serviço

Atualmente, o acesso a um registo de contentores com restrições de rede não é permitido a partir de vários serviços Azure:

  • O Microsoft Defender para a Cloud não pode realizar varredura de vulnerabilidades de imagem num registo que restrinja o acesso a endpoints privados, sub-redes selecionadas ou endereços IP.
  • Os recursos de certos serviços Azure não conseguem aceder a um registo de contentores com restrições de rede, incluindo Serviço de Aplicações do Azure e Azure Container Instances.

Se for necessário aceder ou integrar estes serviços Azure com o seu registo de contentores, remova a restrição de rede. Por exemplo, remover os endpoints privados do registo, ou remover ou modificar as regras de acesso público do registo.

Pode configurar um registo restrito à rede para permitir o acesso a partir de serviços de confiança selecionados.

Ligações úteis:

Resolução de problemas avançados

Se a recolha de registos de recursos estiver ativada no registo, consulte o registo ContainterRegistryLoginEvents. Esse log armazena eventos e status de autenticação, incluindo a identidade de entrada e o endereço IP. Consulte o log em busca de falhas de autenticação do Registro.

Ligações úteis:

Próximos passos

Se não resolver o problema aqui, consulte as seguintes opções.