Cloud Scheduler
Cloud Scheduler es un servicio completamente administrado de trabajos cron (cron jobs) en GCP.
Características técnicas
- Basado en reglas cron estándar (* * * * *)
- Ejecuta trabajos en intervalos regulares o específicos (por ejemplo, cada hora, diario, los lunes, etc.)
- Puede activar distintos tipos de destinos (targets):
- HTTP/HTTPS (API REST)
- Pub/Sub (event-driven)
Relación entre Cloud Scheduler, HTTP y Pub/Sub
Cloud Scheduler puede integrarse con ambos:
| Método | Qué hace | Ejemplo |
|---|---|---|
| HTTP | Llama un endpoint directamente vía HTTP | Enviar un POST a una API que apaga instancias |
| Pub/Sub | Publica un mensaje en un tópico | Disparar una función que escucha un tópico y ejecuta lógica |
⚙️ Funcionalidades Principales
1. Creación de Schedulers
Scheduler de Tipo Pub/Sub
Permite programar mensajes en un tópico de Pub/Sub.
- GCP Project (Obligatorio): Proyecto en Google Cloud (Ejemplo: trmdomain-prod)
- Job Name (Obligatorio): Nombre único del job (Ejemplo: andes-load-cost)
- Payload Message: Mensaje en formato JSON a enviar (Ejemplo:
{ "key": "value" }) - Description: Breve descripción (Ejemplo: Carga automática de costos)
- Schedule (Obligatorio): Expresión cron para la frecuencia de ejecución (Ejemplo: 0 */1 * * *)
- Topic (Obligatorio): Tópico Pub/Sub (Ejemplo: projects/trmdomain-prod/topics/latam-cost)
- Time Zone: Zona horaria del cron (Ejemplo: Etc/UTC)
- Retry Configurations (Opcional): Configuración de reintentos:
- Max Backoff Duration: 320s
- Max Doublings: 5
- Min Backoff Duration: 5s
- Max Retry Duration: 10s
- Retry Count: 3
Scheduler de Tipo HTTP
Permite programar solicitudes HTTP a una URL específica.
- GCP Project (Obligatorio): Proyecto en Google Cloud (Ejemplo: trmdomain-intg)
- Job Name (Obligatorio): Nombre del job (Ejemplo: andes-update-opcon)
- Http Target URL (Obligatorio): URL de destino (Ejemplo: https://andes-prod-api-gateway.example.com)
- Http Target Headers: Encabezados HTTP adicionales
(Ejemplo:
{ "Content-Type": "application/json", "Authorization": "Bearer token" }) - Http Method: Método HTTP (GET o POST)
- OIDC Auth (Opcional): Configuración de autenticación con OIDC:
- OIDC Audience (Ejemplo: https://example.com)
- OIDC SA Email (Ejemplo: service-account@example.com)
- Schedule (Obligatorio): Expresión cron (Ejemplo: 0 4 * * *)
- Retry Configurations (Opcional): Igual que en Pub/Sub
2. Sincronización de Schedulers
Permite sincronizar todos los Schedulers de un proyecto seleccionado.
Proceso:- Seleccionar el proyecto en el campo GCP Project (Ejemplo: operationsdomain-intg)
- Hacer clic en Sync Scheduler
- El sistema detecta y registra todos los Schedulers existentes dentro del proyecto
3. Operaciones Day-2
Permite gestionar individualmente cada job.
- Force Run: Ejecuta inmediatamente el job seleccionado
- Pause Job: Pausa temporalmente la ejecución del job
- Resume Job: Reactiva un job pausado
- Editar Scheduler Pub/Sub o HTTP: Permite modificar los valores y reflejarlos en GCP
- Eliminar Scheduler: Elimina el Scheduler y su workspace
Nota: Ahora se pueden editar Schedulers creados fuera de ANDES, pero los cambios deben hacerse directamente en la API de Google y se registrarán en ANDES.
Proceso:
- Seleccionar el job en la lista
- Acceder al menú de acciones
- Elegir la operación requerida
Descripción Técnica del Proceso de Creación de Scheduler
El diagrama del sistema representa el flujo de trabajo para la creación y gestión de Schedulers en Google Cloud mediante herramientas integradas.
Flujo del Sistema
- Port: Punto de entrada donde el usuario realiza una solicitud POST con un JSON al API Gateway
- API Gateway: Redirige los datos al servicio Cloudrun Scheduler Sync
- Cloudrun Scheduler Sync:
- Valida la información
- Envía una solicitud para crear un workspace en Terraform Cloud
- Terraform Cloud:
- Ejecuta el plan para crear o actualizar el Scheduler en Google Cloud
- Envía notificaciones sobre el estado del workspace
- Google Cloud: Se crea el Scheduler en el proyecto correspondiente
- Port: Cuando se completa la creación, se genera un blueprint en Port como registro visual
🔹 Componentes Clave:
- Port: Interfaz inicial
- API Gateway: Gestiona solicitudes entrantes
- Cloudrun Scheduler Sync: Servicio de integración
- Terraform Cloud: Gestión de infraestructura como código
- Google Cloud: Plataforma donde se ejecutan los schedulers
Permisos y Accesos
🔹 ¿Quién puede ver?
- Todos los usuarios con acceso al proyecto GCP correspondiente
🔹 ¿Quién puede crear?
- Usuarios con permisos en Google Cloud Scheduler y acceso al API Gateway
🔹 ¿Quién puede modificar?
- Administradores del proyecto
- Usuarios con acceso al workspace en Terraform Cloud
Interfaz de Usuario
La interfaz muestra:
- Lista de Schedulers activos con su estado
- Opciones de sincronización y operaciones Day-2
- Formularios para crear y editar schedulers
Formularios y Entrega de Datos
🔹 ¿Qué se puede hacer en el formulario?
- Crear un Scheduler desde cero
- Editar un Scheduler existente
- Configurar parámetros avanzados como reintentos, autenticación y payloads
🔹 ¿Cómo se entregan los datos?
- Se envían como una solicitud POST en formato JSON al API Gateway
Ejemplo de Payload JSON:
{
"gcp_project": "trmdomain-prod",
"job_name": "andes-load-cost",
"schedule": "0 */1 * * *",
"topic": "projects/trmdomain-prod/topics/latam-cost",
"payload": { "key": "value" },
"retry_config": { "max_backoff_duration": "320s", "max_doublings": 5 }
}