Overview #

Flink Kubernetes Operator acts as a control plane to manage the complete deployment lifecycle of Apache Flink applications. Although Flink’s native Kubernetes integration already allows you to directly deploy Flink applications on a running Kubernetes(k8s) cluster, custom resources and the operator pattern have also become central to a Kubernetes native deployment experience.

Flink Kubernetes Operator aims to capture the responsibilities of a human operator who is managing Flink deployments. Human operators have deep knowledge of how Flink deployments ought to behave, how to start clusters, how to deploy jobs, how to upgrade them and how to react if there are problems. The main goal of the operator is the automation of these activities, which cannot be achieved through the Flink native integration alone.

Features #

Category Feature Support Comment
Kubernetes integration Flink Native full
Standalone no
Deployment Mode Application Mode full
Session Mode limited no job management
Lifecycle Management Start Job full empty state or from savepoint
Upgrade Job full stateless or last-state(chkp/svp)
Delete Job full
Pause/Resume Job full
Savepoint Management limited manual savepoint triggering only
HA full via flink native k8s HA
Validation full webhook and operator based
Configuration Operator configuration full defaults and helm values override
Native Flink properties full defaults and job level override
Environment variables full via pod templates
Native Kubernetes POD settings full via pod templates
Operations Installation limited Helm based, no public repos used
UI Access limited domain based routing only
Operator Log Aggregation full k8s native and/or custom appender
Operator Metric Aggregation limited basic process metrics only
Job Logs full k8s native and/or custom appender
Job Metrics full k8s native and/or custom appender
K8s Events limited deployment events only
Error Handling and Recovery limited non-configurable exponential backoff
Pod Augment Pod Template full
Init containers full
Sidecar containers full
Layering full jm/tm level override
Job Type Jar job full
SQL Job no
Python Job no
CI/CD Continuous Integration full via github actions
Public Docker repository full ghcr.io / dockerhub
Public Helm repository full apache release repo