Skip to content

Helm Values Reference

Full reference for dataflow-operator chart values. Source of truth: values.yaml in the helm-charts repo (mirrored under helm-charts/charts/dataflow-operator/ in the monorepo).

When to read this: tuning install beyond Getting Started defaults — images, webhook, GUI, Prometheus, Sentry, CRD lifecycle.

See also: Getting Started · Web GUI · Metrics · Development (log levels, webhook TLS)

Install / upgrade

helm install dataflow-operator oci://ghcr.io/dataflow-operator/helm-charts/dataflow-operator \
  -f my-values.yaml

helm upgrade dataflow-operator oci://ghcr.io/dataflow-operator/helm-charts/dataflow-operator \
  -f my-values.yaml

Chart appVersion pins the default operator image tag when image.tag is unset.


CRDs

Parameter Description Default
crds.install Install/update CRDs (DataFlow, DataFlowCron) on helm install / helm upgrade true
crds.keep Annotate CRDs with helm.sh/resource-policy: keep so they survive helm uninstall true

Deleting CRDs removes all DataFlow / DataFlowCron resources. Keep crds.keep: true in production.


Operator workload

Parameter Description Default
replicaCount Operator Deployment replicas (leader election when > 1) 1
image.repository Operator image ghcr.io/dataflow-operator/dataflow
image.pullPolicy Image pull policy IfNotPresent
image.tag Operator image tag (defaults to chart appVersion) chart appVersion
processorImage Processor pod image. Empty → ghcr.io/dataflow-operator/dataflow-processor with the same tag as the operator ""
imagePullSecrets Pull secrets for operator/processor images []
nameOverride Override chart name used in resource names ""
fullnameOverride Override full resource name prefix ""
podAnnotations Annotations on the operator pod {}
podSecurityContext Pod-level security context {}
securityContext Container security context {}
resources.limits.cpu CPU limit 500m
resources.limits.memory Memory limit 512Mi
resources.requests.cpu CPU request 100m
resources.requests.memory Memory request 128Mi
nodeSelector Node selector {}
tolerations Tolerations []
affinity Affinity {}

ServiceAccount and RBAC

Parameter Description Default
serviceAccount.create Create a ServiceAccount for the operator true
serviceAccount.annotations Annotations (e.g. IRSA role ARN) {}
serviceAccount.name Existing SA name; empty → generated name ""
rbac.create Create ClusterRole / ClusterRoleBinding (includes checkpoint persistence permissions) true

Logging and processor runtime

Parameter Description Default
logLevel Operator LOG_LEVEL: debug, info, warn, error info
processorLogLevel Passed to each processor pod as LOG_LEVEL info
processorProgressTimeoutSeconds Processor /livez progress timeout (seconds). Low-traffic Kafka needs headroom beyond batch interval 3600

Metrics, health, and service

Parameter Description Default
metrics.enabled Expose Prometheus metrics true
metrics.port Metrics bind port 9090
health.probePort Health probe port 9091
service.type Kubernetes Service type ClusterIP
service.port Service port (metrics) 9090

Validating webhook

Parameter Description Default
webhook.enabled Enable admission webhook for DataFlow specs false
webhook.caBundle Base64 PEM CA bundle for ValidatingWebhookConfiguration (required with enabled) ""
webhook.certDir Mount path for TLS certs in the operator container ""
webhook.secretName Secret with tls.crt / tls.key ""

ValidatingWebhookConfiguration is created only when both webhook.enabled and webhook.caBundle are set (or CA is injected, e.g. by cert-manager). See Development.


Sentry

Parameter Description Default
sentry.enabled Report errors/traces from operator and processors false
sentry.dsn Sentry DSN (required when enabled) ""
sentry.environment Environment name production
sentry.tracesSampleRate Traces sample rate 0.01.0 0.1
sentry.debug Sentry SDK debug output false
sentry.release Release string (git commit or chart appVersion) ""

ServiceMonitor and monitoring

Parameter Description Default
serviceMonitor.enabled Create ServiceMonitor for Prometheus Operator false
serviceMonitor.interval Scrape interval 30s
serviceMonitor.scrapeTimeout Scrape timeout 10s
serviceMonitor.additionalLabels Labels for Prometheus serviceMonitorSelector (e.g. release: kube-prometheus-stack) {}
monitoring.dashboard.enabled Install Grafana dashboard ConfigMap (grafana_dashboard: "1") false
monitoring.dashboard.folder Grafana folder annotation DataFlow
monitoring.prometheusRule.enabled Install PrometheusRule alerts false
monitoring.prometheusRule.additionalLabels Labels for Prometheus ruleSelector {}

Example with kube-prometheus-stack:

helm upgrade --install dataflow-operator oci://ghcr.io/dataflow-operator/helm-charts/dataflow-operator \
  --set serviceMonitor.enabled=true \
  --set serviceMonitor.additionalLabels.release=kube-prometheus-stack \
  --set monitoring.prometheusRule.enabled=true \
  --set monitoring.prometheusRule.additionalLabels.release=kube-prometheus-stack \
  --set monitoring.dashboard.enabled=true

Web GUI (gui.*)

Deep dive: Web GUI. Summary of chart keys:

Parameter Description Default
gui.enabled Deploy dataflow-web false
gui.image.repository GUI image ghcr.io/dataflow-operator/dataflow-web
gui.image.tag GUI image tag chart default (see values.yaml)
gui.image.pullPolicy Pull policy IfNotPresent
gui.replicaCount GUI replicas 1
gui.port Bind port 8080
gui.logLevel debug / info / warn / error; empty → server default ""
gui.extraEnv Extra env vars []
gui.prometheus.url Prometheus base URL for historical charts ""
gui.prometheus.bearerTokenSecret.name Secret name for bearer token ""
gui.prometheus.bearerTokenSecret.key Secret key token
gui.resources Resource requests/limits {}
gui.serviceAccount.create Dedicated least-privilege SA for GUI true
gui.serviceAccount.name Existing SA; if set, chart does not create GUI SA/RBAC ""
gui.ingress.enabled Expose GUI via Ingress false
gui.ingress.className Ingress class ""
gui.ingress.annotations Ingress annotations {}
gui.ingress.hosts Hosts and paths see values.yaml
gui.ingress.tls TLS secrets []

Example production snippet

replicaCount: 2

image:
  tag: "1.9.0"

logLevel: info
processorLogLevel: info

webhook:
  enabled: true
  certDir: /tmp/k8s-webhook-server/serving-certs
  secretName: dataflow-operator-webhook-cert
  # caBundle: leave empty if cert-manager injects CA

gui:
  enabled: true
  serviceAccount:
    create: true
  ingress:
    enabled: true
    className: nginx
    hosts:
      - host: dataflow.example.com
        paths:
          - path: /
            pathType: Prefix

serviceMonitor:
  enabled: true
  additionalLabels:
    release: kube-prometheus-stack

monitoring:
  dashboard:
    enabled: true
  prometheusRule:
    enabled: true
    additionalLabels:
      release: kube-prometheus-stack