This is an automated email from the ASF dual-hosted git repository.
yunhong pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/fluss.git
The following commit(s) were added to refs/heads/main by this push:
new e45522368 [helm] Add a helm chart for Fluss #779 (#1685)
e45522368 is described below
commit e45522368f4f8b99a9646e8cbcf4281178953caa
Author: David <[email protected]>
AuthorDate: Fri Oct 17 02:58:21 2025 +0200
[helm] Add a helm chart for Fluss #779 (#1685)
* First helm draft with statefulset tablet, coordinator, configmap and svc
for coordinator and headless svc for tablet
* fix coordinator selector
* changed coordinator to headless svc and adapted advertised listeners,
tested with Flink inside the cluster
* fixed license headers, minor typo fixes and comment cleanup
* fixed license for helpers.tpl
* minor fix to use dynamic namespace naming in the config of advertised
listeners
* added docker.io as registry so people can use other images besides
official one
* added PVC and README to the helm chart
* changed storageClass to null to use default
* used helm templating to dynamically set the namespace in zookeeper address
* changed versions from 0.7.0 to 0.8-SNAPSHOT and included the Docker build
step in the README
---
docker/helm/.helmignore | 23 ++++++
docker/helm/Chart.yaml | 29 ++++++++
docker/helm/README.md | 92 ++++++++++++++++++++++++
docker/helm/templates/_helpers.tpl | 66 +++++++++++++++++
docker/helm/templates/configmap.yaml | 29 ++++++++
docker/helm/templates/sts-coordinator.yaml | 111 +++++++++++++++++++++++++++++
docker/helm/templates/sts-tablet.yaml | 106 +++++++++++++++++++++++++++
docker/helm/templates/svc-coordinator.yaml | 40 +++++++++++
docker/helm/templates/svc-tablet.yaml | 40 +++++++++++
docker/helm/values.yaml | 68 ++++++++++++++++++
10 files changed, 604 insertions(+)
diff --git a/docker/helm/.helmignore b/docker/helm/.helmignore
new file mode 100644
index 000000000..0e8a0eb36
--- /dev/null
+++ b/docker/helm/.helmignore
@@ -0,0 +1,23 @@
+# Patterns to ignore when building packages.
+# This supports shell glob matching, relative path matching, and
+# negation (prefixed with !). Only one pattern per line.
+.DS_Store
+# Common VCS dirs
+.git/
+.gitignore
+.bzr/
+.bzrignore
+.hg/
+.hgignore
+.svn/
+# Common backup files
+*.swp
+*.bak
+*.tmp
+*.orig
+*~
+# Various IDEs
+.project
+.idea/
+*.tmproj
+.vscode/
diff --git a/docker/helm/Chart.yaml b/docker/helm/Chart.yaml
new file mode 100644
index 000000000..9394d9bee
--- /dev/null
+++ b/docker/helm/Chart.yaml
@@ -0,0 +1,29 @@
+#
+# 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.
+#
+
+apiVersion: v2
+name: fluss
+description: A Helm chart for Kubernetes to deploy Apache Fluss
CoordinatorServer and TabletServers.
+appVersion: "0.8-SNAPSHOT"
+type: application
+version: 0.1.0
+home: https://fluss.apache.org
+icon: https://fluss.apache.org/img/logo/svg/colored_logo.svg
+maintainers:
+ - name: Apache Fluss Community
+ url: https://github.com/apache/fluss
\ No newline at end of file
diff --git a/docker/helm/README.md b/docker/helm/README.md
new file mode 100644
index 000000000..d329f2682
--- /dev/null
+++ b/docker/helm/README.md
@@ -0,0 +1,92 @@
+
+# Fluss Helm Chart
+
+This chart deploys an Apache Fluss cluster on Kubernetes, following Helm best
practices.
+It requires a Zookeeper ensemble to be running in the same Kubernetes cluster.
In future releases, we may add support for an embedded Zookeeper cluster.
+
+
+## Development environment
+
+| component
| version |
+|
------------------------------------------------------------------------------
| ------- |
+| [Docker](https://docs.docker.com/)
| v28.3.2 |
+| [Minikube](https://minikube.sigs.k8s.io/docs/)
| v1.36.0 |
+| [Kubernetes](https://kubernetes.io)
| v1.25.3 |
+| [Helm](https://helm.sh)
| v3.18.6 |
+| [Apache Fluss](https://fluss.apache.org/docs/)
| v0.8-SNAPSHOT |
+
+
+## Image requirements
+
+A container image for Fluss is available on DockerHub as `fluss/fluss`. You
can use it directly or build your own from this repo. To use your own image you
need to build the project with
[Maven](https://fluss.apache.org/community/dev/building/) and build it with
Docker.
+
+The Maven build will create all required artifacts in the `build-target`
directory. You need to copy it into the `docker` directory. The Dockerfile in
this directory will copy these artifacts into the image.
+
+In minikube, you can use the local Docker daemon to build the image without
pushing it to a registry:
+
+```bash
+eval $(minikube -p minikube docker-env)
+docker build -t fluss/fluss:0.8-SNAPSHOT .
+```
+
+## Overview
+
+It creates:
+- 1x CoordinatorServer as a StatefulSet with a headless Service (stable
per‑pod DNS)
+- 3x TabletServers as a StatefulSet with a headless Service (stable per‑pod
DNS)
+- ConfigMap for server.yaml (CoordinatorServer and TabletServers) to override
default Fluss configuration
+- Optional PersistentVolumes for data directories
+
+## Quick start
+
+1) ZooKeeper deployment:
+
+To start Zookeeper use Bitnami’s chart or your own deployment. If you have an
existing Zookeeper cluster, you can skip this step. Example with Bitnami’s
chart:
+
+```bash
+helm repo add bitnami https://charts.bitnami.com/bitnami
+helm repo update
+helm install zk bitnami/zookeeper \
+ --set replicaCount=3 \
+ --set auth.enabled=false \
+ --set persistence.size=5Gi
+```
+
+2) Default (Zookeeper available in-cluster):
+
+```bash
+helm install fluss ./fluss-helm
+```
+With an optional namespace flag `--namespace <your-namespace>` if you want to
install it in a specific namespace.
+
+This assumes, that Zookeeper is reachable at
`zk-zookeeper.<your-namespace>.svc.cluster.local:2181`. If your Zookeeper
address is different, you can override it with:
+
+```bash
+helm install fluss ./fluss-helm \
+ --set zookeeper.address=<your-zk-address>
+```
+
+## Configuration reference
+
+Important Fluss options surfaced by the chart:
+- zookeeper.address: CoordinatorServer and TabletServer point to your ZK
ensemble.
+- data.dir, remote.data.dir: Local persistent path for data; remote path for
snapshots (OSS/HDFS). TabletServers default to a PVC mounted at data.dir.
+- bind.listeners: Where the server actually binds.
+- advertised.listeners: Externally advertised endpoints for clients and
intra‑cluster communication. In K8s, advertise stable names.
+- internal.listener.name: Which listener is used for internal communication
(defaults to INTERNAL).
+- tablet-server.id: Required to be unique per TabletServer. The chart
auto‑derives this from the StatefulSet pod ordinal at runtime.
+
+
+### Zookeeper and storage
+- zookeeper.address must point to a reachable ensemble.
+- data.dir defaults to /tmp/fluss/data; use a PVC if persistence.enabled=true.
+
+## Resource management
+
+Set resources with requests/limits as appropriate for production. There are no
defaults to make it also run on environments with little resources such as
Minikube.
+
+## Troubleshooting
+- Image pull errors:
+ - If using a private registry, configure image.pullSecrets and ensure the
image repository/tag are correct.
+- Pods not ready: ensure ZooKeeper is reachable and ports 9123 are open.
+- Connection failures: check advertised.listeners configuration and DNS
resolution within the cluster by using kubectl exec to get a shell in a pod and
test connectivity (using nc).
\ No newline at end of file
diff --git a/docker/helm/templates/_helpers.tpl
b/docker/helm/templates/_helpers.tpl
new file mode 100644
index 000000000..79ae9d310
--- /dev/null
+++ b/docker/helm/templates/_helpers.tpl
@@ -0,0 +1,66 @@
+#
+# 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.
+#
+
+{{/*
+Expand the name of the chart.
+*/}}
+{{- define "fluss.name" -}}
+{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
+{{- end }}
+
+{{/*
+Create a default fully qualified app name.
+*/}}
+{{- define "fluss.fullname" -}}
+{{- if .Values.fullnameOverride -}}
+{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
+{{- else -}}
+{{- $name := default .Chart.Name .Values.nameOverride -}}
+{{- if contains $name .Release.Name -}}
+{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
+{{- else -}}
+{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Create chart name and version as used by the chart label.
+*/}}
+{{- define "fluss.chart" -}}
+{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 |
trimSuffix "-" }}
+{{- end }}
+
+{{/*
+Common labels
+*/}}
+{{- define "fluss.labels" -}}
+helm.sh/chart: {{ printf "%s-%s" .Chart.Name (.Chart.Version | replace "+"
"_") | quote }}
+app.kubernetes.io/name: {{ include "fluss.name" . | quote }}
+app.kubernetes.io/instance: {{ .Release.Name | quote }}
+app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
+app.kubernetes.io/managed-by: {{ .Release.Service | quote }}
+{{- end -}}
+
+{{/*
+Selector labels
+*/}}
+{{- define "fluss.selectorLabels" -}}
+app.kubernetes.io/name: {{ include "fluss.name" . }}
+app.kubernetes.io/instance: {{ .Release.Name }}
+{{- end }}
\ No newline at end of file
diff --git a/docker/helm/templates/configmap.yaml
b/docker/helm/templates/configmap.yaml
new file mode 100644
index 000000000..b0e868c90
--- /dev/null
+++ b/docker/helm/templates/configmap.yaml
@@ -0,0 +1,29 @@
+#
+# 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.
+#
+
+apiVersion: v1
+kind: ConfigMap
+metadata:
+ name: fluss-conf-file
+ labels:
+ {{- include "fluss.labels" . | nindent 4 }}
+data:
+ server.yaml: |
+ {{- range $key, $val := .Values.configurationOverrides }}
+ {{ $key }}: {{ tpl (printf "%v" $val) $ }}
+ {{- end }}
\ No newline at end of file
diff --git a/docker/helm/templates/sts-coordinator.yaml
b/docker/helm/templates/sts-coordinator.yaml
new file mode 100644
index 000000000..287406593
--- /dev/null
+++ b/docker/helm/templates/sts-coordinator.yaml
@@ -0,0 +1,111 @@
+#
+# 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.
+#
+
+apiVersion: apps/v1
+kind: StatefulSet
+metadata:
+ name: coordinator-server
+ labels:
+ {{- include "fluss.labels" . | nindent 4 }}
+spec:
+ serviceName: coordinator-server-hs
+ replicas: 1 # can only be 1 for now
+ selector:
+ matchLabels:
+ {{- include "fluss.selectorLabels" . | nindent 6 }}
+ app.kubernetes.io/component: coordinator
+ template:
+ metadata:
+ labels:
+ {{- include "fluss.selectorLabels" . | nindent 8 }}
+ app.kubernetes.io/component: coordinator
+ spec:
+ containers:
+ - name: {{ .Chart.Name }}-coordinator
+ image: "{{.Values.image.repository}}:{{ .Values.image.tag }}"
+ imagePullPolicy: {{ .Values.image.pullPolicy }}
+ env:
+ - name: POD_NAME
+ valueFrom:
+ fieldRef:
+ fieldPath: metadata.name
+ - name: POD_IP
+ valueFrom:
+ fieldRef:
+ fieldPath: status.podIP
+ - name: POD_NAMESPACE
+ valueFrom:
+ fieldRef:
+ fieldPath: metadata.namespace
+ - name: NODE_IP
+ valueFrom:
+ fieldRef:
+ fieldPath: status.hostIP
+ command:
+ - "/bin/sh"
+ - "-c"
+ - |
+ export FLUSS_SERVER_ID=${POD_NAME##*-} && \
+ cp /opt/conf/server.yaml $FLUSS_HOME/conf && \
+
+ echo "" >> $FLUSS_HOME/conf/server.yaml && \
+ echo "tablet-server.id: ${FLUSS_SERVER_ID}" >>
$FLUSS_HOME/conf/server.yaml && \
+ echo "bind.listeners: INTERNAL://0.0.0.0:{{
.Values.appConfig.internalPort }}, CLIENT://0.0.0.0:{{
.Values.appConfig.externalPort }}" >> $FLUSS_HOME/conf/server.yaml && \
+ echo "advertised.listeners:
CLIENT://${POD_NAME}.coordinator-server-hs.${POD_NAMESPACE}.svc.cluster.local:{{
.Values.appConfig.externalPort }}" >> $FLUSS_HOME/conf/server.yaml && \
+
+ bin/coordinator-server.sh start-foreground
+ livenessProbe:
+ failureThreshold: 100
+ timeoutSeconds: 1
+ initialDelaySeconds: 10
+ periodSeconds: 3
+ tcpSocket:
+ port: {{.Values.appConfig.externalPort}}
+ readinessProbe:
+ failureThreshold: 100
+ timeoutSeconds: 1
+ initialDelaySeconds: 10
+ periodSeconds: 3
+ tcpSocket:
+ port: {{.Values.appConfig.externalPort}}
+ resources:
+ {{- toYaml .Values.resources.tabletServer | nindent 12 }}
+ volumeMounts:
+ - name: fluss-conf
+ mountPath: /opt/conf
+ - name: data
+ mountPath: /tmp/fluss/data
+ volumes:
+ - name: fluss-conf
+ configMap:
+ name: fluss-conf-file
+ {{- if not .Values.persistence.enabled }}
+ - name: data
+ emptyDir: {}
+ {{- end }}
+ {{- if .Values.persistence.enabled }}
+ volumeClaimTemplates:
+ - metadata:
+ name: data
+ spec:
+ accessModes: [ "ReadWriteOnce" ]
+ resources:
+ requests:
+ storage: {{ .Values.persistence.size }}
+ storageClassName: {{ .Values.persistence.storageClass }}
+ {{- end}}
\ No newline at end of file
diff --git a/docker/helm/templates/sts-tablet.yaml
b/docker/helm/templates/sts-tablet.yaml
new file mode 100644
index 000000000..9871bee19
--- /dev/null
+++ b/docker/helm/templates/sts-tablet.yaml
@@ -0,0 +1,106 @@
+#
+# 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.
+#
+
+apiVersion: apps/v1
+kind: StatefulSet
+metadata:
+ name: tablet-server
+ labels:
+ {{- include "fluss.labels" . | nindent 4 }}
+spec:
+ serviceName: tablet-server-hs
+ replicas: 3
+ selector:
+ matchLabels:
+ {{- include "fluss.selectorLabels" . | nindent 6 }}
+ app.kubernetes.io/component: tablet
+ template:
+ metadata:
+ labels:
+ {{- include "fluss.selectorLabels" . | nindent 8 }}
+ app.kubernetes.io/component: tablet
+ spec:
+ containers:
+ - name: {{ .Chart.Name }}-tablet
+ image: "{{.Values.image.repository}}:{{ .Values.image.tag }}"
+ imagePullPolicy: {{ .Values.image.pullPolicy }}
+ env:
+ - name: POD_NAME
+ valueFrom:
+ fieldRef:
+ fieldPath: metadata.name
+ - name: POD_IP
+ valueFrom:
+ fieldRef:
+ fieldPath: status.podIP
+ - name: POD_NAMESPACE
+ valueFrom:
+ fieldRef:
+ fieldPath: metadata.namespace
+ command:
+ - "/bin/sh"
+ - "-c"
+ - |
+ export FLUSS_SERVER_ID=${POD_NAME##*-} && \
+ cp /opt/conf/server.yaml $FLUSS_HOME/conf && \
+ export PORT=$((9125 + ${FLUSS_SERVER_ID})) && \
+ echo "" >> $FLUSS_HOME/conf/server.yaml && \
+ echo "tablet-server.id: ${FLUSS_SERVER_ID}" >>
$FLUSS_HOME/conf/server.yaml && \
+ echo "bind.listeners: INTERNAL://${POD_IP}:{{
.Values.appConfig.internalPort }}, CLIENT://0.0.0.0:{{
.Values.appConfig.externalPort }}" >> $FLUSS_HOME/conf/server.yaml && \
+ echo "advertised.listeners:
CLIENT://${POD_NAME}.tablet-server-hs.${POD_NAMESPACE}.svc.cluster.local:{{
.Values.appConfig.externalPort }}" >> $FLUSS_HOME/conf/server.yaml && \
+ bin/tablet-server.sh start-foreground
+ livenessProbe:
+ failureThreshold: 100
+ timeoutSeconds: 1
+ initialDelaySeconds: 10
+ periodSeconds: 3
+ tcpSocket:
+ port: {{.Values.appConfig.externalPort}}
+ readinessProbe:
+ failureThreshold: 100
+ timeoutSeconds: 1
+ initialDelaySeconds: 10
+ periodSeconds: 3
+ tcpSocket:
+ port: {{.Values.appConfig.externalPort}}
+ resources:
+ {{- toYaml .Values.resources.tabletServer | nindent 12 }}
+ volumeMounts:
+ - name: fluss-conf
+ mountPath: /opt/conf
+ - name: data
+ mountPath: /tmp/fluss/data
+ volumes:
+ - name: fluss-conf
+ configMap:
+ name: fluss-conf-file
+ {{- if not .Values.persistence.enabled }}
+ - name: data
+ emptyDir: {}
+ {{- end }}
+ {{- if .Values.persistence.enabled }}
+ volumeClaimTemplates:
+ - metadata:
+ name: data
+ spec:
+ accessModes: [ "ReadWriteOnce" ]
+ resources:
+ requests:
+ storage: {{ .Values.persistence.size }}
+ storageClassName: {{ .Values.persistence.storageClass }}
+ {{- end}}
\ No newline at end of file
diff --git a/docker/helm/templates/svc-coordinator.yaml
b/docker/helm/templates/svc-coordinator.yaml
new file mode 100644
index 000000000..8cc74728f
--- /dev/null
+++ b/docker/helm/templates/svc-coordinator.yaml
@@ -0,0 +1,40 @@
+#
+# 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.
+#
+
+apiVersion: v1
+kind: Service
+metadata:
+ name: coordinator-server-hs
+ labels:
+ {{- include "fluss.labels" . | nindent 4 }}
+ app.kubernetes.io/component: coordinator
+spec:
+ clusterIP: None
+ type: ClusterIP
+ ports:
+ - name: internal
+ protocol: TCP
+ port: {{ .Values.appConfig.internalPort }}
+ targetPort: {{ .Values.appConfig.internalPort }}
+ - name: client
+ protocol: TCP
+ port: {{ .Values.appConfig.externalPort }}
+ targetPort: {{ .Values.appConfig.externalPort }}
+ selector:
+ {{- include "fluss.selectorLabels" . | nindent 4 }}
+ app.kubernetes.io/component: coordinator
\ No newline at end of file
diff --git a/docker/helm/templates/svc-tablet.yaml
b/docker/helm/templates/svc-tablet.yaml
new file mode 100644
index 000000000..ca74b6d80
--- /dev/null
+++ b/docker/helm/templates/svc-tablet.yaml
@@ -0,0 +1,40 @@
+#
+# 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.
+#
+
+apiVersion: v1
+kind: Service
+metadata:
+ name: tablet-server-hs
+ labels:
+ {{- include "fluss.labels" . | nindent 4 }}
+ app.kubernetes.io/component: tablet
+spec:
+ clusterIP: None
+ type: ClusterIP
+ ports:
+ - name: internal
+ protocol: TCP
+ port: {{ .Values.appConfig.internalPort }}
+ targetPort: {{ .Values.appConfig.internalPort }}
+ - name: client
+ protocol: TCP
+ port: {{ .Values.appConfig.externalPort }}
+ targetPort: {{ .Values.appConfig.externalPort }}
+ selector:
+ {{- include "fluss.selectorLabels" . | nindent 4 }}
+ app.kubernetes.io/component: tablet
\ No newline at end of file
diff --git a/docker/helm/values.yaml b/docker/helm/values.yaml
new file mode 100644
index 000000000..baa4dac25
--- /dev/null
+++ b/docker/helm/values.yaml
@@ -0,0 +1,68 @@
+#
+# 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: fluss
+ tag: "0.8-SNAPSHOT"
+ pullPolicy: IfNotPresent
+ pullSecrets: []
+
+appConfig:
+ internalPort: 9123
+ externalPort: 9124
+
+
+# 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
+
+persistence:
+ enabled: false
+ size: 1Gi
+ storageClass:
+
+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
\ No newline at end of file