Skip to main content
Version: Next

Progressive Rollout — Sample Manifests

Static YAML manifests and orchestration script used in the Progressive Rollout Strategies with Karmada tutorial.

The tutorial demonstrates three rollout strategies across multiple clusters using only Karmada PropagationPolicy and OverridePolicy — no additional controllers required.

Directory Structure

progressive-rollout/
├── wave-rollout.sh # Orchestration script for Strategy 3 (Wave Rollout)
├── base/ # Shared manifests — application and ingress-nginx
├── canary/ # Strategy 1 — Side-by-Side Testing (Canary)
├── rolling-upgrade/ # Strategy 2 — In-place Updates (Rolling Upgrade)
└── wave/ # Strategy 3 — Percentage-based Shifting (Wave Rollout)

Files

base/ — Shared manifests

FilePurpose
http-probe-app.yamlBase app at v1, replicaSchedulingType: Divided (2 replicas per cluster)
http-probe-app-v2.yamlBase app at v2, replicaSchedulingType: Divided — used to finalize Strategies 1 and 2
ingress-nginx-deploy.yamlingress-nginx controller workload
ingress-nginx-propagation.yamlPropagationPolicy for namespace-scoped ingress-nginx resources
ingress-nginx-cluster-propagation.yamlClusterPropagationPolicy for cluster-scoped ingress-nginx resources

canary/ — Strategy 1: Side-by-Side Testing (Canary)

FilePurpose
http-probe-app-canary-member1.yamlCanary Deployment + PropagationPolicy targeting member1 only
http-probe-app-canary-member2.yamlCanary Deployment + PropagationPolicy targeting member2 only
http-probe-app-canary-member3.yamlCanary Deployment + PropagationPolicy targeting member3 only
http-probe-app-canary-all.yamlSingle canary Deployment + PropagationPolicy targeting all three clusters
http-probe-promote-override-member1.yamlOverridePolicy promoting the base to v2 on member1
http-probe-promote-override-member2.yamlOverridePolicy promoting the base to v2 on member2
http-probe-promote-override-member1-member2.yamlOverridePolicy promoting the base to v2 on member1 and member2
http-probe-promote-override-all.yamlOverridePolicy promoting the base to v2 on all three clusters

rolling-upgrade/ — Strategy 2: In-place Updates (Rolling Upgrade)

FilePurpose
http-probe-rolling-upgrade-member1.yamlOverridePolicy rolling the base to v2 on member1
http-probe-rolling-upgrade-member1-member2.yamlOverridePolicy rolling the base to v2 on member1 and member2
http-probe-rolling-upgrade-all.yamlOverridePolicy rolling the base to v2 on all three clusters

wave/ — Strategy 3: Percentage-based Shifting (Wave Rollout)

FilePurpose
http-probe-app-wave-base.yamlBase app at v1, replicaSchedulingType: Duplicated (6 replicas per cluster) — required for meaningful percentage steps
http-probe-app-wave-base-v2.yamlSame as above but at v2 — applied by wave-rollout.sh finalize
http-probe-app-wave-deployment.yamlWave Deployment at v2 — created by wave-rollout.sh start

The wave rollout is orchestrated by wave-rollout.sh. The OverridePolicy resources that scale the base down and the wave up are generated dynamically by the script at runtime, since their replica counts depend on the target percentage and the --wait interval supplied by the operator.

Usage

See the Progressive Rollout Strategies with Karmada tutorial for full step-by-step instructions including inline YAML, dashboard observations, and sequence diagrams for each strategy and demo.