StageSet vs Flux Operator ResourceSet see history edit this page

Talks about: , , , and

StageSet and the Flux Operator ’s ResourceSet solve different axes of delivery, and they compose cleanly:

Reach for ResourceSet to stamp out many similar deployments from a changing set of inputs. Reach for StageSet to roll a single release out in order, gated at each step. To do both — discover a new version, then promote it through gated stages — run them together; see the Flux Operator integration page.

What ResourceSet gives you

ResourceSet (fluxcd.controlplane.io/v1) renders Kubernetes resources from a template, fanned out over inputs:

What ResourceSet does not model is an ordered, gated rollout of a single app: there are no per-stage gates, no typed migrations crossing a version boundary, and no automatic rollback to a previous revision.

What StageSet adds

Both time-gate delivery

Both tools can gate delivery on a clock, but at different layers:

LayerFieldGates
ResourceSetInputProviderspec.schedule (cron, timeZone, window)when inputs refresh — how often a new version or PR is discovered
StageSetspec.updateWindows (Allow / Deny)when a discovered revision rolls out through the stages

When you combine them, gate at one layer to avoid double-gating. Either let the RSIP schedule constrain when a new version becomes visible and leave the StageSet always-open, or refresh inputs freely and let the StageSet updateWindows decide when the promotion happens. The integration page shows both.

Using them together

The two compose along their separate axes: a ResourceSetInputProvider discovers a new version on a schedule, a ResourceSet templates a StageSet pinned to that version, and the StageSet runs the ordered, gated promotion. The other direction fans a ResourceSet out into one StageSet per tenant, branch, or pull request. Both patterns, with complete manifests, are on the Flux Operator integration page.