Trabajos de Cloud Run

Trabajos de Cloud Run

Acerca de este codelab

subjectÚltima actualización: may 6, 2022
account_circleEscrito por Cynthia Vansant

1. Introducción

Última actualización: 06/05/2022

Trabajos de Cloud Run

Los trabajos de Cloud Run te permiten ejecutar trabajos de larga duración en Cloud Run.

Este codelab es estrictamente informativo y te proporciona conocimiento sobre cuándo y cómo usar los trabajos de Cloud Run. Te prepara para el codelab Primeros pasos con los trabajos de Cloud Run, en el que obtendrás experiencia práctica sobre el uso de Google Cloud Console para compilar un contenedor, crear y ejecutar un trabajo de Cloud Run, y actualizar y programar el trabajo

Qué aprenderá

  • Qué son los trabajos de Cloud Run
  • Cuándo usar trabajos de Cloud Run
  • Flujo de trabajo de los trabajos de Cloud Run
  • Cómo crear un trabajo de Cloud Run
  • Cómo ejecutar un trabajo de Cloud Run
  • Cómo ejecutar un trabajo de forma programada
  • Cómo ver el estado de ejecución
  • Cómo administrar el trabajo y las ejecuciones de trabajos
  • Cómo detectar la finalización del trabajo
  • Cómo actualizar un trabajo

2. Descripción general de los trabajos de Cloud Run

Hay dos maneras de ejecutar tu código en Cloud Run. Puede ejecutarlo continuamente como un servicio.

9d66cf46be1522db.png

o, si el código realiza un trabajo y luego se detiene, puedes usar un trabajo de Cloud Run.

e5651e36c4129dd1.png

Si bien los servicios de Cloud Run son ideales para los contenedores que se ejecutan de forma indefinida en las solicitudes HTTP, los trabajos de Cloud Run son ideales para los contenedores que se ejecutan hasta el final y no entregan solicitudes, como los trabajos administrativos y de procesamiento de datos.

Otros casos de uso de los trabajos de Cloud Run incluyen los siguientes:

  • Ejecutar una secuencia de comandos para realizar migraciones de bases de datos y otras tareas operativas
  • Procesamiento en paralelo de todos los archivos en un bucket de Cloud Storage.
  • Crear y enviar facturas todos los meses
  • Cada cuatro horas, se guardarán los resultados de una búsqueda de base de datos en formato XML y se subirá el archivo.

En relación con otras plataformas que admiten trabajos de larga duración, los trabajos de Cloud Run comienzan rápidamente después de su creación. Los contenedores simples pueden comenzar en tan solo 10 segundos, según la complejidad del contenedor. Esto hace que los trabajos de Cloud Run sean adecuados para situaciones en las que esperar unos minutos hasta que se inicie una VM.

3. Flujo de trabajo de trabajos de Cloud Run

El flujo de trabajo de trabajos de Cloud Run consta de dos pasos simples:

  1. Crea el trabajo. El trabajo encapsula toda la configuración necesaria para ejecutar el trabajo, como la imagen de contenedor.
  2. Ejecuta el trabajo. Usa Cloud Console o la CLI de gcloud y ejecuta el trabajo desde la línea de comandos.

Un trabajo puede iniciar una instancia de contenedor para ejecutar tu código, o bien iniciar muchas instancias de contenedor independientes y idénticas en paralelo si especificas la cantidad de tareas que se ejecutarán. Por ejemplo, si lee 1,000 imágenes de Cloud Storage para cambiar su tamaño y recortarlas, el procesamiento consecutivo será más lento que cuando se procesan al mismo tiempo con muchas instancias de contenedor.

4. Crea el trabajo

Para crear el trabajo, puede usar Cloud Console o la CLI de gcloud con el siguiente comando:

gcloud beta run jobs create JOB_NAME --image IMAGE_URL OPTIONS

Reemplaza lo siguiente:

  • JOB_NAME por el nombre del trabajo que quieres crear
  • IMAGE_URL con una referencia a la imagen de contenedor
  • De manera opcional, reemplaza OPTIONS por cualquiera de las marcas disponibles. Para obtener una lista completa de las marcas, ejecuta gcloud beta run jobs create --help.

