Skip to Content
OpenETL
ReferenceResource specs

Flink cluster

Every field of a FlinkCluster document, including target choices, credentials and resource defaults.

A FlinkCluster names where runners deploy continuous pipelines' Flink 1.20 jobs. It does not install Flink or its Kubernetes Operator. Transform a stream with Flink covers the job contract, runner bridge and storage requirements.

The document

FieldTypeRequiredDefaultMeaning
apiVersionstringYes—openetl.io/v1alpha1
kindstringYes—FlinkCluster
metadata.namenameYes—Lowercase letters, digits and hyphens, at most 63 characters, starting and ending with a letter or digit
metadata.workspacenameNoThe CLI's --workspace, otherwise defaultThe workspace the resource belongs to
specobjectYes—The fields below

Fields that aren't listed are refused. Required applies within the containing object; an optional object may be omitted, but its required children must be set when you include it. Default describes what omission means.

spec

Exactly one of kubernetes, rest and emr is required.

FieldTypeRequiredDefaultMeaning
kubernetesobjectOne of kubernetes, rest or emr—Create each job as a FlinkDeployment using the Flink Kubernetes Operator.
kubernetes.namespacenameYes in kubernetes—The namespace for job deployments.
kubernetes.imagestringNoflink:1.20Flink 1.20 image for job pods. The job needs the S3 filesystem plugin when its storage is on S3.
kubernetes.serviceAccountnameNoflinkJob pods' service account. Kubernetes high availability needs permission to edit ConfigMaps.
kubernetes.kubeconfigsecret referenceNoThe runner's in-cluster identity{ secret: NAME } holding a kubeconfig for the target cluster.
kubernetes.jobManagerobjectNo1 CPU and 2048m memoryJobManager resources.
kubernetes.jobManager.cpunumber, 0 or moreNo1; 0 also selects the defaultCPUs for the JobManager.
kubernetes.jobManager.memoryquantityNo2048mMemory, such as 2048m or 2g.
kubernetes.taskManagerobjectNo1 CPU and 2048m memoryTaskManager resources.
kubernetes.taskManager.cpunumber, 0 or moreNo1; 0 also selects the defaultCPUs for each TaskManager.
kubernetes.taskManager.memoryquantityNo2048mMemory, such as 2048m or 2g.
restobjectOne of kubernetes, rest or emr—Use an existing session cluster's REST API.
rest.urlHTTP or HTTPS URLYes in rest—The REST API's base URL, without a query string. A trailing slash is removed.
rest.authsecret referenceNoNo bearer token{ secret: NAME } holding a bearer token for a proxy in front of the API.
emrobjectOne of kubernetes, rest or emr—Run each job on YARN as an EMR on EC2 step.
emr.clusterIdstringOne of clusterId or clusterName in emr—The cluster's ID.
emr.clusterNamestringOne of clusterId or clusterName in emr—Find the one active cluster of this name at each deployment.
emr.regionstringYes in emr—The AWS region containing the cluster.
confmap of scalar values or secret referencesNoNoneFlink configuration for every job. Values become text; secrets use { secret: NAME } in the same workspace. Job settings override cluster settings.

Configuration keys contain a dot and must not be options reserved by the runner, such as checkpoint locations, restart strategy or deployment identity.

apiVersion: openetl.io/v1alpha1
kind: FlinkCluster
metadata:
  name: streaming
spec:
  rest:
    url: http://flink-jobmanager:8081

The runner must expose its bridge at an address the Flink job can reach directly. Code, parallelism, output streams and storage credentials are Pipeline fields. The resource's settings are versioned, and pipeline versions pin them.

On this page