Despliegue de Templates de Dataflow
Este documento describe los procesos de despliegue y gestión de templates de Dataflow. Para información sobre la arquitectura y funcionamiento de los templates, consulta Dataflow Templates.
Repositorio
Los templates se encuentran en el repositorio templates-dataflow ubicado en /Users/solvento/Desktop/templates-dataflow.
Sistema de Despliegue
Script de Despliegue
El script deploy_templates.sh proporciona un sistema unificado para desplegar templates:
Ejemplos:
# Desplegar template de invoices-webhook en producción
./deploy_templates.sh invoices-webhook prod
# Desplegar template de invoices-api en desarrollo
./deploy_templates.sh invoices-api dev
Variables de Entorno Requeridas
Cada template requiere variables obligatorias en su archivo .env:
# VARIABLES DEL SISTEMA DE DESPLIEGUE (OBLIGATORIAS)
PROJECT_ID=solvento-data-prod
REGION=us-central1
GCS_BUCKET=syntage-ingestion
JOB_NAME=invoices-webhook-prod
TEMPLATE_SCRIPT_NAME=dataflow_template.py
TEMPLATE_GCS_PATH=gs://artifacts-bucket-solvento-data-prod/syntage/dataflow_templates/invoices-webhook-prod
Variables del Template
Variables específicas del template (convertidas automáticamente a argumentos):
# PARÁMETROS DEL TEMPLATE
INPUT_SUBSCRIPTION=projects/solvento-data-prod/subscriptions/invoices-webhook-subscription
OUTPUT_TABLE=solvento-data-prod:syntage.invoices
DLQ_TOPIC=projects/solvento-data-prod/topics/invoices-dlq
API_KEY=...
API_RATE_LIMIT=5
API_TIMEOUT=300
SCHEMA_NAME=invoices
BACKUP_WINDOW_SECONDS=900
ELK_ENABLED=true
ELK_HOST=elasticsearch.solvento.mx
ELK_USER=elastic
ELK_PASSWORD=...
Versionado Automático
Los templates se almacenan en GCS con versionado automático:
Donde {TIMESTAMP} tiene el formato YYYYMMDD-HHMMSS.
Ejemplo:
- gs://syntage-ingestion/template/invoices-webhook-prod-20241215-143022
Ventajas: - Historial de versiones - Rollback fácil - Trazabilidad - Despliegues seguros (no sobrescribe templates en uso)
Flujo de Despliegue
- Desarrollo: Crear o modificar el template en el directorio correspondiente
- Configuración: Actualizar variables en
dev.envoprod.env - Despliegue: Ejecutar
./deploy_templates.sh <template> <env> - Validación: El script valida archivos y variables
- Construcción: Genera el comando de Dataflow dinámicamente
- Confirmación: Solicita confirmación antes de ejecutar
- Ejecución: Despliega el template a GCS con timestamp
- Terraform: Actualizar configuración de Terraform con nueva ruta del template
Uso de Templates Desplegados
Desde Terraform
Los templates desplegados se gestionan mediante Terraform (ver Terraform).
Desde gcloud CLI
gcloud dataflow jobs run JOB_NAME \
--gcs-location=gs://{bucket}/template/{job_name}-{timestamp} \
--region=us-central1 \
--parameters=input_subscription=projects/project/subscriptions/sub,output_table=project:dataset.table
Listar Versiones
# Listar todas las versiones de un template
gsutil ls gs://syntage-ingestion/template/invoices-webhook-prod-*
Integración con Terraform
Después de desplegar un template, actualizar la configuración de Terraform:
- Obtener la ruta del template desplegado (con timestamp)
- Actualizar
variables_prod.tfovariables_dev.tf: - Aplicar cambios con Terraform:
terraform planyterraform apply