🟡 Intermediate: The Silent Canary#
After fixing the communication outage in Level 1, the Intergalactic Union welcomed a new species: the Zephyrians 🌟
The communications team attempted to deploy their language files using a progressive delivery system, but the rollout is failing. The Zephyrians are still waiting to communicate with the rest of the galaxy.
A previous engineer configured automated canary deployments with health checks but left the setup incomplete. Your mission: debug the broken rollout and bring the Zephyrians' voices online.
⏰ Deadline#
Wednesday, 24 December 2025 at 09:00 CET
ℹ️ You can still complete the challenge after this date, but points will only be awarded for submissions before the deadline.
💬 Join the discussion#
Share your solutions and questions in the challenge thread in the Open Ecosystem Community.
🎯 Objective#
By the end of this level, you should have:
- Pod info version 6.9.3 deployed successfully in both staging and production environments
- Rollouts automatically progress through canary stages based on health metrics
- Two working PromQL queries in the
AnalysisTemplatethat validate application health during releases - All rollouts complete successfully
🧠 What You'll Learn#
- How to write PromQL queries to monitor application health
- How progressive delivery reduces deployment risk with automated validation
- How to debug and fix broken canary deployments
- How Argo Rollouts and Prometheus work together to make data-driven deployment decisions
🧰 Toolbox#
Your Codespace comes pre-configured with the following tools to help you solve the challenge:
kubectl: The Kubernetes command-line tool for interacting with the clusterkubens: Fast way to switch between Kubernetes namespacesk9s: A terminal-based UI to interact with your Kubernetes clusters- Argo CD CLI: Manage Argo CD applications from the command line
- Argo Rollouts kubectl plugin: Extended kubectl commands for managing Argo rollouts
✅ How to Play#
1. Start Your Challenge#
📖 First time? Check out the Getting Started Guide for detailed instructions on forking, starting a Codespace, and waiting for infrastructure setup.
Quick start:
- Fork the repo
- Create a Codespace
- Select "Adventure 01 | 🟡 Intermediate (The Silent Canary)"
- Wait ~5-10 minutes for all infrastructure to deploy (
Cmd/Ctrl + Shift + P→View Creation Logto view progress)
⚠️ After the infrastructure deploys, the setup script automatically starts port forwarding to the Argo Rollouts dashboard. This keeps the terminal busy, which is expected behavior. Your environment is fully ready when you see the terminal output shown below. Just open a new terminal to run commands.

2. Access the UIs#
- Open the Ports tab in the bottom panel to access the following UIs

💡 Not a fan of user interfaces? No problem, you can also use the CLI tools to complete the challenge. But if you're new(ish) to these tools, the UIs can help you get familiar faster.
Argo CD (Port 30100)#
The Argo CD UI shows the sync status of your applications and allows you to refresh them after pushing new commits.
- Find the Argo CD row (port 30100) and click the forwarded address
- Log in using:
Username: readonly Password: a-super-secure-password
Argo Rollouts (Port 30101)#
The Argo Rollouts dashboard shows canary deployment progress and analysis status.
- Find the Argo Rollouts row (port 30101) and click the forwarded address
Prometheus (Port 30102)#
The Prometheus UI helps you explore available metrics and test your PromQL queries.
- Find the Prometheus row (port 30102) and click the forwarded address
3. Fix the Configuration#
The Zephyrians are waiting for their language pack, but there are misconfigurations preventing the rollout from completing successfully. Your task is to investigate, identify, and fix the issues.
Review the 🎯 Objective section to understand what a successful solution looks like. The Argo Rollouts dashboard and Prometheus UI can help you debug and validate your changes.
Where to Look#
All manifests are located in:
adventures/01-echoes-lost-in-orbit/intermediate/manifests/
📦 About Kustomize: This challenge uses Kustomize under the hood to manage Kubernetes manifests. Kustomize allows us to maintain a base set of manifests and apply environment-specific customizations through overlays (staging, prod). Each overlay can modify the base configuration—like changing replica counts or namespaces—without duplicating YAML. With the
ApplicationSet, Argo CD automatically detects and applies these Kustomize configurations, so you don't need to run Kustomize commands manually.
Deploy Your Changes#
After making your fixes, commit and push them to trigger the deployment:
git add adventures/01-echoes-lost-in-orbit/intermediate/manifests/
git commit -m "Fix configuration"
git push
💡 Tip: If you're pushing to a branch other than
main, make sure to also update theApplicationSetinadventures/01-echoes-lost-in-orbit/intermediate/manifests/appset.yamlto point to your branch.
Argo CD will automatically sync your changes after some time. You can speed things up by refreshing the applications manually:
argocd app get echo-server-staging --refresh
argocd app get echo-server-prod --refresh
After ArgoCD syncs your changes, trigger the rollout:
kubectl argo rollouts retry rollout echo-server -n echo-staging
kubectl argo rollouts retry rollout echo-server -n echo-prod
Monitor the Rollout#
Watch the canary deployment progress in the Argo Rollouts dashboard or use the CLI:
kubectl argo rollouts get rollout echo-server -n echo-staging --watch
kubectl argo rollouts get rollout echo-server -n echo-prod --watch
The rollout should automatically progress through the canary stages (33% → 66% → 100%).
ℹ️ Note: In real-world progressive delivery, updates are typically deployed to staging first, validated, and then promoted to production. For this challenge, both environments update simultaneously to simplify the workflow and focus on learning canary rollouts and health checks.
Helpful Documentation#
- Argo Rollouts
- Analysis and Progressive Delivery
- PromQL Basics
- Kubernetes Metrics exported by kube-state-metrics
4. Verify Your Solution#
Once you think you've solved the challenge, it's time to verify!
Run the Smoke Test#
Run the provided smoke test script from the repo root:
adventures/01-echoes-lost-in-orbit/intermediate/smoke-test.sh
If the test passes, your solution is very likely correct! 🎉
Complete Full Verification#
For comprehensive validation and to officially claim completion:
- Commit and push your changes to your fork
- Manually trigger the verification workflow on GitHub Actions
- Share your success with the community
📖 Need detailed verification instructions? Check out the Verification Guide for step-by-step instructions on both smoke tests and GitHub Actions workflows.