HPA non basta
Kubernetes HPA (Horizontal Pod Autoscaler) scala basandosi su CPU/memoria — metrica troppo grossolana per workload event-driven: lunghezza queue Kafka, profondità RabbitMQ, messages SQS, custom metrics. Serve un autoscaler che guardi eventi esterni.
Il rilascio
KEDA (Kubernetes Event-Driven Autoscaling) è annunciato da Microsoft e Red Hat nel maggio 2019 a KubeCon Barcelona. Versione 1.0 rilasciata il 19 novembre 2019. Licenza Apache 2.0. Scritto in Go.
Come funziona
KEDA estende HPA K8s con ScaledObject (o ScaledJob) CRD:
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata: { name: kafka-consumer }
spec:
scaleTargetRef:
name: my-consumer
minReplicaCount: 0
maxReplicaCount: 50
triggers:
- type: kafka
metadata:
bootstrapServers: kafka:9092
topic: orders
lagThreshold: "100"
KEDA osserva il lag del topic Kafka e scala il Deployment. Include scale-to-zero: se non ci sono messaggi, il Deployment scende a 0 repliche.
Scaler supportati
60+ scaler out-of-box:
- Queues/Streaming — Kafka, RabbitMQ, ActiveMQ, NATS, Redis Streams, Azure Service Bus, AWS SQS/Kinesis, GCP Pub/Sub
- Metrics — Prometheus, Datadog, New Relic, Azure Monitor, CloudWatch
- Database — PostgreSQL, MySQL, MSSQL, MongoDB (row count)
- Triggers — Cron, external webhook, Redis, etcd, Solace
- AI/ML — Seldon, custom predictor via gRPC
Casi d’uso
- Worker consumer Kafka che scala su lag
- Batch processing triggerato da coda
- Serverless-like su K8s (scale-to-zero)
- Scheduled scaling — apri alle 8:00, chiudi alle 20:00
- Spot workload — burst su low-priority
- ML inference — scaling basato su richieste
Integrazione
- Knative complementare per HTTP serverless
- Argo Events — eventi in cluster
- Istio + KEDA — scala basandosi su request-per-second
- Prometheus Operator — custom metrics
Nel contesto italiano
KEDA è usato in:
- E-commerce italiani con burst traffico (Black Friday, Natale)
- Fintech — processing asincrono ordini
- Telco — event-driven pipeline B/OSS
- Industrial IoT — processing sensori
- AI/ML — autoscaling model inference
- PA digitale — pipeline batch PNRR/PSN
Permette di contenere costi cloud facendo scale-to-zero su workload idle, e gestire picchi imprevedibili senza provisioning statico.
Riferimenti: KEDA 1.0 (19 novembre 2019). Microsoft + Red Hat. Licenza Apache 2.0. Scritto in Go. ScaledObject/ScaledJob CRD. 60+ scaler. Scale-to-zero.