Skip to content
← Volver a proyectos

Panel de control para EKS GPU

Patrón reutilizable para encender y apagar nodegroups GPU de alto costo en EKS desde un panel web propio. Construido sobre CloudFront, S3, API Gateway y Lambda, con autenticación simple. Diseñado para laboratorios y demostraciones donde la GPU se utiliza por horas, no por días.

Año
2026
Stack
AWS EKS CloudFront API Gateway Lambda S3 IAM
Diagrama del panel de control para encender y apagar nodegroups GPU en EKS desde una interfaz web
Diagrama del panel de control para encender y apagar nodegroups GPU en EKS desde una interfaz web

Contexto

Los nodos GPU en AWS (familias g6, g5 y p4) tienen un costo que oscila entre uno y treinta dólares por hora. En el contexto de laboratorios y demostraciones, mantener estos recursos activos las veinticuatro horas se traduce en gastos de cientos o miles de dólares mensuales. La operación manual de apagado funciona — hasta que un olvido durante un fin de semana se traduce en un sobrecosto significativo.

Las alternativas convencionales (CloudWatch schedules, Karpenter, Spot) resultan demasiado rígidas o asumen una carga de trabajo continua. La necesidad concreta era simple: un botón web que el usuario activa al iniciar la sesión y libera al concluirla.

Arquitectura

El panel se sirve como sitio estático desde S3 detrás de CloudFront, comunicándose con un endpoint protegido en API Gateway. La función Lambda detrás del endpoint cumple tres responsabilidades:

  1. Validación de un token simple (cookie firmada o header).
  2. Llamada a EKS para escalar el desired-capacity del nodegroup GPU.
  3. Devolución del estado actual al panel para reflejar las transiciones (iniciando, apagando, listo).

El frontend realiza polling sobre el endpoint de estado cada pocos segundos, ofreciendo al usuario una experiencia próxima al tiempo real.

Justificación del stack

Decisiones que aportaron valor

Estado en el clúster, no en una base de datos

En lugar de mantener una tabla externa con el estado de cada nodegroup, el sistema consulta directamente a EKS por el desired-capacity. La fuente de verdad reside en un único lugar y elimina por completo los problemas de desincronización.

Apagado automático con timeout

Un parámetro opcional permite encender el nodo “por dos horas”. La Lambda agenda una tarea EventBridge que apaga el recurso si el usuario olvida hacerlo manualmente. Una decisión menor en el diseño que se traduce en ahorros consistentes.

Autenticación deliberadamente simple

Para un panel de uso personal o de equipos reducidos, OAuth resulta sobredimensionado. Un secreto compartido firmado en cookie es suficiente. El diseño contempla la migración futura a Cognito o IAM Identity Center sin necesidad de modificar el resto de la arquitectura.

Reutilización

Hoy aplico este mismo patrón al laboratorio de FortiAIGate, pero el código está concebido como una plantilla: basta con cambiar el nodegroup objetivo y el branding para extender su uso a FortiEDR, sandboxes de análisis de malware o cualquier carga de GPU consumida por sesiones.

Próximos pasos

Estoy consolidando el panel en un módulo Terraform que recibe el clúster y el nodegroup como entrada y aprovisiona automáticamente S3, CloudFront, API Gateway, Lambda e IAM. El objetivo es permitir que cualquier ingeniero pueda incorporar un “interruptor de GPU” a su despliegue EKS mediante un único terraform apply.