Partager via


Impossible d’extraire des images d’Azure Container Registry vers Azure Web App

Cet article fournit des conseils pour résoudre les erreurs les plus courantes que vous pouvez rencontrer lorsque vous extrayez des images d’un registre de conteneurs Azure vers Azure Web App.

Symptômes et résolution des problèmes initiaux

Nous vous recommandons de commencer votre résolution des problèmes en vérifiant l’intégrité du registre de conteneurs.

Pour vérifier l’intégrité du registre de conteneurs, exécutez la commande suivante :

az acr check-health --name <myregistry> --ignore-errors --yes

Si un problème est détecté, les résultats incluent un code d’erreur et une description. Pour plus d’informations sur ces erreurs et les solutions possibles, consultez informations de référence sur les erreurs de vérification d’intégrité.

Note

Si vous recevez des erreurs liées à Helm ou un notarié, cela ne signifie pas que votre Registre de conteneurs ou AKS ne fonctionne pas ou a un problème. Il indique simplement les problèmes tels que le fait que Helm ou le notarié n’est pas installé, ou qu’Azure CLI n’est pas compatible avec la version actuellement installée de Helm ou d’Un avocat.

Ensuite, identifiez le message d’erreur lié à l’extraction qui est essentiel pour la résolution des problèmes :

  1. Connectez-vous au Portail Azure.
  2. Dans votre application web, sélectionnez Journal du Centre>de déploiement. Sélectionnez la validation pour afficher les détails du journal. Vous pouvez également afficher les journaux du processus d’extraction d’image en temps réel en vérifiant le flux de journal dans la section Surveillance .

Les sections suivantes vous aident à résoudre les erreurs les plus courantes affichées dans les journaux d’activité d’application web.

Erreur 1 : Non autorisé

Head \" https://<acr-name>.azurecr.io/v2/<repository>/manifests/<tag>\": unauthorized

Solution pour l’authentification basée sur l’utilisateur administrateur

L’erreur « non autorisée » peut être provoquée par des informations d’identification d’administrateur incorrectes. Cela inclut le serveur de connexion, le nom d’utilisateur ou le mot de passe que vous avez configuré dans les variables d’environnement d’application web.

Pour résoudre ce problème, procédez comme suit :

  1. Dans le Portail Azure, accédez à votre conteneur de Registre. Dans la section Paramètres, sélectionnez Clés d’accès. Vérifiez les paramètres des informations d’identification de l’utilisateur administrateur du serveur de connexion, du nom d’utilisateur et du mot de passe.
  2. Accédez à votre application web. Dans la section Paramètres, sélectionnez Variables d’environnement.
  3. Assurez-vous que les trois variables configurées pour le registre de conteneurs (serveur de connexion, nom d’utilisateur, mot de passe) correspondent aux paramètres des informations d’identification de l’utilisateur administrateur dans le conteneur de Registre.

Solution pour l’authentification basée sur une identité managée

Lorsque vous utilisez l’authentification basée sur l’identité managée d’Azure Web App, l’autorisation Microsoft.ContainerRegistry/registries/pull/read doit être affectée à l’identité managée pour effectuer l’action d’extraction.

Les rôles intégrés Azure qui contiennent l’autorisation Microsoft.ContainerRegistry/registries/pull/read sont les suivants :

  • AcrPull
  • AcrPush
  • ReaderContributor
  • Owner

Pour plus d’informations, consultez Rôles et autorisations Azure Container Registry.

Lorsque vous lancez une opération d’extraction à partir du registre de conteneurs, le rôle AcrPull est automatiquement affecté à l’identité managée Azure Web App. Vous n’avez pas besoin d’ajouter manuellement des autorisations. Toutefois, vous devez vous assurer que la création de l’attribution de rôle n’est pas bloquée par, par exemple, une stratégie Azure. En outre, vérifiez que l’attribution de rôle n’a pas été supprimée.

Erreur 2 : Le manifeste marqué par <balise> est introuvable

DockerApiException : Docker API responded with status code=NotFound, response={"message":"manifest for <acr-name>.azurecr.io/<repository>:<tag> not found: manifest unknown: manifest tagged by \"<tag>\" is not found"}

Solution : Vérifiez que la balise existe

Le message d’erreur indique que la balise associée à l’image que vous essayez d’extraire n’a pas été trouvée. Vérifiez que la balise existe dans le référentiel et le Registre associés.

Pour utiliser Azure CLI pour rechercher les balises dans le référentiel et le Registre associés, exécutez la commande suivante :

az acr repository show-tags -n <ContainerRegistryName> --repository <RepositoryName>

