Skip to content

[Helm] Chart Component Configuration Isolation#2472

Merged
swuferhong merged 3 commits intoapache:mainfrom
hemanthsavasere:2191-region-config-for-components
Mar 12, 2026
Merged

[Helm] Chart Component Configuration Isolation#2472
swuferhong merged 3 commits intoapache:mainfrom
hemanthsavasere:2191-region-config-for-components

Conversation

@hemanthsavasere
Copy link
Contributor

Purpose

Linked issue: close #2191

This PR introduces component-specific configuration sections for the Fluss Helm chart, enabling users to independently configure replicas and health probes for coordinator and tablet servers.

###Previously,

  1. Hardcoded Replicas: Coordinator (1 replica) and Tablet (3 replicas) counts were hardcoded
  2. Hardcoded Health Probes: All liveness and readiness probe settings were hardcoded with identical values for both components
  3. Resource Configuration Bug: Coordinator StatefulSet incorrectly referenced .Values.resources.tabletServer instead of .Values.resources.coordinatorServer

Changes

  1. helm/values.yaml
    Added two new top-level configuration sections:
coordinatorServer:
  replicas: 1
  livenessProbe:
    failureThreshold: 100
    timeoutSeconds: 1
    initialDelaySeconds: 10
    periodSeconds: 3
  readinessProbe:
    failureThreshold: 100
    timeoutSeconds: 1
    initialDelaySeconds: 10
    periodSeconds: 3

tabletServer:
  replicas: 3
  livenessProbe:
    failureThreshold: 100
    timeoutSeconds: 1
    initialDelaySeconds: 10
    periodSeconds: 3
  readinessProbe:
    failureThreshold: 100
    timeoutSeconds: 1
    initialDelaySeconds: 10
    periodSeconds: 3

Also updated the resources section to use explicit empty defaults instead of being commented out:

resources:
  coordinatorServer: {}
  tabletServer: {}
  1. helm/templates/sts-coordinator.yaml
  • Replaced hardcoded replicas: 1 with {{ .Values.coordinatorServer.replicas }}
  • Replaced hardcoded liveness probe values with .Values.coordinatorServer.livenessProbe.* references
  • Replaced hardcoded readiness probe values with .Values.coordinatorServer.readinessProbe.* references
  • Fixed bug: Changed resource reference from .Values.resources.tabletServer to .Values.resources.coordinatorServer
  1. helm/templates/sts-tablet.yaml
  • Replaced hardcoded replicas: 3 with {{ .Values.tabletServer.replicas }}
  • Replaced hardcoded liveness probe values with .Values.tabletServer.livenessProbe.* references
  • Replaced hardcoded readiness probe values with .Values.tabletServer.readinessProbe.* references

Tests

Below tests are successful

  1. Deploy with different replica counts per component - verified by deploying with different replica counts per component

  2. Configure different probe settings per component - verified each component has independent probe configuration.

  3. Resource bug fix (coordinator uses correct resources) - bug fix verified. Coordinator now correctly uses resources.coordinatorServer.

  4. Pod health and startup - all components started successfully, registered with ZooKeeper, and coordinator detected both tablet servers.

  5. Replica Scaling - verified the tablet servers scaled independently

  6. Independent Resource Modification - verified each component updated with different resources independently

Documentation

@hemanthsavasere
Copy link
Contributor Author

Hi @swuferhong, can you please review the pull request. Thanks

@hemanthsavasere hemanthsavasere force-pushed the 2191-region-config-for-components branch from d62e30e to 92c4ce9 Compare March 12, 2026 10:54
Copy link
Contributor

@affo affo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hello and thanks for the contribution!
This is extremely valuable!

Is there any specific reason why moving some keys out of tablet and coordinator?

There is already tablet and coordinator, now we find ourself with tabletServer and coordinatorServer.

We should opt for a specific design here:
either we adopt a key-component approach or a component-key approach.

Where key-component would be, for example:

resources:
  tablet:
  coordinator:

and component-key would be:

tablet:
  resources:
coordinator:
  resources:

It seems here you are opting for component-key, and it sounds solid to me 🤝

However, I would leave replicas to tablet and coordinator and move all additions you made to the respective area.

I think a nice follow up PR would be to also move resources to the same pattern 🤝

I am trying to push new contribution guidelines for helm, see #2846, so, this PR should add minimal Helm tests under tests, as well as updating the official docs under https://github.com/apache/fluss/blob/main/website/docs/install-deploy/deploying-with-helm.md (as this PR introduces new configuration values, those should be documented 🤝 )

@affo
Copy link
Contributor

affo commented Mar 12, 2026

@hemanthsavasere just for the sake of pickiness:

Resource Configuration Bug: Coordinator StatefulSet incorrectly referenced .Values.resources.tabletServer instead of .Values.resources.coordinatorServer

Was addressed already with #2834 :)

Copy link
Contributor

@swuferhong swuferhong left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@swuferhong swuferhong merged commit d956e75 into apache:main Mar 12, 2026
6 checks passed
affo added a commit to affo/fluss that referenced this pull request Mar 13, 2026
swuferhong pushed a commit that referenced this pull request Mar 13, 2026
hemanthsavasere pushed a commit to hemanthsavasere/fluss that referenced this pull request Mar 14, 2026
@hsavasere
Copy link
Contributor

Hi @affo
I have updated the PR as per the comments, can you please review the PR, #2870

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[helm] Create region config for components in value file

4 participants