Artifact Registry es un servicio universal de administración de paquetes que admite contenedores y otros formatos. Obtén información sobre cómo realizar la transición desde Container Registry para obtener más flexibilidad y control sobre los artefactos.

Usa Container Registry con Google Cloud

Para simplificar los flujos de trabajo de compilación y de implementación, algunas cuentas de servicio y entornos de ejecución de Google Cloud están preconfigurados con permisos para acceder a contenedores almacenados en el mismo proyecto.

En esta página, se resumen las integraciones comunes con productos de Google Cloud y los requisitos asociados para acceder a los contenedores.

Requisitos generales de acceso

De forma predeterminada, las cuentas de servicio para algunas integraciones comunes se configuran con los permisos de Cloud Storage para acceder a Container Registry dentro del mismo proyecto.

En la cuenta de servicio que usan las VM de Compute Engine, incluidas las VM en los clústeres de Google Kubernetes Engine, el acceso se basa en los permisos de IAM y los permisos de acceso de almacenamiento.

Debes configurar o modificar los permisos tú mismo si:

  • Usas una cuenta de servicio en un proyecto para acceder a Container Registry en otro proyecto
  • Usas una cuenta de servicio predeterminada con acceso de solo lectura al almacenamiento, pero deseas extraer y enviar imágenes
  • Usas una cuenta de servicio personalizada para interactuar con Container Registry

Para obtener más información, consulta las secciones específicas del producto.

Cloud Build

De forma predeterminada, la cuenta de servicio de Cloud Build tiene permisos para enviar y extraer imágenes cuando Container Registry está en el mismo proyecto.

Debes configurar tú mismo los permisos adecuados en los siguientes casos:

  • Cloud Build se encuentra en un proyecto diferente que los repositorios a los que quieres que accedan las compilaciones.
  • Tus compilaciones usan una cuenta de servicio distinta de la cuenta de servicio de Cloud Build predeterminada. En este caso, debes otorgar permisos a la cuenta de servicio para acceder a Container Registry.

Compute Engine

Si la instancia de VM y Container Registry están en el mismo proyecto de Google Cloud, la cuenta de servicio predeterminada de Compute Engine se configura con permisos para extraer imágenes.

Si la instancia de VM está en un proyecto diferente o si la instancia de VM usa una cuenta de servicio diferente, debes otorgarle a la cuenta de servicio los permisos adecuados para acceder al depósito de almacenamiento que usa Container. Registro.

De forma predeterminada, una VM de Compute Engine tiene el permiso de acceso read-only configurado para depósitos de almacenamiento. Para enviar imágenes privadas de Docker, la instancia de VM debe tener el permiso de acceso read-write al almacenamiento.

Instancias de Compute Engine optimizadas para contenedores

A fin de obtener información sobre cómo iniciar una instancia de Compute Engine optimizada para contenedores con una imagen de tu registro, consulta cómo iniciar un contenedor de Docker a través de Cloud-Config.

Para obtener más información, consulta Cómo crear y configurar instancias.

Google Kubernetes Engine

Google Kubernetes Engine usa la cuenta de servicio configurada en las instancias de VM de los nodos del clúster para enviar y extraer imágenes.

Permisos necesarios

Si el clúster de Google Kubernetes Engine y el depósito de almacenamiento de Container Registry están en el mismo proyecto de Google Cloud, la cuenta de servicio predeterminada de Compute Engine se configura con los permisos adecuados para enviar o extraer imágenes.

Si el clúster está en un proyecto diferente o si las VM del clúster usan una cuenta de servicio diferente, debes otorgarle a la cuenta de servicio los permisos adecuados para acceder al depósito de almacenamiento que usa Container Registry.

De forma predeterminada, una VM de Compute Engine tiene el permiso de acceso read-only configurado para depósitos de almacenamiento. Para enviar imágenes privadas de Docker, la instancia de VM debe tener el permiso de acceso read-write al almacenamiento.

Ejecuta una imagen

Puedes ejecutar una imagen de Container Registry en un clúster de Google Kubernetes Engine con el siguiente comando:

kubectl run [NAME] --image=[HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG]

donde:

  • [NAME] es el nombre del recurso.
  • [HOSTNAME] aparece bajo Location en la consola. Es una de estas cuatro opciones: gcr.io, us.gcr.io, eu.gcr.io o asia.gcr.io.
  • [PROJECT-ID] es el ID de tu proyecto de Google Cloud Console. Si el ID de tu proyecto contiene dos puntos (:), consulta Proyectos con alcance de dominio.
  • [IMAGE] es el nombre de la imagen en Container Registry.
  • [TAG] es la etiqueta que identifica la versión de la imagen en Container Registry. Si no especificas una etiqueta, Container Registry buscará la etiqueta predeterminada latest.

Para obtener más información sobre los comandos de Kubernetes, consulta la página de descripción general de kubectl.

Entorno flexible de App Engine

Puedes usar el Entorno flexible de App Engine para personalizar un entorno de ejecución existente (como Java 8) o proporcionar tu propio entorno de ejecución mediante una imagen personalizada de Docker o un Dockerfile.

Con Cloud Build, puedes automatizar la compilación de tus contenedores, enviarlos a Container Registry y, luego, implementarlos en App Engine.

Permisos necesarios

De forma predeterminada, la cuenta de servicio predeterminada de App Engine tiene permisos para extraer datos de los repositorios del mismo proyecto y enviarlos a ellos.

Si App Engine está en un proyecto diferente, debes otorgarle permisos a su cuenta de servicio para acceder a tu repositorio de Container Registry.

Implementa en App Engine

Puedes implementar una imagen alojada por Container Registry en App Engine con la herramienta de línea de comandos de gcloud.

  1. Crea el archivo de configuración de App Engine para tu app.
  2. Compila una imagen de Docker y envíala a tu repositorio. Puedes usar Cloud Build para compilar y enviar tu contenedor al repositorio.
  3. Ejecuta el siguiente comando para implementar tu imagen en App Engine:

    gcloud app deploy --image-url=[HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG]
    

Donde:

  • [HOSTNAME] aparece bajo Location en la consola. Es una de estas cuatro opciones: gcr.io, us.gcr.io, eu.gcr.io o asia.gcr.io.
  • [PROJECT-ID] es el ID de tu proyecto de Google Cloud Console. Si el ID de tu proyecto contiene dos puntos (:), consulta Proyectos con alcance de dominio.
  • [IMAGE] es el nombre de la imagen en Container Registry.
  • [TAG] es la etiqueta que identifica la versión de la imagen en Container Registry. Si no especificas una etiqueta, Container Registry buscará la etiqueta predeterminada latest.