Opciones de Deployment y modelo de recursos

En esta guía, se describe cómo Cloud Run controla las implementaciones, divididas en tres áreas:

  • Tipos de implementación: Qué traes a Cloud Run, como código fuente o imágenes de contenedor
  • Recursos de Cloud Run: Qué se ejecuta en tu implementación dentro de Cloud Run (servicio, trabajo, grupo de trabajadores o instancia).
  • Métodos de implementación: Cómo ejecutas la implementación, por ejemplo, con la Google Cloud consola, gcloud CLI, YAML o Terraform.

Tipos de Deployment

Cloud Run ofrece varias opciones de implementación. Después de la implementación, todas las implementaciones, ejecuciones o creaciones se ejecutan como instancias de contenedor en zona de pruebas en la infraestructura completamente administrada y altamente escalable de Cloud Run. En la siguiente tabla, se muestran las opciones de implementación compatibles para cada tipo de recurso:

Opción de Deployment Servicios Trabajos Grupos de trabajadores Instancias
Implementar imágenes de contenedor Admitido Compatible Compatible Admitido
Implementa desde el código fuente Admitido Compatible Admitido
Implementa funciones1 Admitido
Implementación continua desde Git Admitido

1 Las funciones son una versión especializada de la implementación de código fuente para código basado en eventos y de propósito único.

Implementar imágenes de contenedor

Puedes implementar cualquier imagen de contenedor que cumpla con el contrato de tiempo de ejecución de contenedores de Cloud Run en unservicio, trabajo, grupo de trabajadores o instancia de Cloud Run.

Implementa desde el código fuente

Para mayor comodidad, Cloud Run te permite compilar e implementar código fuente con un solo comando. Consulta Implementa servicios desde el código fuente, ejecuta trabajos desde el código fuente y ejecuta grupos de trabajadores desde el código fuente para obtener más detalles.

Cuando realizas la implementación desde el código fuente, Cloud Build transforma el código en una imagen de contenedor almacenada en Artifact Registry. Puedes implementar código fuente que incluya un Dockerfile o que use uno de los tiempos de ejecución de lenguajes compatibles.

Funciones

Puedes implementar funciones de un solo propósito que respondan a eventos emitidos desde tu infraestructura y servicios de nube. Cloud Run activa tu función cuando se activa un evento supervisado.

Una implementación de funciones es un tipo especial de implementación de código fuente, en la que solo debes proporcionar el código de la función. Puedes escribir Cloud Run Functions con varios lenguajes de programación admitidos.

La implementación de una función crea un servicio de Cloud Run.

Implementación continua de código fuente desde Git

Cloud Run te ayuda a configurar la implementación continua desde Git. Al igual que con las implementaciones de código fuente, puedes implementar código fuente que incluya un Dockerfile o que esté escrito en uno de los tiempos de ejecución de lenguajes compatibles.

La implementación continua desde Git está disponible para los servicios de Cloud Run. Puedes configurarlos manualmente en Cloud Build para los trabajos de Cloud Run.

Recursos de Cloud Run

En las siguientes secciones, se describen los recursos de Cloud Run con más detalle.

Comparación de recursos de Cloud Run

Función Servicios Trabajos Grupos de trabajadores Instancias
Caso de uso principal Controlado por solicitudes (sitios web, APIs y microservicios) Orientado a tareas (secuencias de comandos, procesamiento de datos, migraciones) Controlado por eventos o extracción (consumidores de Kafka/Pub/Sub) Singleton administrado (cargas de trabajo basadas en agentes, necesidades de procesamiento específicas)
Activador Solicitudes HTTP/gRPC, Eventarc Modos de ejecución: estándar (inmediato) y retrasado.