Entre los ejemplos de marcas, se incluyen las siguientes:

  • --tasks para la cantidad de tareas que se ejecutarán
  • -–max retries para la cantidad de veces que se reintenta una tarea con errores
  • --parallelism para la cantidad máxima de tareas que se pueden ejecutar en paralelo
  • --execute-now para ejecutar el trabajo inmediatamente después de crearlo.
  • --async para salir del trabajo inmediatamente después de crear una ejecución nueva.

También puede usar las funciones habituales de Cloud Run para proteger su trabajo de Cloud Run y conectarlo al resto de su entorno de Google Cloud Platform (GCP).

5. Ejecute el trabajo

Para ejecutar el trabajo, puedes usar Cloud Console o la CLI de gcloud con el siguiente comando:

  • En Cloud Console, haga clic en el nombre del trabajo y, luego, en Ejecutar cerca de la parte superior de la página.
  • En la CLI de gcloud, usa el siguiente comando:
gcloud beta run jobs execute JOB_NAME EXECUTION_OPTIONS

Reemplaza JOB_NAME por el nombre del trabajo. De manera opcional, reemplaza EXECUTION_OPTIONS para especificar lo siguiente:

  • Ejecución inmediata del trabajo después de crearlo
gcloud beta run jobs create JOB_NAME --execute-now
  • Si quieres esperar hasta que se complete la ejecución antes de salir.
gcloud beta run jobs create JOB_NAME --wait
  • Si desea salir de inmediato después de crear una ejecución nueva.
gcloud beta run jobs create JOB_NAME --async

6. Ejecute el trabajo de manera programada

Si quieresejecutar su trabajo de manera programada, use Cloud Scheduler.

Por ejemplo, es posible que quieras crear y enviar facturas en intervalos regulares o guardar los resultados de una consulta de base de datos en formato XML y subir el archivo cada pocas horas.

Con Cloud Scheduler, puedes programar el trabajo y administrar todas tus tareas de automatización desde un solo lugar.

  • Ejecuta tus trabajos de macrodatos y por lotes al mismo tiempo cada hora, día o semana, con ejecución garantizada y reintentos en caso de falla.
  • Automatiza muchas de las tareas tediosas asociadas a la ejecución de infraestructura de nube de una manera confiable y completamente administrada.
  • Automatiza prácticamente todo.
  • Consulta y administra todos tus trabajos desde una sola IU o interfaz de línea de comandos.

Después de configurar tu entorno para permitir que tu proyecto use Cloud Scheduler, crea un trabajo de Cloud Run y, luego, ingresa el nombre, la región, la descripción, la frecuencia y la zona horaria para definir un programa. Luego, Cloud Scheduler ejecutará el trabajo de Cloud Run con la frecuencia que especifiques.

7. Consulte el estado de ejecución del trabajo

Una vez que se ejecute el trabajo, podrás ver los registros en Cloud Logging y los datos de supervisión en Cloud Monitoring.

Para ver los registros, puedes hacer lo siguiente:

  • Usa la página de Cloud Run en Cloud Console.
  • Usa el explorador de registros de Cloud Logging en Cloud Console.

Ambos métodos de visualización analizan los mismos registros almacenados en Cloud Logging, pero el Explorador de registros de Cloud Logging proporciona más detalles y más capacidades de filtrado.

Cloud Monitoring proporciona métricas y supervisión del rendimiento de Cloud Run, además de alertas para enviar notificaciones cuando se superan ciertos umbrales de las métricas. Cloud Run se integra de forma automática en Cloud Monitoring sin necesidad de configurarlo. Esto significa que las métricas de tus trabajos de Cloud Run se capturan de forma automática cuando se ejecutan.

Puedes ver las métricas en Cloud Monitoring o en la página de Cloud Run en Console. Cloud Monitoring ofrece más opciones de gráficos y filtros.

8. Administrar el trabajo y las ejecuciones de este

Para administrar el trabajo, usa Cloud Console o la CLI de gcloud a fin de ver una lista de las siguientes características:

También puedes hacer lo siguiente:

  • Para detener la ejecución de un trabajo, bórralo.
  • Borra las ejecuciones de trabajos que no están en ejecución.
  • Borra un trabajo.

Si borras un trabajo, se cancelarán todas sus ejecuciones pendientes, pero los registros de trabajos y los datos de supervisión seguirán estando disponibles durante el resto del período de retención de registros, que suele ser de 30 días. La supervisión de datos sigue disponible en Cloud Monitoring.

