This is an automated email from the ASF dual-hosted git repository.

jark pushed a commit to branch release-0.9
in repository https://gitbox.apache.org/repos/asf/fluss.git

commit 4fdcbd35c23c584588e898f9931a1c653fd2662d
Author: Muhammet Orazov <[email protected]>
AuthorDate: Fri Feb 6 13:34:14 2026 +0100

    [helm] Allow templating listeners (internal, client) from values (#2460)
    
    * [helm] Allow templating listeners (internal, client) from values
    
    * Apply review suggestions
---
 helm/templates/sts-coordinator.yaml                | 16 ++++++++++++----
 helm/templates/sts-tablet.yaml                     | 19 ++++++++++++++-----
 helm/templates/svc-coordinator.yaml                | 10 +++++-----
 helm/templates/svc-tablet.yaml                     | 10 +++++-----
 helm/values.yaml                                   | 12 +++++++-----
 website/docs/install-deploy/deploying-with-helm.md | 20 +++++++++-----------
 6 files changed, 52 insertions(+), 35 deletions(-)

diff --git a/helm/templates/sts-coordinator.yaml 
b/helm/templates/sts-coordinator.yaml
index 62591561c..6f2ec40ff 100644
--- a/helm/templates/sts-coordinator.yaml
+++ b/helm/templates/sts-coordinator.yaml
@@ -59,6 +59,11 @@ spec:
               valueFrom:
                 fieldRef:
                   fieldPath: status.hostIP
+          ports:
+            - name: internal
+              containerPort: {{ .Values.listeners.internal.port }}
+            - name: client
+              containerPort: {{ .Values.listeners.client.port }}
           command:
             - "/bin/sh"
             - "-c"
@@ -66,9 +71,12 @@ spec:
               export FLUSS_SERVER_ID=${POD_NAME##*-} && \
               cp /opt/conf/server.yaml $FLUSS_HOME/conf && \
 
+              BIND_LISTENERS="INTERNAL://${POD_IP}:{{ 
.Values.listeners.internal.port }}, CLIENT://${POD_IP}:{{ 
.Values.listeners.client.port }}" && \
+              
ADVERTISED_LISTENERS="CLIENT://${POD_NAME}.coordinator-server-hs.${POD_NAMESPACE}.svc.cluster.local:{{
 .Values.listeners.client.port }}" && \
+
               echo "" >> $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 && \
+              echo "bind.listeners: ${BIND_LISTENERS}" >> 
$FLUSS_HOME/conf/server.yaml && \
+              echo "advertised.listeners: ${ADVERTISED_LISTENERS}" >> 
$FLUSS_HOME/conf/server.yaml && \
 
               bin/coordinator-server.sh start-foreground
           livenessProbe:
@@ -77,14 +85,14 @@ spec:
             initialDelaySeconds: 10
             periodSeconds: 3
             tcpSocket:
-              port: {{.Values.appConfig.externalPort}}
+              port: {{ .Values.listeners.client.port }}
           readinessProbe:
             failureThreshold: 100
             timeoutSeconds: 1
             initialDelaySeconds: 10
             periodSeconds: 3
             tcpSocket:
-              port: {{.Values.appConfig.externalPort}}
+              port: {{ .Values.listeners.client.port }}
           resources:
             {{- toYaml .Values.resources.tabletServer | nindent 12 }}
           volumeMounts:
diff --git a/helm/templates/sts-tablet.yaml b/helm/templates/sts-tablet.yaml
index db7830750..f329eb1f2 100644
--- a/helm/templates/sts-tablet.yaml
+++ b/helm/templates/sts-tablet.yaml
@@ -55,17 +55,26 @@ spec:
               valueFrom:
                 fieldRef:
                   fieldPath: metadata.namespace
+          ports:
+            - name: internal
+              containerPort: {{ .Values.listeners.internal.port }}
+            - name: client
+              containerPort: {{ .Values.listeners.client.port }}
           command:
             - "/bin/sh"
             - "-c"
             - |
               export FLUSS_SERVER_ID=${POD_NAME##*-} && \
               cp /opt/conf/server.yaml $FLUSS_HOME/conf && \
-              export PORT=$((9125 + ${FLUSS_SERVER_ID})) && \
+
+              BIND_LISTENERS="INTERNAL://${POD_IP}:{{ 
.Values.listeners.internal.port }}, CLIENT://${POD_IP}:{{ 
.Values.listeners.client.port }}" && \
+              
ADVERTISED_LISTENERS="CLIENT://${POD_NAME}.tablet-server-hs.${POD_NAMESPACE}.svc.cluster.local:{{
 .Values.listeners.client.port }}" && \
+
               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 && \
+              echo "bind.listeners: ${BIND_LISTENERS}" >> 
$FLUSS_HOME/conf/server.yaml && \
+              echo "advertised.listeners: ${ADVERTISED_LISTENERS}" >> 
$FLUSS_HOME/conf/server.yaml && \
+
               bin/tablet-server.sh start-foreground
           livenessProbe:
             failureThreshold: 100