Activadores: Ejecución manual, con Scheduler y con Workflows
Siempre activado O ajustado automáticamente con trabajo en segundo plano basado en extracción Ninguno
Escalamiento Automático/Manual: Se ajusta a cero o según las solicitudes Automático: Se ajusta a N tareas independientes que se ejecutan de forma secuencial o en paralelo. Automático o manual: Cantidad fija de instancias con ajuste de escala manual o ajuste de escala automático integrado basado en el uso de CPU o el backlog de mensajes de Pub/Sub (ajuste de escala automático basado en KEDA con escalador automático externo) Ninguno: Sin ajuste de escala automático; se puede administrar de forma individual
Lifecycle Es efímera y se reduce verticalmente cuando está inactiva. Se ejecuta hasta completarse en un plazo de 7 días (de corta duración) Puedes elegir entre procesos en segundo plano siempre activos O instancias efímeras con ajuste de escala automático. De larga duración (puede ejecutarse durante días o semanas) y se reinicia automáticamente de forma indefinida
Dirección URL del servicio estable (con balanceo de cargas) No hay extremo público.

URL interna para activadores (p.ej., el programador)
Sin extremo público.

Acceso de entrada directo privado basado en IP de VPC directa
URL individual por instancia
Tráfico entrante HTTP/gRPC público/interno Ninguno Entrada de L4 basada en IP con VPC directa URL pública o interna por instancia
Facturación Basada en solicitudes o en instancias Duración por ejecución Duración por instancia Duración por instancia

Servicios de Cloud Run

Un servicio es el tipo de recurso principal en Cloud Run, que representa una carga de trabajo controlada por solicitudes que escala automáticamente las instancias de contenedores para controlar el tráfico web, las solicitudes HTTP o los eventos entrantes. Cada servicio se ubica en una región específica deGoogle Cloud . Para proporcionar redundancia y conmutación por error, Cloud Run replica automáticamente los servicios en varias zonas dentro de una región. UnGoogle Cloud proyecto determinado puede ejecutar muchos servicios en diferentes regiones.

Cada servicio expone un extremo único. De forma predeterminada, Cloud Run se escala automáticamente para controlar las solicitudes entrantes. Si es necesario, puedes cambiar el comportamiento de ajuste de escala a manual. Puedes implementar un servicio desde un contenedor, un repositorio o un código fuente.

En el siguiente diagrama, se muestra el modelo de recursos de Cloud Run para los servicios:

Servicios y revisiones de Cloud Run

En el diagrama, se muestra un proyecto Google Cloud que contiene tres servicios de Cloud Run (Servicio A, Servicio B y Servicio C), cada uno de los cuales tiene varias revisiones:

  • El servicio A recibe varias solicitudes, por lo que Cloud Run inició varias instancias para controlar la carga. Cada una de estas instancias ejecuta solo un contenedor (el contenedor de la aplicación).
  • El servicio B no tiene solicitudes, por lo que está inactivo y Cloud Run no ejecuta ninguna instancia.
  • El servicio C tiene solicitudes y se escaló para controlar la carga creando varias instancias. En este caso, cada una de estas instancias ejecuta un conjunto de varios contenedores. En cada conjunto, solo el contenedor de entrada recibe la solicitud, pero los demás contenedores ayudan a satisfacerla.

Revisiones del servicio de Cloud Run

Cada implementación en un servicio conlleva la creación de una revisión. Una revisión consta de una o más imágenes de contenedor, junto con parámetros de configuración, como variables de entorno, límites de memoria o valor de simultaneidad de solicitudes.

No puedes modificar una revisión después de crearla. Por ejemplo, cuando implementas una imagen de contenedor en un servicio nuevo, Cloud Run crea la primera revisión. Si luego implementas una imagen de contenedor diferente en ese mismo servicio, Cloud Run crea una segunda revisión. Si posteriormente configuras una variable de entorno, Cloud Run crea una tercera revisión. Con el tiempo, Cloud Run quita las revisiones que no se usan.

Cloud Run enruta automáticamente las solicitudes lo antes posible a la revisión del servicio en buen estado más reciente.

