1. Contexto del Proyecto
El 1 de junio de 2025, durante las elecciones judiciales en México, mi equipo fue responsable de una misión crítica: garantizar la descarga, validación y publicación automatizada de resultados electorales provenientes del INE (Instituto Nacional Electoral). Este flujo de datos tenía que funcionar 24/7, con una frecuencia de actualización de cada 5 minutos, y con máxima seguridad y tolerancia a fallos.
Operamos bajo un entorno regulado y expuesto mediáticamente, donde cualquier retraso, inconsistencia o vulnerabilidad sería inaceptable. Para esto, diseñamos una solución de automatización sobre Kubernetes, combinando scripting en Bash, tokens de autenticación y firmas criptográficas GPG. Aquí les comparto cómo lo hicimos.
2. Desafíos Técnicos
-
Alta disponibilidad: La solución debía ejecutarse cada 5 minutos, sin interrupciones, durante toda la jornada electoral.
-
Seguridad de datos: Era indispensable garantizar la autenticidad y no-repudio de los datos publicados.
-
Tolerancia a errores: El sistema debía manejar fallos parciales en servicios externos sin detener la operación general.
-
Infraestructura controlada: El ambiente se desplegó sobre clústeres Kubernetes autoescalables con nodos específicos para tareas cron.
3. Solución Implementada
Decidimos implementar un cron job especializado en Kubernetes, responsable de:
-
Autenticarse con un sistema remoto mediante un API Token.
-
Recuperar el archivo de los resultados.
-
Verificar y validar digitalmente los datos recibidos usando GPG.
-
Publicar los datos procesados en uno micrositio (con backup inmediato).
4. Detalles de Implementación Técnica
Archivo YAML del CronJob en Kubernetes:
apiVersion: batch/v1
kind: CronJob
metadata:
name: resultados-electorales
spec:
schedule: "*/5 * * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: recolector
image: myregistry.com/electoral-job:latest
imagePullPolicy: Always
env:
- name: API_TOKEN
valueFrom:
secretKeyRef:
name: electoral-secrets
key: api-token
volumeMounts:
- name: gpg-keys
mountPath: /gpg
command: ["/bin/sh"]
args: ["-c", "/scripts/monitor.sh"]
restartPolicy: OnFailure
volumes:
- name: gpg-keys
secret:
secretName: gpg-secret
El job se ejecuta cada 5 minutos utilizando una imagen liviana basada en Alpine, con herramientas mínimas necesarias, reforzada para evitar accesos no autorizados.
Mecanismo de seguridad adicional:
-
Las claves GPG se inyectan como secreto de Kubernetes.
-
Las salidas del script se redirigen a logs centralizados para auditoría.
-
Las fallas se notifican vía webhook a un canal Slack monitoreado en tiempo real.
5. Resultados y Aprendizajes
-
🕔 100% de uptime durante más de 24 horas continuas.
-
🔐 0 incidentes de seguridad, gracias al control estricto de accesos y firmas.
-
📉 Carga minimizada gracias a imágenes optimizadas y nodos taintados solo para procesamiento.
-
🔁 Escalabilidad futura lista: el diseño permite extender el flujo a múltiples fuentes de datos judiciales o comiciales.
Este tipo de soluciones no solo demandan experiencia técnica, sino criterio operativo y sentido de urgencia. Lo que está en juego es la confianza pública y la responsabilidad institucional.
🚨 ¿Necesitas diseñar soluciones críticas como esta?
Si estás enfrentando un proyecto sensible en medios, gobierno o datos públicos, y necesitas:
-
Consultoría para despliegues en Kubernetes
-
Implementación de cron jobs confiables
-
Diseño de infraestructura segura y autoescalable
📩 Contáctame para una sesión gratuita de diagnóstico técnico.
Haz que tu próxima implementación funcione como un reloj suizo, incluso bajo presión electoral.
Comments are closed