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
