StageSet vs Helm

Helm is two things: a templating engine (charts) and an
imperative release tool (helm upgrade). StageSet is neither — it’s a declarative
delivery controller. The overlap is ordering: Helm’s hooks and hook weights give you
some sequencing inside a single chart’s install/upgrade.
What Helm gives you
- Templated, parameterized manifests (charts and values).
- Install/upgrade ordering via
helm.sh/hook(pre-install, post-upgrade, …) andhook-weight. - A release history you can roll back to with
helm rollback.
Where StageSet differs
- Continuous reconciliation.
helm upgradeis a point-in-time, imperative action; nothing re-asserts the state afterward.StageSetreconciles on an interval, corrects drift, and prunes — it’s GitOps, not a one-shot. - Ordering across artifacts, not just within one chart. Helm hooks order
resources inside a release.
StageSetorders whole stages, each its own artifact, with readiness gating between them. - Typed gates between steps. Hooks run Jobs;
StageSetstages can run Jobs, HTTP gates, waits, patches, deletes, and transient applies, as pre/post/onFailure actions. - Identity. A
StageSetapplies under an impersonated, per-tenantServiceAccount;helm upgraderuns as whoever ran it.
Using them together
Render a chart to manifests (e.g. via a producer that publishes an
ExternalArtifact) and deliver it with StageSet. The controller understands
helm.sh/hook resources: applyHelmHookResources (default true) applies them as
ordinary objects, so a Helm-style chart’s hook resources still get created — now
under StageSet’s ordering and gating instead of Helm’s.