Conversation
Every resource the chart creates had a fixed name (coordinator-server, tablet-server, fluss-conf-file and the matching headless Services), and every cluster used the ZooKeeper root path /fluss. Two releases could therefore not share a namespace, which is a problem wherever namespace creation is restricted and a team needs more than one Fluss cluster. Route every name through a helper and add releaseScopedResourceNames, which prefixes each resource with fluss.fullname and moves the ZooKeeper root path to /fluss/<release>. The option is off by default. Renaming a StatefulSet makes Helm replace it and orphans its PersistentVolumeClaims, so an existing release must opt in deliberately. With the option off the rendered output is byte-for-byte identical to before. Also validate that generated names stay within the 63 character DNS label limit when the option is on, and document both the multi-cluster setup and the migration path for an existing release. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Every resource the chart creates carries a fixed name —
coordinator-server,tablet-server,fluss-conf-file, and the matching headless Services — and every cluster uses the ZooKeeper root path/fluss. Two releases therefore cannot share a namespace. That hurts wherever namespace creation is restricted: the people allowed to run Fluss clusters often are not the people allowed to create namespaces, so they cannot stand up a second cluster at all.This routes every name through a helper and adds a
releaseScopedResourceNamesoption that prefixes each resource withfluss.fullnameand moves the ZooKeeper root path to/fluss/<release>.false)truefluss-conf-file<release>-fluss-conf-filecoordinator-server<release>-fluss-coordinator-servertablet-server<release>-fluss-tablet-server{coordinator,tablet}-server-hs<release>-fluss-…-hs<release>-…-metrics-hs<release>-fluss-…-metrics-hs/fluss/fluss/<release>The cross-references move with the names:
spec.serviceName, thefluss-confvolume'sconfigMap.name, and theADVERTISED_LISTENERSFQDN baked into both container commands.Why it is off by default
A StatefulSet cannot be renamed in place. Helm deletes the old one and creates a new one, which orphans the PersistentVolumeClaims created from
volumeClaimTemplates. Making release-scoped names the default would move every existing release on the nexthelm upgrade, so operators opt in deliberately instead. The values comment and the helper docblock both record that the default is expected to flip in a later release, after which the option is deprecated.This mirrors the Apache Airflow chart, which solved the same problem with
useStandardNaming(also defaulting to the legacy behaviour).Also included
fullnameOverride. It applies only when the option is on, because fixed names cannot exceed the limit.zookeeper.path.root: /flussto keep cluster state while taking the new names, and the side-by-side migration alternative.Test Plan
helm/tests/naming_test.yaml: 4 suites covering the fixed names and cross-references by default, the release-scoped names and cross-references when opted in, the ZooKeeper root path in both modes, and the name-length validation.helm unittest ./helm— 59 suites, 159 tests pass. No existing test needed changing, which is itself part of the evidence that the default is unchanged.helm lint ./helm— clean.helm templatewith the option off, both with plain values and with PDBs, Prometheus metrics, and SASL enabled, and diffed against the same render onmain: byte-for-byte identical.🤖 Generated with Claude Code