Soluciona problemas de imágenes de contenedor

Obtén información sobre los pasos para solucionar problemas que pueden servirte si tienes dificultades para administrar imágenes de contenedores en Artifact Registry.

No se puede extraer una imagen ni realizar implementaciones en un entorno de ejecución de Google Cloud .

Verifica lo siguiente:

  1. Verifica que la ruta de acceso completa de la imagen que envías sea correcta. La ruta de acceso debe incluir el nombre de host del registro, Google Cloud, ID del proyecto, repositorio y la imagen. Por ejemplo:
    us-west1-docker.pkg.dev/my-project/my-repo/my-image:v1
    Para obtener más información, consulta Nombres de repositorios y de imágenes.
  2. Verifica que la cuenta que extrae la imagen tenga los permisos correctos para leer del repositorio. Si inhabilitaste la concesión automática de roles a las cuentas de servicio, debes otorgar roles de Artifact Registry a las cuentas de servicio del entorno de ejecución.
    • En el caso de las cuentas de servicio de Compute Engine, Cloud Run y Google Kubernetes Engine, debes otorgar el rol de lector del registro de artefactos (roles/artifactregistry.reader) a la cuenta de servicio del entorno de ejecución.
    • Para tu cuenta de servicio de Cloud Build, debes otorgar el rol de escritor de Artifact Registry (roles/artifactregistry.writer) a la cuenta de servicio que ejecuta compilaciones.
    • Si usas Docker o alguna otra herramienta de terceros, debes hacer lo siguiente:

No se puede enviar una imagen a Artifact Registry

Pruebe lo siguiente:

  1. Verifica que el repositorio exista. A diferencia de Container Registry, la creación del repositorio es una operación independiente del envío de la primera imagen. Si el repositorio no existe, créalo.
  2. Verifica que la ruta de acceso completa de la imagen que envías sea correcta. La ruta de acceso debe incluir el nombre de host del registro, el ID del proyecto, el repositorio y la imagen de Google Cloud . Por ejemplo:
    us-west1-docker.pkg.dev/my-project/my-repo/my-image:v1
      

    Cada repositorio de Artifact Registry es un recurso independiente, por lo que no puedes enviar una imagen a una ruta de acceso sin un repositorio. Por ejemplo, us-west1-docker.pkg.dev/my-project/my-image:v1 es una ruta de acceso a la imagen no válida.

    Para obtener más información, consulta Nombres de imágenes y repositorios.

  3. Verifica que la cuenta que envía la imagen tenga permisos para escribir en el repositorio. Si inhabilitaste la concesión automática de roles a las cuentas de servicio, debes otorgar roles de Artifact Registry a las cuentas de servicio del entorno de ejecución.
    • En el caso de las cuentas de servicio de Compute Engine, Cloud Run y Google Kubernetes Engine, debes otorgar el rol de escritor del registro de artefactos (roles/artifactregistry.writer) a la cuenta de servicio del entorno de ejecución.
    • Para tu cuenta de servicio de Cloud Build, debes otorgar el rol de escritor de Artifact Registry (roles/artifactregistry.writer) a la cuenta de servicio que ejecuta compilaciones.
  4. Si Artifact Registry muestra el mensaje The repository has enabled tag immutability, la inmutabilidad de la etiqueta se configura para el repositorio. No puedes enviar una imagen con una etiqueta que ya se usa para otra versión de la misma imagen en el repositorio. Intenta enviar la imagen nuevamente con una etiqueta que no usen otras versiones almacenadas de la imagen.

    Para verificar que un repositorio esté configurado para etiquetas de imagen inmutables, verifica la columna Etiquetas de imagen inmutables en la lista de repositorios de la consola de Google Cloud o ejecuta el siguiente comando:

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

Mensajes ImagePullBackOff y ErrImagePull

Los mensajes con ImagePullBackOff y ErrImagePull indican que GKE no puede extraer una imagen del registro.