Repository navigation
fix(chart): kates-platform refuses stale subcharts, so a platform install no longer reads every Secret - #438
Merged
Merged
Conversation
…tall no longer reads every Secret The umbrella installs whatever sits in its gitignored charts/ directory, and Helm never holds those tarballs to the ranges in Chart.yaml: helm template, lint and install all accept them. A charts/ left from an earlier `helm dependency update` kept installing kates 0.9.1, whose ClusterRole granted get, list and watch on every Secret in the cluster; kates 0.10.8 (#287) dropped that rule. Each range's floor is now the version the umbrella was rendered with (kafka-cluster 1.0.10, kates 0.11.6, apicurio-registry 0.4.0, mirror-maker2 0.11.6, connect-cluster 2.1.8). templates/subchart-versions.yaml fails the render, naming the subchart and `make platform-chart-deps`, while charts/ holds an enabled subchart outside its range. CI packages kates as 0.10.7 into a copy of the umbrella and expects that refusal. The umbrella's own values map unchanged onto the newer subcharts. The kates pass-through changes since 0.9.1 (rbac.cdcSecretNamespaces for INTEGRATION_CDC, one pod) are in the changelog and README. Chart 0.8.0.
govulncheck in the Dependency CVE scan reports GO-2026-6809: the CLI reaches x509.Certificate.Verify (through detect.RenderHTML's writes), and Go 1.27.2 is affected; 1.27.3 fixes it. Every PR that runs the backend pipeline fails the scan until the toolchain moves. govulncheck v1.7.0 on 1.27.3 finds nothing.
bmscomp
added a commit
that referenced
this pull request
Oct 21, 2026
Conflicts: the chart version (0.12.0 stays, above #440's 0.11.7), the version tables, and the CLI caveat refs into charts/kates/values.yaml, re-pointed to 408-418 and 618-686. #440 renders networkPolicy.kafka.namespace through tpl, so kates-platform can pass {{ .Release.Namespace }}; the Kafka-namespace Role and KATES_TOPOLOGY_KAFKA_NAMESPACE now use the same tpl, and the chart CI step checks a templated namespace.
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.
Why
A
kates-platforminstall could still give the Kates API's ServiceAccount get, list and watch on every Secret in the cluster. The umbrella installs whatever sits incharts/kates-platform/charts/. That directory andChart.lockare gitignored build output (.gitignore:charts/*/charts/,charts/*/*.lock), and Helm never checks those tarballs against the ranges inChart.yaml. Acharts/left from an earlierhelm dependency updatekept installing kates 0.9.1, whose ClusterRole had the cluster-wide Secret rule that kates 0.10.8 (#287) dropped. The main checkout here still had it: kates 0.9.1, kafka-cluster 1.0.1, mirror-maker2 0.11.0, connect-cluster 2.1.1, locked 2026-09-20.I checked this with Helm 4.3.0. With the kates range raised to
>=0.10.8, the stale 0.9.1 tarball still passeshelm template,helm lintandhelm install --dry-run. Onlyhelm dependency listsays "wrong version". Raising the ranges alone protects nothing.What changes
>=1.0.10, kates>=0.11.6, apicurio-registry>=0.4.0, mirror-maker2>=0.11.6, connect-cluster>=2.1.8. The upper bounds are unchanged.templates/subchart-versions.yamlrenders nothing. It fails the render whilecharts/holds an enabled subchart outside its range. The error names the subchart and the fix:artifacthub.io/changesentries, both ACTION REQUIRED: rebuildcharts/before installing or upgrading; and the kates pass-through changes since 0.9.1 (kates.rbac.cdcSecretNamespacesfor INTEGRATION_CDC; one pod, soreplicaCount> 1, autoscaling, RollingUpdate andpodDisruptionBudget.minAvailableare refused). The README documents the guard, the new ranges andkates.rbac.cdcSecretNamespaces. The README chart table and the book's version matrix are updated.Values: the umbrella sets only
kafka-cluster.profile: platformand theenabledflags. Both still map unchanged: kafka-cluster 1.0.10 still hasprofiles/platform.yaml. Diffing default values from 0.9.1 to 0.11.6, kates adds keys and removes onlystrategy.rollingUpdate.*, which the umbrella never set. kafka-cluster 1.0.1 to 1.0.10 only moves its tester image pins.Checked locally
make platform-chart-depslocks kates 0.11.6, kafka-cluster 1.0.10, mirror-maker2 0.11.6, connect-cluster 2.1.8 and apicurio-registry 0.4.0.helm template(release namespandkates-platform, defaults and every optional subchart enabled): the only ClusterRole is kates', and it has nosecretsresource and no wildcard. The onesecretsmatch is the chart's own comment, "No secrets: …". The same render from the oldcharts/showsresources: ["secrets"]with get, list, watch.charts/is refused, fresh deps render, and the oldcharts/with the old ranges still renders. That last one is why the floors had to move.helm lint+helm templateover every chart, as in the CI loop: all pass. strimzi-operator needed its gitignored operator tarball built first, as CI does.scripts/gen-chart-table.sh --check,scripts/gen-version-matrix.sh --check,check-book-style.sh,check-book-contrast.py,check-mermaid.sh,make check-versions,make check-chart-tests, andactionlinton ci.yml: all pass.Not run locally: kubeconform (not installed), and Helm 3.17.0, the CI version, which this PR's CI covers.
.Subchartsand.Chart.Dependencieshave been in Helm since 3.7.Deliberately not done
charts/kates-platform/charts/is local, untracked output, so this PR can't change it. Once this merges, an install from it fails with the message above. Runmake platform-chart-depsthere to refresh it.-n kates). The kates defaults point atkrafter-kafka-bootstrap.kafka.svc:9092, and the kates NetworkPolicy allows egress only to namespacekafka. 0.9.1 and 0.11.6 behave the same here, so this upgrade doesn't change it. Unless the release goes inkafka, Kates can't reach Kafka. That needs its own fix.rbac.scope=namespace(feat/rbac-namespace-scope, kates 0.12.0) isn't a dependency here. 0.12.0 satisfies>=0.11.6 <1.0.0.Second commit: Go 1.27.3 (not this PR's regression)
Editing
ci.ymlruns the whole backend pipeline, and its Dependency CVE scan failed: govulncheck reports GO-2026-6809 (crypto/x509, reached throughdetect.RenderHTML) in Go 1.27.2, fixed in 1.27.3. The advisory came out after main's last green run, so every PR that runs the scan fails until the toolchain moves. 142e0ee changescli/go.mod'stoolchainline togo1.27.3(thego 1.26.0directive is unchanged). Locally on 1.27.3: govulncheck v1.7.0 finds nothing,go build ./...passes, and the version matrix check passes. Thegolang:1.27-alpinedigests inkates/Dockerfile*are untouched.