Multi-Env Promotion (Dev → Staging → Prod)
Run a real release pipeline by hand: build versioned go-api images, deploy one to dev, and promote it forward to staging then prod with plain kubectl. Promotion here is a genuine image rollout (new ReplicaSet), not a ConfigMap edit — you build vNEXT, roll it out per environment, and watch each env's /version change as the release moves down the pipeline.
What you'll do
- Understand environment separation as Kubernetes namespace isolation (env-dev / env-staging / env-prod)
- Build multiple immutable, versioned images (go-api:v1.0.0, v1.1.0, …) and load them into the cluster
- Deploy a new version to dev only, and prove the other environments are unchanged
- Promote a version dev → staging → prod with 'kubectl set image' + 'kubectl rollout status' — a real rollout
- Roll back a bad promotion with 'kubectl rollout undo'
- Verify the pipeline: every environment's running image matches its declared tag
Stages
- 1seed-baseline
Build the go-api:v1.0.0 baseline image and load it into the cluster
baseline-image - 2dev-env
Deploy go-api:v1.0.0 into the dev environment (namespace env-dev)
dev-environment - 3staging-env
Deploy go-api:v1.0.0 into the staging environment (namespace env-staging)
staging-environment - 4prod-env
Deploy go-api:v1.0.0 into the prod environment (namespace env-prod)
prod-environment
Prerequisites
These are installed into the lab cluster for you — listed so you know what the scenario actually depends on.
Related scenarios
- GitOps & CI/CDArgoCD-based GitOps deployment with Application CRDs for declarative app management.
- Autoscaling Under LoadWatch KEDA scale go-api on Prometheus RPS: a spike drives it from 1 to several replicas, then cooldown brings it back. The flagship 'autoscaling actually works' demo, verified under traffic from the load generator.
- Chaos EngineeringFailure injection with Chaos Mesh — pod kills, network delays, CPU/memory stress, partitions. Correlate chaos experiments with application metrics via Grafana dashboard.