9. Detecta la finalización de la ejecución del trabajo

Hay varias formas de detectar si una ejecución del trabajo terminó de ejecutarse:

  • Ejecuta tu trabajo con la marca --wait; la CLI de gcloud se cerrará cuando el trabajo se complete.
gcloud beta run jobs execute JOB_NAME --wait
  • Consulta el extremo Executions.get de la API de REST y busca la condición de estado Completed para que sea True.
  • Cuando se complete una ejecución, busque la entrada de registro escrita que se ve de la siguiente manera:

Completed condition status changed to True for Execution sleepy-l8zjp.

Para buscar este mensaje de registro, ejecute la siguiente consulta en Cloud Logging:

resource.type="cloud_run_revision"
resource
.labels.revision_name="EXECUTION_NAME" log_name="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event"
protoPayload
.response.status.conditions.type="Completed"
protoPayload
.response.status.conditions.status="True"

También puedes consultar la ubicación en la que escribes el resultado para detectar cuándo aparece. Sin embargo, esto solo funciona correctamente si la escritura del resultado es lo último que hace tu trabajo. Por ejemplo, si tu trabajo realiza la limpieza después de escribir el resultado, el trabajo podría fallar después de escribirlo.

10. Actualiza el trabajo

Cuando creas un trabajo, puedes especificar una imagen de contenedor con una etiqueta o un resumen exacto:

  • Ejemplo de etiqueta:
gcr.io/my-project/my-image:tag
  • Ejemplo de resumen:
gcr.io/my-project/my-image@sha256:41f34ab970ee...

Si no se especifica ninguna, se usa la etiqueta :latest.

La forma de actualizar el trabajo a fin de ejecutar la última versión del código depende de si especificaste una imagen de contenedor con una etiqueta o un resumen.

Si especificaste una imagen de contenedor con una etiqueta, Cloud Run resuelve la imagen en un resumen específico cuando ejecutas el trabajo. Esto significa que no necesita actualizar su trabajo de forma explícita para seleccionar la versión más reciente de su contenedor la próxima vez que ejecute su trabajo.

Si prefieres usar un resumen de contenedor específico cada vez que se ejecuta el trabajo, puedes especificar una imagen de contenedor con un resumen exacto. En este caso, debes actualizar explícitamente tu trabajo para usar un resumen diferente si deseas que tu trabajo detecte los cambios de código que realizaste:

gcloud alpha run jobs update JOB_NAME --image NEW-IMAGE

Sin importar cómo especifiques tu imagen de contenedor, todas las tareas de una ejecución siempre usarán el mismo resumen.

Mientras se aplica una actualización, no puedes iniciar ejecuciones nuevas. Deberás esperar a que se complete la actualización, lo que suele tardar unos segundos. Si la actualización falla, no se podrán crear ejecuciones nuevas. Deberá volver a poner el trabajo en buen estado realizando otra actualización.

11. Felicitaciones

¡Felicitaciones! Aprendiste cuándo y cómo usar los trabajos de Cloud Run.

Aprendiste lo siguiente:

  • Qué son los trabajos de Cloud Run
  • Cuándo usar trabajos de Cloud Run
  • Flujo de trabajo de los trabajos de Cloud Run
  • Cómo crear un trabajo de Cloud Run
  • Cómo ejecutar un trabajo de Cloud Run
  • Cómo ejecutar un trabajo de forma programada
  • Cómo ver el estado de ejecución
  • Cómo administrar el trabajo y las ejecuciones de trabajos
  • Cómo detectar la finalización del trabajo
  • Cómo actualizar un trabajo

¿Qué sigue?

Comienza a usar trabajos de Cloud Run

Ayuda

Para obtener una referencia completa de gcloud, usa el siguiente comando de ayuda:

gcloud alpha run jobs --help

gcloud alpha run jobs executions
--help

Documentos de referencia

Trabajos vs. servicios

Implementa trabajos

Ejecuta trabajos

Ejecuta trabajos según un programa

Configura tu entorno

Escribe y visualiza registros

Supervisa el estado y el rendimiento

Documentación de Cloud Logging

Documentación de Cloud Monitoring

Métricas de Google Cloud

Introducción a las alertas

Administrar ejecuciones de trabajos

Administrar trabajos

Método: namespace.Executions.get

Prácticas recomendadas para los reintentos y puntos de control de Jobs