Skip to content

kamaji package: the vendored kamaji-etcd values block is dead today and would deploy an etcd silently if the subchart is ever vendored #4397

Closed

Description

The kamaji-etcd values block in packages/system/kamaji configures a subchart that is not there, and it would start configuring a real one the day make update brings it in.

The vendored charts/kamaji/Chart.yaml declares a kamaji-etcd dependency and ships a Chart.lock for it, but the subchart itself is not vendored under charts/kamaji/charts/. Helm runs CheckDependencies only for the chart it was asked to render, and that is the package's own top-level chart, whose Chart.yaml declares no dependencies at all. So the missing subchart is never noticed, the whole kamaji-etcd.* block in the vendored values is dead configuration, and the cert-manager keys the recent upstream versions added to it are dead with it.

That is fine today and it is why removing the kamaji.etcd.deploy key from the package values was right: that key named a path nothing reads, and the real condition is kamaji-etcd.deploy, which defaults to true. The hazard is the combination. If a later make update pulls the subchart into charts/kamaji/charts/, the block stops being dead, the default takes effect, and an etcd deploys without anyone having asked for one. Nothing in the package would report the change, because the values file already contains the settings that would drive it.

Two ways to close it, and they are not equivalent: pin kamaji-etcd.deploy: false in the package values so the default cannot fire, or drop the block entirely so a future vendoring has to re-add it deliberately. The first keeps the configuration honest about what it disables; the second removes the trap rather than disarming it.

Found while reviewing the bump to 26.9.4-edge, which changes neither the dependency nor the vendoring.

Activity

  1. added
    kind/bugCategorizes issue or PR as related to a bug
    area/platformIssues or PRs related to platform infrastructure (bundle, flux, talos, installer)
    on Sep 23, 2026
  2. added
    area/kamajiIssues or PRs related to Kamaji (hosted control planes for tenant Kubernetes)
    triage/acceptedIndicates an issue is ready to be actively worked on
    priority/backlogGeneral backlog priority. Lower than priority/important-longterm
    and removed
    triage/needs-triageIndicates an issue needs triage by a maintainer
    on Sep 23, 2026
  3. lexfrei commented on Sep 24, 2026

    @lexfrei
    ContributorAuthor

    Pinning kamaji-etcd.deploy: false would not have closed this, because through this package the condition is never evaluated. Helm's processDependencyEnabled returns before it recurses when the starting chart declares no dependencies, and cozy-kamaji declares none. The vendored kamaji chart is only loaded from charts/, so its kamaji-etcd.deploy condition is never read. Helm v3 and v4 both do this.

    I dropped kamaji-etcd-0.15.0.tgz into charts/kamaji/charts/ and rendered the package three ways. Each one deployed the etcd: a StatefulSet, a Job, a DataStore and four Certificates.

    • default values
    • kamaji.kamaji-etcd.deploy: false in the package values
    • deploy: false edited into the vendored values

    Rendering charts/kamaji on its own with kamaji-etcd.deploy=false does drop the etcd. So the hazard is not the values block. Any chart that lands in that directory deploys unconditionally. The fix removes the directory in make update and adds a unit test that fails if anything renders from it.

  4. added a commit that references this issue on Oct 5, 2026
    0639ce3
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/kamajiIssues or PRs related to Kamaji (hosted control planes for tenant Kubernetes)area/platformIssues or PRs related to platform infrastructure (bundle, flux, talos, installer)kind/bugCategorizes issue or PR as related to a bugpriority/backlogGeneral backlog priority. Lower than priority/important-longtermtriage/acceptedIndicates an issue is ready to be actively worked on

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions