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 otorga a la cuenta de servicio permisos para acceder 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 permisos de acceso, consulta Integra los servicios de Google Cloud.
Implementa imágenes
Cuando creas una VM, puedes implementar una imagen en ella. Para obtener más información, consulta la documentación de Compute Engine para 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, el
La instancia de VM debe tener el permiso de acceso al almacenamiento read-write
.
Para obtener detalles sobre los permisos y los permisos 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 bajoLocation
en la consola. Es una de estas cuatro opciones:gcr.io
,us.gcr.io
,eu.gcr.io
oasia.gcr.io
.[PROJECT-ID]
es el ID del 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 predeterminadalatest
.
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 aprender a implementar una imagen en Cloud Run, consulta la documentación documentación.
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.
- Crea el archivo de configuración de App Engine para tu app.
- Compila una imagen de Docker y envíala a tu repositorio. Puedes usar Cloud Build para compilar y enviar tu contenedor al repositorio.
Ejecuta el siguiente comando para implementar tu imagen en App Engine:
gcloud app deploy --image-url=[HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG]
Donde:
[HOSTNAME]
aparece bajoLocation
en la consola. Es una de estas cuatro opciones:gcr.io
,us.gcr.io
,eu.gcr.io
oasia.gcr.io
.[PROJECT-ID]
es el ID del 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 predeterminadalatest
.