Instancias de servicio de Cloud Run

Cloud Run ajusta automáticamente la escala de cada revisión del servicio que recibe solicitudes a la cantidad de instancias necesarias para controlar todas estas solicitudes. Ten en cuenta que las instancias pueden recibir muchas solicitudes al mismo tiempo. Con el parámetro de configuración de simultaneidad de solicitudes, puedes establecer la cantidad máxima de solicitudes que se pueden enviar en paralelo a cada instancia de una revisión.

Trabajos de Cloud Run

Cada trabajo se ubica en una región Google Cloudespecífica y consta de una o más tareas que ejecutan uno o más contenedores hasta su finalización. Las tareas de trabajo son independientes y se pueden ejecutar en paralelo en una ejecución de trabajo determinada.

Ejecuciones de trabajo de Cloud Run

Cuando ejecutas un trabajo, Cloud Run crea una ejecución de trabajo y comienza todas las tareas relacionadas. Todas las tareas de una ejecución de trabajo deben completarse correctamente para que la ejecución del trabajo se realice correctamente. Puedes establecer tiempos de espera en las tareas y especificar la cantidad de reintentos en caso de falla de la tarea.

Si alguna tarea excede la cantidad máxima de reintentos, Cloud Run la marca como con errores y el trabajo como con errores. De forma predeterminada, las tareas se ejecutan en paralelo hasta un máximo de 100, pero puedes especificar un máximo inferior si alguno de tus recursos de copia de seguridad, como una base de datos, lo requiere.

Tareas de trabajos de Cloud Run

Cada ejecución de trabajo ejecuta varias tareas en paralelo, y cada tarea ejecuta una instancia. Cloud Run intenta automáticamente volver a ejecutar las tareas con errores, según la configuración del trabajo para maxRetries.

Grupos de trabajadores de Cloud Run

Los grupos de trabajadores son un recurso de Cloud Run diseñado específicamente para cargas de trabajo que no son de solicitudes, como las colas de extracción. Ten en cuenta que los grupos de trabajadores no tienen las siguientes funciones:

  • Sin extremo ni URL
  • No se requiere que el contenedor implementado escuche solicitudes en un puerto.
  • No hay escalado automático

Al igual que con un servicio de Cloud Run, la implementación o actualización de un grupo de trabajadores crea una revisión nueva.

Puedes escalar de forma manual las instancias del grupo de trabajadores según sea necesario para controlar las cargas de trabajo. También puedes ajustar automáticamente la escala de los grupos de trabajadores con métricas externas, lo que controla el ajuste de escala para las cargas de trabajo controladas por fuentes como suscripciones a Pub/Sub, consultas de Prometheus o colas de Kafka.

Cuando se conecta a una red de nube privada virtual (VPC), cada instancia del grupo de trabajadores obtiene una dirección IP en la red de VPC y puede enviar y recibir tráfico desde y hacia esta VPC.

Instancias de Cloud Run

Una instancia de Cloud Run representa un entorno de ejecución independiente y singleton. A diferencia de un servicio, que ajusta la escala de las instancias de contenedor de forma automática o manual para controlar el tráfico, una instancia de Cloud Run es un recurso de nivel superior con su propia dirección URL directa y operaciones de ciclo de vida.

Cada instancia de Cloud Run incluye las siguientes características:

  • Extremo de URL dedicado: Asigna una URL de entrada estable de forma predeterminada. Puedes inhabilitar la URL predeterminada para permitir solo el tráfico de las otras rutas de entrada de la instancia.
  • Políticas de reinicio: Admite condiciones de reinicio (always, on-failure, never) para recuperar automáticamente el proceso del contenedor en caso de fallas.
  • Asignación de CPU compartida: Se ejecuta en un modelo de CPU compartida en el que la CPU se asigna por completo según un presupuesto de ráfaga y se limita a un límite de recursos de referencia del 6.25% fuera de ese presupuesto.