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: Lo que traes a Cloud Run, como código fuente o imágenes de contenedor.
  • Recursos de Cloud Run: Lo que ejecuta tu implementación en 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 un entorno de pruebas en la infraestructura altamente escalable y completamente administrada 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
Implementa imágenes de contenedor Compatible Compatible Compatible Compatible
Implementa desde el código fuente Compatible Compatible Compatible
Implementa funciones1 Compatible
Implementación continua desde Git Compatible

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

Implementa imágenes de contenedor

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

Implementa desde el código fuente

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

Cuando implementas 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 entornos de ejecución de lenguaje compatibles.

Funciones

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

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 service.

Implementación continua de código fuente desde Git

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

La implementación continua desde Git está disponible para los servicios de Cloud Run . Puedes configurarlos de forma manual 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 Basado en solicitudes (sitios web, APIs, microservicios) Basado en tareas (secuencias de comandos, procesamiento de datos, migraciones) Basado en eventos/extracción (consumidores de Kafka/PubSub) Singleton administrado (cargas de trabajo de agentes, necesidades de procesamiento específicas)
Activador Solicitudes HTTP/gRPC, Eventarc Modos de ejecución: estándar (inmediato), retrasado.

Activadores: Ejecución manual, con Scheduler, con Workflows
Siempre activo O con ajuste de escala automático con trabajo en segundo plano basado en extracción Ninguno
Escalamiento Automático/Manual: se escala a cero o según las solicitudes Automático: Se escala a N tareas independientes que se ejecutan de forma secuencial o en paralelo. Automático/Manual: Cantidad fija de instancias con escalamiento manual o ajuste de escala automático integrado según 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; administrable de forma individual
Lifecycle Efímero, se reduce cuando está inactivo Se ejecuta hasta completarse hasta 7 días (de corta duración) Elección entre procesos en segundo plano siempre activos O instancias efímeras con ajuste de escala automático. De larga duración (se puede ejecutar durante días o semanas) y se reinicia automáticamente de forma indefinida
Direccionamiento URL de servicio estable (balanceo de cargas) Sin extremo público.

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

Acceso de entrada basado en IP de VPC directa privada
URL individual por instancia
Tráfico entrante HTTP/gRPC público/interno Ninguno Entrada L4 basada en IP con VPC directa URL pública/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 basada en solicitudes que escala automáticamente las instancias de contenedor para controlar el tráfico web entrante, las solicitudes HTTP o los eventos. Cada servicio se ubica en una región Google Cloud específica. Para proporcionar redundancia y conmutación por error, Cloud Run replica automáticamente los servicios en varias zonas dentro de una región. Un proyecto determinado Google Cloud 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 escalamiento al manual scaling. 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 Google Cloud proyecto que contiene tres servicios de Cloud Run, el Servicio A, el Servicio B y el 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 mediante la creación de 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 otros 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 su creación. 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 sin usar.

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

Instancias del servicio de Cloud Run

Cloud Run escala automáticamente cada revisión del servicio que recibe solicitudes a la cantidad de instancias necesarias para administrar todas las solicitudes. Ten en cuenta que las instancias pueden recibir muchas solicitudes al mismo tiempo. Con la 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 Google Cloud región específica y consta de una o más tareas que ejecutan uno o más contenedores hasta su finalización. Las tareas 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 para 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 marca esa tarea 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 trabajo de Cloud Run

Cada ejecución de trabajo ejecuta varias tareas en paralelo, y cada tarea ejecuta una instancia. Cloud Run intenta ejecutar automáticamente de nuevo 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 solicitud, como las colas de extracción. Ten en cuenta que los grupos de trabajadores no tienen las siguientes funciones:

  • Sin extremo/URL
  • No es necesario que el contenedor implementado escuche las solicitudes en un puerto
  • No hay ajuste de escala automático

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

Puedes escalar manualmente las instancias del grupo de trabajadores según sea necesario para controlar las cargas de trabajo. Sin embargo, puedes crear tu propio escalador automático si es necesario. Un ejemplo de esto es el escalador automático de Kafka, que controla el escalamiento de las cargas de trabajo entrantes de la cola de mensajes 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 singleton independiente. A diferencia de un servicio, que escala 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 sus propias operaciones de ciclo de vida y direccionamiento de URL directa.

Cada instancia de Cloud Run incluye las siguientes funciones:

  • Extremo de URL dedicada: 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.