Pour utiliser le Portail Azure pour rechercher les balises qui se trouvent dans le référentiel et le Registre associés, procédez comme suit :

Accédez à votre conteneur de Registre. Sous Services, sélectionnez Référentiels, ouvrez le référentiel associé, puis vérifiez la liste des balises.

Note

La commande az acr repository show-tags, ou la vérification des référentiels à partir de l’Portail Azure fonctionne uniquement si les règles réseau du registre de conteneurs l’autorisent.

Erreur 3 : Le client avec adresse IP n’est pas autorisé à accéder

DockerApiException: Docker API responded with status code=InternalServerError, response={"message":"Head \"https:// <acr-name>.azurecr.io/v2/<repository>/manifests/<tag>\": denied: client with IP '<web-app-outbound-ip>' is not allowed access. Refer https://aka.ms/acr/firewall to grant access."}

Solution 1 : Vérifiez que le pare-feu intégré du registre de conteneurs autorise l’adresse IP de votre appareil

Par défaut, un registre de conteneurs accepte les connexions via Internet à partir de tous les réseaux. Le registre de conteneurs dispose d’un pare-feu intégré qui peut restreindre l’accès à des adresses IP ou des CIDR spécifiques, ou désactiver complètement l’accès au réseau public.

Ce problème peut se produire si les adresses IP de votre application web sont bloquées par le pare-feu intégré du registre de conteneurs.

Pour résoudre ce problème, assurez-vous que le pare-feu intégré autorise les adresses IP sortantes de l’application web qui doit extraire l’image.

Pour rechercher les adresses IP sortantes de l’application web, procédez comme suit :

  1. Dans le Portail Azure, accédez à votre application web.
  2. Dans la page Vue d’ensemble , recherchez l’adresse IP sortante, puis sélectionnez Afficher plus pour obtenir la liste complète des adresses IP sortantes.

Pour utiliser Azure CLI pour rechercher les adresses IP sortantes de l’application web, consultez Rechercher des adresses IP sortantes dans Azure App Service.

Solution 2 : Configurer l’intégration de réseau virtuel pour l’application web

Si vous devez désactiver complètement l’accès au réseau public ou autoriser uniquement les réseaux sélectionnés dans le registre de conteneurs sans ajouter manuellement les adresses IP de l’application web, l’autre option consiste à extraire l’image en privé. Pour extraire des images en privé, vous devez configurer le registre de conteneurs à l’aide d’un point de terminaison privé et activer l’intégration de réseau virtuel pour l’application web.

Vous pouvez configurer l’intégration de réseau virtuel côte à côte à l’application web en procédant comme suit :

  1. Dans le Portail Azure, accédez à votre application web, puis sélectionnez Mise en réseau.

  2. Sous configuration du trafic sortant, configurez Réseau virtuel intégration, sélectionnez Ajouter une intégration de réseau virtuel, puis spécifiez l’abonnement, le réseau virtuel et le sous-réseau.

  3. Dans la page de configuration du réseau virtuel, vérifiez que l’option d’extraction d’image conteneur est sélectionnée.

    Capture d’écran de l’option d’extraction d’image conteneur.

Pour extraire l’image sur le réseau virtuel, vous devez activer l’image pull sur le réseau virtuel dans le Centre de déploiement de l’application web. En outre, si le registre de conteneurs a l’accès public désactivé ou défini sur des réseaux spécifiques, vous pouvez recevoir le message « Échec du chargement des balises ACR - Échec », comme illustré dans l’exemple suivant. Cette erreur est attendue dans ce scénario. Si cela se produit, les options de liste déroulante pour l’image et la balise ne sont pas disponibles. Vous devrez entrer manuellement l’image et la balise.

Capture d’écran de l’échec du chargement du message d’erreur balises ACR.

Prochaines étapes

Si ces conseils de dépannage ne résolvent pas le problème, tenez compte des éléments suivants :

Vérifiez les groupes de sécurité réseau et les tables de routage associées à vos sous-réseaux. Si une appliance virtuelle, telle qu’un pare-feu, contrôle le trafic entre les sous-réseaux, passez en revue le pare-feu et ses règles d’accès.

Utilisez le service Kudu pour une résolution des problèmes supplémentaire. Vous pouvez vous connecter au service Kudu. Par exemple, utilisez Bash pour tester la résolution DNS en exécutant nslookup <acr-name>.azurecr.io, ou vérifiez la connectivité à l’aide tcpping <acr-name>.azurecr.iode .

Contactez-nous pour obtenir de l’aide

Pour toute demande ou assistance, créez une demande de support ou posez une question au support de la communauté Azure. Vous pouvez également soumettre des commentaires sur les produits à la communauté de commentaires Azure.