Cloud Run es una plataforma serverless (sin servidor) totalmente gestionada de Google Cloud que permite ejecutar aplicaciones contenedorizadas de forma rápida y escalable, sin necesidad de gestionar infraestructura. Escala automáticamente los contenedores desde cero hasta cientos de instancias según la demanda, cobrando solo por el tiempo de ejecución.
Definición de Cloud Run
Cloud Run es un servicio serverless de Google Cloud Platform (GCP) que permite ejecutar aplicaciones contenedorizadas (basadas en contenedores Docker) sin necesidad de gestionar servidores o infraestructura.
Cloud Run escala automáticamente tus servicios en función del tráfico, incluso hasta cero si no hay solicitudes, y cobra solo por el tiempo que se están ejecutando.
Características clave
- 100% gestionado por Google Cloud (no tienes que administrar servidores).
- Escalado automático, incluso hasta cero instancias cuando no hay tráfico.
- Basado en contenedores (imágenes compatibles con Docker).
- Compatible con cualquier lenguaje, framework o librería, ya que ejecuta contenedores estándar.
- Despliegue sencillo desde consola, CLI o CI/CD.
- Integración con otros servicios de GCP, como Cloud SQL, Secret Manager, IAM, etc.
Definiciones clave para entender Cloud Run
✅ Serverless: Es un modelo de computación en la nube donde el proveedor (como GCP) se encarga completamente de la infraestructura: aprovisionamiento, escalado y mantenimiento de servidores.
En Cloud Run, serverless significa que tú solo subes tu aplicación y Google se encarga del resto, escalando automáticamente según el tráfico y cobrando solo por el tiempo real de uso.
🧩 Proyecto (Project): Es la unidad organizativa principal en GCP.
Todo lo que haces en Cloud Run (crear servicios, almacenar imágenes, acceder a recursos) se hace dentro de un proyecto. Cada proyecto tiene un ID único y su propia configuración de facturación, APIs habilitadas y permisos.
🌎 Región: Es la ubicación geográfica en la que se ejecutarán tus servicios en la nube. En Cloud Run, elegir una región determina dónde se alojará físicamente tu aplicación. Esto puede afectar la latencia, la disponibilidad y el cumplimiento normativo.
🔧 Servicio (Service): Es una aplicación desplegada en Cloud Run.
Cada vez que subes una imagen de contenedor, se crea un servicio con una URL pública (o privada), configuraciones de entorno, escalado y autenticación. Puedes tener múltiples versiones del mismo servicio y dividir el tráfico entre ellas.
📦 Contenedor (Docker Container):Es una unidad ligera, portátil y autosuficiente que incluye todo lo necesario para ejecutar una aplicación: código, dependencias, librerías, etc.
En Cloud Run, las aplicaciones deben estar empaquetadas como contenedores compatibles con Docker. Esto permite ejecutar cualquier tipo de aplicación sin importar el lenguaje o tecnología usada.
🖼️ Imagen (Container Registry / Artifact Registry): Una imagen es el archivo que contiene el contenedor listo para ejecutarse.
En GCP, puedes almacenar estas imágenes en servicios como:
- Container Registry (más antiguo)
- Artifact Registry (recomendado y más seguro)
Cloud Run extrae estas imágenes para desplegarlas como servicios.
🌐 Endpoint público / Autenticación: El endpoint es la URL que expone tu servicio Cloud Run al mundo.
Puedes configurar ese acceso de dos formas:
- Público: cualquiera puede acceder al servicio mediante la URL.
- Privado (autenticado): solo usuarios o servicios con permisos específicos (IAM) pueden acceder.
Esto te permite proteger servicios internos o APIs sensibles.
Habilitar Cloud Run en GCP
Para habilitar cloud run seguiremos la documentación oficial, pero a continuación, vamos a explicar el paso a paso:
Requisitos previos
- Tener una cuenta en Google (Gmail).
- Tener configurada la facturación en tu cuenta de GCP (aunque Cloud Run tiene un nivel gratuito generoso).
- Haber creado un proyecto en GCP.
Inicia sesión en GCP
Consulta en la documentación oficial como realizar el inicio de sesión
- En el buscador superior escribe:
Cloud Run. - Haz clic en Cloud Run en los resultados.
- Si nunca lo has usado en ese proyecto, verás un botón que dice:
- "Habilitar API" o "Enable"
- Haz clic en ese botón para habilitar el servicio.
Selecciona región por defecto
- Una vez habilitado, se te pedirá seleccionar una región predeterminada (ej. us-central1, southamerica-east1, etc.).
- Elige una región cercana a tus usuarios o a otros recursos de GCP que vayas a usar.
Configura permisos
- Cloud Run requiere acceso a otros servicios como:
- Cloud Build (para construir imágenes).
- Artifact Registry (para almacenar imágenes).
- Google te pedirá activar permisos recomendados. Acéptalos para evitar errores.
Permisos básicos para usar Cloud Run
👤 Rol recomendado:
-
roles/run.admin→ Cloud Run Admin
Este rol permite:
- Crear, actualizar y eliminar servicios de Cloud Run.
- Ver servicios y sus configuraciones.
- Desplegar servicios desde contenedores.
Permisos adicionales necesarios para despliegue completo
Si el usuario también va a desplegar servicios, necesitas agregar roles adicionales según lo que use:
| Necesidad | Rol necesario | ID del rol |
|---|---|---|
| Usar Cloud Build para construir imágenes | Cloud Build Editor |
roles/cloudbuild.builds.editor |
| Acceder a Artifact Registry o Container Registry | Artifact Registry Reader o Storage Object Viewer |
roles/artifactregistry.reader o roles/storage.objectViewer |
| Invocar servicios de Cloud Run | Cloud Run Invoker |
roles/run.invoker |
| Usar variables de entorno o secretos de Secret Manager | Secret Manager Secret Accessor |
roles/secretmanager.secretAccessor |
| Crear y administrar logs | Logs Writer |
roles/logging.logWriter |
Configuración mínima para usuarios que solo deben invocar servicios
Si el usuario solo debe consumir servicios de Cloud Run (por ejemplo, llamar a una API):
- Asigna solo:
roles/run.invoker
¿Cómo asignar estos roles?
Desde la consola de GCP:
- Ve a
IAM y administración>IAM. - Busca el usuario (correo electrónico).
- Haz clic en el ícono de lápiz.
- En “Asignar roles”, selecciona los que correspondan (puedes buscar por nombre o ID del rol).
- Guarda los cambios.
Ejemplo práctico
Para un desarrollador que va a:
- Crear servicios
- Desplegar contenedores
- Acceder a registros y secretos
Asigna estos roles:
roles/run.adminroles/cloudbuild.builds.editorroles/artifactregistry.readerroles/secretmanager.secretAccessorroles/logging.logWriter
Nota de seguridad
Evita usar roles/editor o roles/owner salvo que sea estrictamente necesario, ya que dan acceso excesivo a todos los servicios del proyecto.
Ejemplo
En el siguiente enlace encintará un ejemplo realizado con Java y Docker en donde desplegamos una Cloud Run