Partager via


Échec de l’extraction d’images à partir de Azure Container Registry à l’aide de l’authentification d’identité managée

Cet article explique comment résoudre les échecs d’extraction d’images lorsque vous effectuez un déploiement sur Azure Container Instances (ACI) à partir de Azure Container Registry (ACR) à l’aide d’une identité managée.

Symptômes

Lorsque vous essayez de déployer un groupe de conteneurs et d’extraire des images à partir d’un registre de conteneurs Azure qui s’exécute derrière un point de terminaison privé à l’aide d’une identité managée, l’extraction d’images échoue.

Cause

Voici quelques causes des échecs d’extraction d’image :

  • Du côté ACI :

    • En fonction de la version de l’API ACI utilisée lors du déploiement du groupe de conteneurs, le format d’informations d’identification fourni dans le modèle ARM du groupe de conteneurs peut ne pas être valide.
    • L’utilisation d’une identité managée dans le groupe de conteneurs peut violer les limitations ACI.
    • La définition de groupe de conteneurs dans le modèle ARM peut être incorrecte.
  • Du côté ACR :

    • Vous utilisez peut-être une version antérieure de l’API.
    • Vous utilisez peut-être une zone DNS privée pour le registre de conteneurs.

Résolution des problèmes du côté ACI

  1. Vérifiez si vous utilisez une version de l’API ACI antérieure à 2021-07-01.

    Si c’est le cas, l’erreur « InvalidImageRegistryCredentialType » peut s’afficher :

    $ az deployment group create -g <resourcegroupname> --template-file containergroup_trusted.json 
    Deployment failed. Correlation ID: <Correlation ID>. { 
      "error": { 
        "code": "InvalidImageRegistryCredentialType", 
        "message": "Identity in 'imageRegistryCredentials' of container group 'acrtestcontainergroup' is not supported." 
      } 
    } 
    

    Pour résoudre ce problème, utilisez l’API ACI version 2021-07-01 ou ultérieure.

  2. Vérifiez si vous ne respectez pas les limitations d’ACI.

    Les limitations sont les suivantes :

    • Groupes de conteneurs injectés sur un réseau virtuel.
    • Windows Server 2016 groupes de conteneurs.
    • Tentative de résolution de la zone DNS privée d’ACR.

    Pour résoudre ce problème, assurez-vous de ne pas enfreindre ces limitations.

  3. Vérifiez si la définition du groupe de conteneurs est correctement formée.

    Si ce n’est pas le cas, les erreurs suivantes peuvent s’afficher :

    • Code d’erreur « AmbiguImageResitryCredentialType » :

      Deployment failed. Correlation ID: <Correlation ID>. { 
      "error": { 
          "code": "AmbiguousImageResitryCredentialType", 
          "message": "The registry credential type in the 'imageRegistryCredentials' of container group 'acrtestcontainergroup' cannot be detected. Please set exactly one of username or identity" 
      } 
      } 
      
    • Code d’erreur « InvalidImageRegistryIdentity » :

      Deployment failed. Correlation ID: <Correlation ID>. { 
      "error": { 
          "code": "InvalidImageRegistryIdentity", 
          "message": "The identity in the 'imageRegistryCredentials' of container group 'acrtestcontainergroup' not found in container group identity list." 
      } 
      } 
      
    • Code d’erreur « InvalidRequestContent » :

      Deployment failed. Correlation ID: <Correlation ID>. { 
      "error": { 
          "code": "InvalidRequestContent", 
          "message": "The request content was invalid and could not be deserialized: 'Required property 'server' not found in JSON. Path 'properties.imageRegistryCredentials[0]', line 1, position 586.'." 
      } 
      }
      

    Pour résoudre ce problème, vous devez fournir les propriétés suivantes dans le modèle ARM :

Résolution des problèmes côté ACR

  1. Vérifiez si le rôle est attribué à l’identité AcrPull managée.

    Si ce n’est pas le cas, l’erreur « InaccessibleImage » peut s’afficher :

    Deployment failed. Correlation ID: <Correlation ID>. { 
      "error": { 
        "code": "InaccessibleImage", 
        "message": "The image 'myacr.azurecr.io/pythonworker:v1' in container group 'acrtestcontainergroup' is not accessible. Please check the image and registry credential." 
      } 
    } 
    

    Pour résoudre ce problème, accordez le AcrPull rôle à l’identité managée. Pour plus d’informations, consultez Accorder des autorisations d’identité pour accéder à d’autres ressources Azure.

  2. Vérifiez si les services approuvés sont activés pour ACR. Si ce n’est pas le cas, activez les services approuvés.

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.