@@ -73,14 +82,14 @@ spec:
             initialDelaySeconds: 10
             periodSeconds: 3
             tcpSocket:
-              port: {{.Values.appConfig.externalPort}}
+              port: {{ .Values.listeners.client.port }}
           readinessProbe:
             failureThreshold: 100
             timeoutSeconds: 1
             initialDelaySeconds: 10
             periodSeconds: 3
             tcpSocket:
-              port: {{.Values.appConfig.externalPort}}
+              port: {{ .Values.listeners.client.port }}
           resources:
             {{- toYaml .Values.resources.tabletServer | nindent 12 }}
           volumeMounts:
diff --git a/helm/templates/svc-coordinator.yaml 
b/helm/templates/svc-coordinator.yaml
index 8cc74728f..64a622ae2 100644
--- a/helm/templates/svc-coordinator.yaml
+++ b/helm/templates/svc-coordinator.yaml
@@ -29,12 +29,12 @@ spec:
   ports:
     - name: internal
       protocol: TCP
-      port: {{ .Values.appConfig.internalPort }}
-      targetPort: {{ .Values.appConfig.internalPort }}
+      port: {{ .Values.listeners.internal.port }}
+      targetPort: internal
     - name: client
       protocol: TCP
-      port: {{ .Values.appConfig.externalPort }}
-      targetPort: {{ .Values.appConfig.externalPort }}
+      port: {{ .Values.listeners.client.port }}
+      targetPort: client
   selector:
     {{- include "fluss.selectorLabels" . | nindent 4 }}
-    app.kubernetes.io/component: coordinator
\ No newline at end of file
+    app.kubernetes.io/component: coordinator
diff --git a/helm/templates/svc-tablet.yaml b/helm/templates/svc-tablet.yaml
index ca74b6d80..517653e87 100644
--- a/helm/templates/svc-tablet.yaml
+++ b/helm/templates/svc-tablet.yaml
@@ -29,12 +29,12 @@ spec:
   ports:
     - name: internal
       protocol: TCP
-      port: {{ .Values.appConfig.internalPort }}
-      targetPort: {{ .Values.appConfig.internalPort }}
+      port: {{ .Values.listeners.internal.port }}
+      targetPort: internal
     - name: client
       protocol: TCP
-      port: {{ .Values.appConfig.externalPort }}
-      targetPort: {{ .Values.appConfig.externalPort }}
+      port: {{ .Values.listeners.client.port }}
+      targetPort: client
   selector:
     {{- include "fluss.selectorLabels" . | nindent 4 }}
-    app.kubernetes.io/component: tablet
\ No newline at end of file
+    app.kubernetes.io/component: tablet
diff --git a/helm/values.yaml b/helm/values.yaml
index 120ca1dfb..a691a376a 100644
--- a/helm/values.yaml
+++ b/helm/values.yaml
@@ -27,11 +27,6 @@ image:
   pullPolicy: IfNotPresent
   pullSecrets: []
 
-appConfig:
-  internalPort: 9123
-  externalPort: 9124
-
-
 # Fluss server configuration options
 configurationOverrides:
   default.bucket.number: 3
@@ -56,6 +51,13 @@ coordinator:
     size: 1Gi
     storageClass:
 
+# Fluss listener configurations
+listeners:
+  internal:
+    port: 9123
+  client:
+    port: 9124
+
 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
diff --git a/website/docs/install-deploy/deploying-with-helm.md 
b/website/docs/install-deploy/deploying-with-helm.md
index ba80fd83b..9bdbf414e 100644
--- a/website/docs/install-deploy/deploying-with-helm.md
+++ b/website/docs/install-deploy/deploying-with-helm.md
@@ -180,8 +180,8 @@ The following table lists the configurable parameters of 
the Fluss chart and the
 
 | Parameter | Description | Default |
 |-----------|-------------|---------|
-| `appConfig.internalPort` | Internal communication port | `9123` |
-| `appConfig.externalPort` | External client port | `9124` |
+| `listeners.internal.port` | Internal communication port | `9123` |
+| `listeners.client.port` | Client port (intra-cluster) | `9124` |
 
 ### Fluss Configuration Overrides
 
@@ -242,19 +242,17 @@ configurationOverrides:
 
 The chart automatically configures listeners for internal cluster 
communication and external client access:
 
-- **Internal Port (9123)**: Used for inter-service communication within the 
cluster
-- **External Port (9124)**: Used for client connections
+- **Internal Port (9123)**: Used for internal communication within the cluster
+- **Client Port (9124)**: Used for client connections
 
 Custom listener configuration:
 
 ```yaml
-appConfig:
-  internalPort: 9123
-  externalPort: 9124
-
-configurationOverrides:
-  bind.listeners: "INTERNAL://0.0.0.0:9123,CLIENT://0.0.0.0:9124"
-  advertised.listeners: "CLIENT://my-cluster.example.com:9124"
+listeners:
+  internal:
+    port: 9123
+  client:
+    port: 9124
 ```
 
 ### Storage Configuration

Reply via email to