finds.dev← search

// the find

apache/flink-kubernetes-operator

★ 1,016 · Java · Apache-2.0 · updated Jul 2026

Apache Flink Kubernetes Operator

The official Kubernetes operator for Apache Flink, letting you manage Flink Application and Session deployments as native CRDs via kubectl and Helm. It handles the full lifecycle: deploy, upgrade, savepoint/checkpoint management, and autoscaling. This is the production-grade path for running Flink on Kubernetes — the alternative is hand-rolling Flink's native k8s integration, which gets painful fast.

The built-in autoscaler is the standout feature — it uses actual operator metrics to adjust parallelism per-operator in a pipeline, not just CPU/memory like HPA. Blue-green deployment support for stateless jobs is genuinely useful for zero-downtime upgrades. The savepoint/checkpoint lifecycle is well-thought-out: upgrades trigger savepoints automatically, and you can restore from a specific savepoint via the CRD spec. The standalone autoscaler module means you can run the scaling logic without the full operator, useful if you're stuck in a non-k8s environment.

The API is still `v1beta1` despite being called 'Production Ready' — breaking changes are possible and upgrades between operator versions require reading the compatibility matrix carefully. The autoscaler's lag-based scaling works well for simple pipelines but struggles with backpressure from external sinks; you can tune it but the defaults will disappoint you at scale. Multi-tenant setups are awkward: the operator watches all namespaces or a configured set, but RBAC isolation between teams sharing a cluster needs manual work. Documentation for edge cases (custom HA storage backends, non-standard Flink configs that conflict with operator assumptions) is thin and you end up reading source code.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →