Implementar imágenes de contenedor
Cloud Run ofrece varias opciones de implementación. Todas las opciones de implementación generan una imagen de contenedor que se ejecuta como un servicio, un trabajo o un grupo de trabajadores de Cloud Run en la infraestructura completamente administrada y altamente escalable de Cloud Run.
Imágenes de contenedor implementables
Puedes implementar cualquier imagen de contenedor que cumpla con el contrato de tiempo de ejecución del contenedor de Cloud Run en un servicio, un trabajo o un grupo de trabajadores 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 y cómo implementar 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 en la nube. Cloud Run activa tu función cuando se activa un evento supervisado.
La 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 entornos 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.
Servicios de Cloud Run
Los servicios son uno de los recursos principales de Cloud Run. Cada servicio se ubica en una regiónGoogle 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 Google Cloud 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 ajuste de escala 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:
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 copia de su aplicación.
El servicio C tiene solicitudes y se ajustó para controlar 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 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 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 se ejecutan para completar uno o más contenedores. 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 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 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 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.
- Sin ajuste de escala 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.
Las instancias del grupo de trabajadores se pueden escalar de forma manual 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 el escalador automático de Kafka, que controla el ajuste de escala para las cargas de trabajo entrantes de la cola de mensajes de Kafka.