blob: de9c8eb42e0d5ad0409fd6754c7742c70c0e6fb4 [file]
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Default values for fluss.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
image:
registry: ""
repository: apache/fluss
tag: "1.0.0"
pullPolicy: IfNotPresent
pullSecrets: []
# Fluss server configuration options
configurationOverrides:
default.bucket.number: 3
default.replication.factor: 3
zookeeper.path.root: /fluss
zookeeper.address: zk-zookeeper.{{ .Release.Namespace }}.svc.cluster.local:2181
remote.data.dir: /tmp/fluss/remote-data
data.dir: /tmp/fluss/data
internal.listener.name: INTERNAL
tablet:
numberOfReplicas: 3
storage:
enabled: false
size: 1Gi
storageClass:
# Readiness probe configuration for rolling upgrade gate.
# The probe talks to the LOCAL tablet server (127.0.0.1:client-port) and
# asks it to forward a getClusterHealth RPC to the Coordinator over the
# internal listener. Pod is marked Ready only when the cluster is GREEN.
# If the server does not support the API (older version), the probe
# immediately falls back to TCP-only port readiness.
readinessProbe:
# Timeout in ms for the RPC call.
rpcTimeoutMs: 5000
# Standard Kubernetes probe parameters (tuned for recovery checks).
#
# The total time Kubernetes will wait before flipping the pod to NotReady is
# initialDelaySeconds + failureThreshold * periodSeconds
# = 15 + 360 * 5 = 1815s (~30 minutes) by default.
# IMPORTANT: this window MUST be larger than healthCheckTimeoutSeconds
# below, otherwise Kubernetes will mark the pod NotReady BEFORE the
# in-script health-check fallback has a chance to latch the TCP fast path,
# which would still wedge the rolling upgrade. If you tune
# healthCheckTimeoutSeconds upward, raise failureThreshold accordingly so
# the inequality (failureThreshold * periodSeconds > healthCheckTimeoutSeconds)
# always holds.
failureThreshold: 360
timeoutSeconds: 10
initialDelaySeconds: 15
periodSeconds: 5
# Maximum wall-clock seconds the cluster health gate is allowed to keep a
# freshly-created tablet pod NotReady on its first boot. After this budget
# is exhausted the probe latches the TCP-only fast path so a permanently-
# unrecoverable cluster cannot wedge a rolling upgrade indefinitely.
# Default: 1200 (20 minutes).
healthCheckTimeoutSeconds: 1200
# Optional client auth configuration passed to the probe's RpcClient as a
# single-line string of semicolon-separated `key:value` pairs (no quoting
# or escaping needed). Required only when the local client listener
# enforces SASL. Example:
# healthCheckAuth: "client.security.protocol:SASL;client.sasl.mechanism:PLAIN;client.security.sasl.username:admin;client.security.sasl.password:admin-pass"
healthCheckAuth: ""
extraVolumes: []
extraVolumeMounts: []
initContainers: []
extraEnv: []
envFrom: []
annotations: {}
service:
annotations: {}
podAnnotations: {}
podLabels: {}
podDisruptionBudget:
enabled: false
# minAvailable: 1
# maxUnavailable: 1
# Pod scheduling configuration
affinity: {}
# Example: spread tablet server pods across availability zones and nodes.
# Replace `<release-name>` below with your Helm release name (the value
# passed to `helm install <release-name>`) before uncommenting.
# affinity:
# podAntiAffinity:
# preferredDuringSchedulingIgnoredDuringExecution:
# - weight: 100
# podAffinityTerm:
# topologyKey: topology.kubernetes.io/zone
# labelSelector:
# matchLabels:
# app.kubernetes.io/instance: <release-name>
# app.kubernetes.io/component: tablet
# - weight: 50
# podAffinityTerm:
# topologyKey: kubernetes.io/hostname
# labelSelector:
# matchLabels:
# app.kubernetes.io/instance: <release-name>
# app.kubernetes.io/component: tablet
nodeSelector: {}
tolerations: []
topologySpreadConstraints: []
coordinator:
numberOfReplicas: 1
storage:
enabled: false
size: 1Gi
storageClass:
extraVolumes: []
extraVolumeMounts: []
initContainers: []
extraEnv: []
envFrom: []
annotations: {}
service:
annotations: {}
podAnnotations: {}
podLabels: {}
podDisruptionBudget:
enabled: false
# minAvailable: 1
# maxUnavailable: 1
affinity: {}
nodeSelector: {}
tolerations: []
topologySpreadConstraints: []
# Fluss listener configurations
listeners:
internal:
port: 9123
client:
port: 9124
# Secrets referenced from configurationOverrides via config provider markers:
# mounts are read with ${directory:<basePath>/<name>:<key>}, env entries with
# ${env:<NAME>}. The chart generates the matching config.providers lines.
secrets:
basePath: /etc/fluss/secrets
# - name: paimon-creds
# secretName: fluss-paimon-creds
mounts: []
# - name: PAIMON_S3_ACCESS_KEY
# secretName: fluss-paimon-creds
# key: access-key
env: []
# Fluss security configurations
security:
client:
sasl:
# "" | plain
mechanism: ""
plain:
# Each entry is either a literal {username, password} pair or an
# `existingSecret` reference that sources both from a Secret (same shape
# as internal/zookeeper). Mixing within one entry is not allowed.
users: []
# - username: alice
# password: alice-pass
# - existingSecret:
# name: fluss-client-sasl-bob
# usernameKey: username
# passwordKey: password
internal:
sasl:
# "" | plain
mechanism: ""
plain:
username: ""
password: ""
# When set, overrides literal username/password above.
existingSecret: {}
# existingSecret:
# name: fluss-internal-sasl
# usernameKey: username
# passwordKey: password
zookeeper:
sasl:
# "" | plain
mechanism: ""
plain:
username: ""
password: ""
loginModuleClass: "org.apache.fluss.shaded.zookeeper3.org.apache.zookeeper.server.auth.DigestLoginModule"
# When set, overrides literal username/password above.
existingSecret: {}
# existingSecret:
# name: fluss-zk-sasl
# usernameKey: username
# passwordKey: password
# JAAS config is rendered at pod startup by an init container that reads a
# template ConfigMap and substitutes credentials from env. The init container
# reuses the main Fluss image (already available on the node).
metrics:
reporters: ""
prometheus:
port: 9249
service:
portName: metrics
labels: {}
annotations: {}
jmx:
port: 9250
resources: {}
# We usually recommend not to specify default resources and to leave this as a conscious
# choice for the user. This also increases chances charts run on environments with little
# resources, such as Minikube. If you do want to specify resources, uncomment the following
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
# coordinatorServer:
# limits:
# cpu: 100m
# memory: 128Mi
# requests:
# cpu: 100m
# memory: 128Mi
# tabletServer:
# requests:
# cpu: 100m
# memory: 128Mi
# limits:
# cpu: 100m
# memory: 128Mi
serviceAccount:
create: false
# If not set and create is true, a name is generated using the fullname template
name: ""
# Additional annotations to apply to the ServiceAccount.
# These can be useful, for example, to support integrations like workload identity.
annotations: {}