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

Consulta las secciones específicas de los productos para obtener más información.

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 al de los repositorios a los que deseas que accedan las compilaciones.
  • Tus compilaciones usan una cuenta de servicio distinta de la cuenta de servicio predeterminada de Cloud Build. En este caso, debes otorgarle permisos a la cuenta de servicio para acceder a Container Registry.

Compute Engine

Puedes crear instancias de VM con imágenes almacenadas en Container Registry.

Permisos necesarios

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 de almacenamiento read-write.

Para obtener detalles sobre los permisos y los alcances de acceso, consulta Cómo realizar la integración con los servicios de Google Cloud.

Implementa imágenes

Cuando creas una VM, puedes implementarle una imagen. Para obtener más información, consulta la documentación de Compute Engine sobre cómo implementar contenedores y crear plantillas de instancias de VM.

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 de almacenamiento read-write.

Para obtener detalles sobre los permisos y los alcances de acceso, consulta Cómo realizar la integración con los servicios de Google Cloud.

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 la consola de Google Cloud. 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.

Cloud Run

Puedes implementar imágenes almacenadas en Container Registry en Cloud Run.

Permisos necesarios

Para implementar en Cloud Run, debes tener la función de propietario o editor, ambas funciones de administrador y de usuario de cuenta de servicio de Cloud Run o cualquier función personalizada que incluya esta lista específica de permisos.

Implementa imágenes

Para obtener información sobre cómo implementar una imagen en Cloud Run, consulta la documentación de Cloud Run.

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 Google Cloud CLI.

  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 la consola de Google Cloud. 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.