Opciones de implementación y modelo de recursos

Desplegar imágenes de contenedor

Cloud Run ofrece varias opciones de implementación. Todas las opciones de implementación dan como resultado una imagen de contenedor que se ejecuta como un servicio, un trabajo o un grupo de trabajadores de Cloud Run en la infraestructura totalmente gestionada y altamente escalable de Cloud Run.

Imágenes de contenedor desplegables

Puedes desplegar cualquier imagen de contenedor que cumpla el contrato de tiempo de ejecución de contenedores de Cloud Run en un servicio, un trabajo o un grupo de trabajadores de Cloud Run.

Desplegar desde el código fuente

Para mayor comodidad, Cloud Run te permite compilar y desplegar código fuente con un solo comando. Para obtener más información, consulta Desplegar servicios desde el código fuente y Desplegar grupos de trabajadores desde el código fuente.

Cuando haces un despliegue a partir del 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 runtimes de lenguaje admitidos.

Functions

Puedes desplegar funciones con una sola finalidad que respondan a eventos emitidos desde tus servicios y tu infraestructura en la nube. Cloud Run activa tu función cuando se activa un evento monitorizado.

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

Al desplegar una función, se crea un servicio de Cloud Run.

Despliegue continuo de código fuente desde git

Cloud Run te ayuda a configurar el despliegue continuo desde Git. Al igual que con las despliegues de código fuente, puedes desplegar código fuente que incluya un Dockerfile o que esté escrito en uno de los runtimes de lenguaje admitidos.

El despliegue continuo desde Git está disponible para los servicios de Cloud Run. Puedes configurarlos manualmente en Cloud Build para las tareas de Cloud Run.

Servicios de Cloud Run

Los servicios son uno de los recursos principales de Cloud Run. Cada servicio se encuentra en una Google Cloud región específica. Para ofrecer redundancia y conmutación por error, Cloud Run replica automáticamente los servicios en varias zonas de una región. Un Google Cloud proyecto puede ejecutar muchos servicios en diferentes regiones.

Cada servicio expone un punto de conexión único. De forma predeterminada, Cloud Run escala automáticamente para gestionar las solicitudes entrantes. Si es necesario, puedes cambiar el comportamiento de escalado a escalado manual. Puedes desplegar 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 (Servicio A, Servicio B y Servicio C), cada uno de los cuales tiene varias revisiones:

  • El servicio A está recibiendo varias solicitudes, por lo que Cloud Run ha iniciado varias instancias para gestionar la carga. Cada una de estas instancias ejecuta un solo contenedor (el contenedor de la aplicación).

  • El servicio B no tiene ninguna solicitud, por lo que está inactivo y Cloud Run no está ejecutando ninguna copia de su aplicación.

  • El servicio C tiene solicitudes y se ha escalado para gestionar la carga creando varias instancias. Cada instancia contiene varios contenedores y funciona como un conjunto independiente. En cada conjunto, solo el contenedor de entrada recibe la solicitud, pero los demás contenedores ayudan a completarla.

Revisiones de servicios de Cloud Run

Cada despliegue en un servicio crea una revisión. Una revisión consta de una o varias imágenes de contenedor, junto con ajustes de configuración como variables de entorno, límites de memoria o el valor de simultaneidad de solicitudes.

No puedes modificar una revisión después de crearla. Por ejemplo, cuando despliegas una imagen de contenedor en un servicio nuevo, Cloud Run crea la primera revisión. Si después despliegas otra imagen de contenedor en ese mismo servicio, Cloud Run creará una segunda revisión. Si posteriormente defines una variable de entorno, Cloud Run creará una tercera revisión. Con el tiempo, Cloud Run elimina las revisiones antiguas que no se usan.

Cloud Run dirige automáticamente las solicitudes lo antes posible a la revisión de servicio más reciente que esté en buen estado.

Instancias de servicio de Cloud Run

Cloud Run escala automáticamente cada revisión de servicio que recibe solicitudes al número de instancias necesarias para gestionar todas estas solicitudes. Ten en cuenta que las instancias pueden recibir muchas solicitudes al mismo tiempo. Con la configuración de simultaneidad de solicitudes, puede definir el número máximo de solicitudes que se pueden enviar en paralelo a cada instancia de una revisión.

Tareas de Cloud Run

Cada trabajo se encuentra en una Google Cloud región Google Cloud específica y consta de una o varias tareas de trabajo que se ejecutan para completar uno o varios contenedores. Las tareas de un trabajo son independientes y se pueden ejecutar en paralelo en una ejecución de trabajo determinada.

Ejecuciones de tareas de Cloud Run

Cuando se ejecuta un trabajo, se crea una ejecución de trabajo en la que se inician todas las tareas del trabajo. Todas las tareas de una ejecución de un trabajo deben completarse correctamente para que la ejecución del trabajo se realice correctamente. Puedes definir tiempos de espera en las tareas y especificar el número de reintentos en caso de que se produzca un error.

Si alguna tarea supera el número máximo de reintentos, Cloud Run la marca como fallida y el trabajo también. 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 respaldo, como una base de datos, lo requiere.

Tareas de Cloud Run

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

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 solicitudes, como las colas de extracción. Ten en cuenta que los grupos de trabajadores no tienen las siguientes funciones:

  • No hay endpoint ni URL
  • No es necesario que el contenedor implementado escuche las solicitudes en un puerto
  • Sin escalado automático

Al igual que con un servicio de Cloud Run, al desplegar o actualizar un grupo de trabajadores, se crea una nueva revisión.

Las instancias del grupo de trabajadores se pueden escalar manualmente según sea necesario para escalar suficientes instancias para las cargas de trabajo. Sin embargo, puedes crear tu propio escalador automático si es necesario. Un ejemplo de esto es la herramienta de adaptación dinámica de Kafka, que gestiona el escalado de las cargas de trabajo entrantes de la cola de mensajes de Kafka.