Skip to content

Support grouped Progressive Syncs in ApplicationSets #27707

@fm1ck3y

Description

@fm1ck3y

Summary

Add support for grouping Applications in Progressive Syncs for ApplicationSets.

Currently Progressive Syncs work globally across all generated Applications. This makes it difficult to model independent rollout flows inside a single ApplicationSet.

Motivation

In real-world deployments, Applications are often logically separated into groups such as:

  • clusters
  • environments
  • teams

Right now Progressive Syncs treat all Applications as a single rollout pipeline.

Example:

wave-1:

  • app-a-dev
  • app-a-prod

wave-2:

  • app-b-dev
  • app-b-prod

If app-a-prod is unhealthy, app-b-dev is also blocked, even though they are unrelated deployments.

This becomes especially problematic for multi-cluster or multi-tenant ApplicationSets where independent rollouts are expected.

Proposal

Add optional grouping support to RollingSync strategy.

Example:

spec:
  strategy:
    type: RollingSync
    rollingSync:
      groupKey: "environment"
      steps:
        - matchExpressions:
            - key: tier
              operator: In
              values: ["backend"]
        - matchExpressions:
            - key: tier
              operator: In
              values: ["frontend"]

Applications sharing the same groupKey label value would progress independently through waves.

Example:

dev:
  backend -> frontend

prod:
  backend -> frontend

instead of:

all backends -> all frontends

This would allow safer and more scalable progressive deployments while keeping existing behavior unchanged when groupKey is not specified.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions