This is an automated email from the ASF dual-hosted git repository.
ipolyzos 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 ec4328987 [helm] Allow templating listeners (internal, client) from
values (#2460)
ec4328987 is described below
commit ec4328987864331593cd3d9e31c9adbe64b967e4
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 6483c9410..db5d3fc2a 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