Résoudre les problèmes liés aux images de conteneurs

Découvrez les étapes de dépannage qui pourraient vous être utiles si vous rencontrez des problèmes lors de la gestion des images de conteneur dans Artifact Registry.

Impossible d'extraire une image ou de la déployer dans un environnement d'exécution Google Cloud

Vérifiez les éléments suivants :

  1. Vérifiez que le chemin d'accès complet de l'image que vous transférez est correct. Le chemin d'accès doit inclure le nom d'hôte du registre, l'ID du projet Google Cloud, le dépôt et l'image. Exemple :

    us-east1-docker.pkg.dev/my-project/my-repo/my-image:v1
    

    Pour en savoir plus, consultez la section Noms des dépôts et des images.

  2. Vérifiez que le compte qui extrait l'image dispose des autorisations nécessaires pour lire le dépôt.

    • Le compte de service Cloud Build par défaut dispose d'autorisations de lecture et d'écriture vers les dépôts d'un même projet Google Cloud. Si vous utilisez un compte de service fourni par l'utilisateur ou que vous transférez des images entre des projets, attribuez le rôle Rédacteur Artifact Registry au compte de service qui exécute les compilations.
    • Par défaut, Compute Engine, Cloud Run et Google Kubernetes Engine disposent d'autorisations de lecture pour les dépôts du même projet. Si Artifact Registry se trouve dans un projet différent de celui de l'environnement d'exécution, vous devez accorder Lecteur Artifact Registry pour le compte de service d'exécution.
    • Si vous utilisez Docker ou un autre outil tiers, vous devez :

Impossible de transférer une image vers Artifact Registry

Vérifiez les éléments suivants :

  1. Vérifiez que le dépôt existe. Contrairement à Container Registry, la création est une opération distincte du transfert de la première image. Si le dépôt n'existe pas, créez-le.

  2. Vérifiez que le chemin d'accès complet de l'image que vous transférez est correct. La doit inclure le nom d'hôte du registre, l'ID du projet Google Cloud, le dépôt, et image. Exemple :

    us-east1-docker.pkg.dev/my-project/my-repo/my-image:v1
    

    Chaque dépôt Artifact Registry est une ressource distincte. Vous ne pouvez donc pas transférer une image vers un chemin d'accès sans dépôt. Par exemple, us-east1-docker.pkg.dev/my-project/my-image:v1 est un chemin d'accès à une image non valide.

    Pour en savoir plus, consultez la section Noms des dépôts et des images.

  3. Vérifiez que le compte qui transfère l'image autorisations permettant d'écrire dans le dépôt.

    • Le compte de service Cloud Build par défaut est autorisé à lire et à écrire des données dans des dépôts faisant partie du même projet Google Cloud. Si vous utilisez un compte de service fourni par l'utilisateur ou que vous transférez des images entre des projets, attribuez le rôle Rédacteur Artifact Registry au compte de service qui exécute les compilations.
    • Par défaut, Compute Engine, Cloud Run et Google Kubernetes Engine disposent d'autorisations de lecture pour les dépôts du même projet. Si vous utilisez un outil tiers dans ces environnements pour transférer des images, vous devez attribuer le rôle "Écrivain Artifact Registry" au compte de service d'exécution.
  4. Si Artifact Registry a renvoyé le message The repository has enabled tag immutability, l'immuabilité des tags est configurée pour le dépôt. Vous ne pouvez pas transférer une image avec un tag déjà utilisé pour une autre version de la même image dans le dépôt. Essayez de pousser le avec un tag qui n'est pas utilisé par d'autres versions stockées l'image.

    Pour vérifier que le dépôt est configuré pour les tags d'image immuables, vérifiez Colonne Tags d'image immuables dans la liste des dépôts de console Google Cloud ou exécutez la commande suivante:

    gcloud artifacts repositories describe REPOSITORY
        --project=PROJECT-ID
        --location=LOCATION
    

Messages ImagePullBackOff et ErrImagePull

Les messages avec ImagePullBackOff et ErrImagePull indiquent qu'une image ne peut pas être extraite du registre par GKE.