Para simplificar tus flujos de trabajo de compilación e implementación, algunas Google Cloud cuentas de servicio y entornos de ejecución están preconfigurados con permisos para acceder a los contenedores almacenados en el mismo proyecto.
En esta página se resumen las integraciones habituales con productos y los requisitos asociados para acceder a los contenedores. Google Cloud
Requisitos generales de acceso
De forma predeterminada, las cuentas de servicio de algunas integraciones comunes se configuran con permisos de Cloud Storage para acceder a Container Registry en el mismo proyecto.
En el caso de la cuenta de servicio que usan las VMs de Compute Engine, incluidas las VMs de los clústeres de Google Kubernetes Engine, el acceso se basa tanto en los permisos de IAM como en los ámbitos de acceso de almacenamiento.
Debes configurar o modificar los permisos tú mismo si:
- Estás usando una cuenta de servicio de un proyecto para acceder a Container Registry en otro proyecto
- Estás usando una cuenta de servicio predeterminada con acceso de solo lectura al almacenamiento, pero quieres extraer e insertar imágenes.
- Estás usando una cuenta de servicio personalizada para interactuar con Container Registry
Consulta las secciones específicas de cada producto 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 los permisos adecuados tú mismo en los siguientes casos:
- Cloud Build está en un proyecto distinto de los repositorios a los que quieres que accedan las compilaciones.
- Tus compilaciones usan una cuenta de servicio que no es la predeterminada de Cloud Build. En este caso, debes conceder permisos a la cuenta de servicio para acceder a Container Registry.
Compute Engine
Puedes crear instancias de máquina virtual con imágenes almacenadas en Container Registry.
Permisos obligatorios
Si la instancia de VM y Container Registry están en el mismo Google Cloud proyecto, la cuenta de servicio predeterminada de Compute Engine se configura con permisos para extraer imágenes.
Si la instancia de VM está en otro proyecto o usa una cuenta de servicio diferente, debes conceder a la cuenta de servicio los permisos adecuados para acceder al segmento de almacenamiento que usa Container Registry.
De forma predeterminada, una VM de Compute Engine tiene el ámbito de acceso read-only
configurado para los contenedores de almacenamiento. Para enviar imágenes Docker privadas, la instancia de VM debe tener el ámbito de acceso de almacenamiento read-write
.
Para obtener información sobre los permisos y los ámbitos de acceso, consulta el artículo Integración con los servicios de Google Cloud.
Desplegar imágenes
Cuando creas una VM, puedes desplegar una imagen en ella. Para obtener más información, consulta la documentación de Compute Engine sobre el despliegue de contenedores y la creación de plantillas de instancias de VM.
Instancias de Compute Engine optimizadas para contenedores
Para obtener información sobre cómo iniciar una instancia de Compute Engine optimizada para contenedores mediante una imagen de tu registro, consulta Iniciar un contenedor Docker mediante cloud-config.
Para obtener más información, consulta el artículo 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 obligatorios
Si el clúster de Google Kubernetes Engine y el bucket de almacenamiento de Container Registry están en el mismo Google Cloud proyecto, 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 otro proyecto o si las VMs del clúster usan una cuenta de servicio diferente, debes conceder a la cuenta de servicio los permisos adecuados para acceder al segmento de almacenamiento que usa Container Registry.
De forma predeterminada, una VM de Compute Engine tiene el ámbito de acceso read-only
configurado para los contenedores de almacenamiento. Para enviar imágenes Docker privadas, la instancia de VM debe tener el ámbito de acceso de almacenamiento read-write
.
Para obtener información sobre los permisos y los ámbitos de acceso, consulta el artículo Integración con los servicios de Google Cloud.
Ejecutar 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]
se encuentra enLocation
en la consola. Es una de las cuatro opciones:gcr.io
,us.gcr.io
,eu.gcr.io
oasia.gcr.io
.[PROJECT-ID]
es el ID del proyecto de tu consola Google Cloud . Si el ID de tu proyecto contiene dos puntos (:
), consulta Proyectos con ámbito 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 especifica ninguna etiqueta, Container Registry buscará la etiqueta predeterminadalatest
.
Para obtener más información sobre los comandos de Kubernetes, consulta la descripción general de kubectl.
Cloud Run
Puedes desplegar imágenes almacenadas en Container Registry en Cloud Run.
Permisos obligatorios
Para realizar despliegues en Cloud Run, debes tener el rol de propietario o editor, o bien los roles de administrador de Cloud Run y usuario de cuenta de servicio, o cualquier rol personalizado que incluya esta lista específica de permisos.
Desplegar imágenes
Para obtener información sobre cómo desplegar 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 tiempo de ejecución (como Java 8) o para proporcionar tu propio tiempo de ejecución mediante una imagen Docker o un Dockerfile personalizados.
Con Cloud Build, puedes automatizar la compilación de tus contenedores, transferirlos a Container Registry y desplegarlos en App Engine.
.Permisos obligatorios
De forma predeterminada, la cuenta de servicio predeterminada de App Engine tiene permisos para extraer información de repositorios e insertarla en ellos en el mismo proyecto.
Si App Engine está en otro proyecto, debes conceder permisos a la cuenta de servicio de App Engine para acceder a tu repositorio de Container Registry.
Desplegar en App Engine
Puedes desplegar una imagen alojada en Container Registry en App Engine con la CLI de Google Cloud.
- Crea el archivo de configuración de App Engine de tu aplicación.
- Compila una imagen Docker y transfiérela a tu repositorio. Puedes usar Cloud Build para compilar y enviar tu contenedor al repositorio.
Despliega la imagen en App Engine ejecutando el siguiente comando:
gcloud app deploy --image-url=[HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG]
donde:
[HOSTNAME]
se encuentra enLocation
en la consola. Es una de las cuatro opciones:gcr.io
,us.gcr.io
,eu.gcr.io
oasia.gcr.io
.[PROJECT-ID]
es el ID del proyecto de tu consola Google Cloud . Si el ID de tu proyecto contiene dos puntos (:
), consulta Proyectos con ámbito 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 especifica ninguna etiqueta, Container Registry buscará la etiqueta predeterminadalatest
.