Broken Echoes
The Echo Server is down across both environments. Investigate the Argo CD ApplicationSet configuration, spot the templating pitfalls, and restore proper multi-environment delivery.
Mission Objective
- See two distinct Applications in the Argo CD dashboard (one per environment)
- Ensure each Application deploys to its own isolated namespace
- Make the system resilient so Argo CD automatically reverts manual cluster changes
- Confirm that updates roll out automatically without leaving stale resources behind
Key Learnings
- Debug GitOps flows with Argo CD
- ApplicationSet templating & pitfalls
- Environment isolation & namespaces
- Sync policies: automated, prune & self-heal
The Story
The Echo Server is misbehaving. Both environments seem to be down, and messages are silent.
Your mission: investigate the Argo CD configuration and restore proper multi-environment delivery.
Ready to start?
Launch in a preconfigured devcontainer
Free GitHub account required
Walkthrough
Open in GitHub Codespaces. The devcontainer is pre-configured and starts automatically. When you push from Codespaces, GitHub forks the repository to your account automatically.
Prefer working locally? Clone the repo and open it in any editor that supports the Dev Containers specification (VS Code, JetBrains IDEs, and others). The devcontainer config will be detected automatically.
Wait around 5 minutes for the Codespace to provision a Kubernetes cluster, Argo CD, and the sample app. Press Cmd+Shift+P (or Ctrl+Shift+P on Windows/Linux) and search for 'View Creation Log' to track progress.
Open the Ports tab and navigate to each service:
- Port 30100: Argo CD (readonly / a-super-secure-password). View application sync status and manage Argo CD resources.
All errors are in this file:
adventures/01-echoes-lost-in-orbit/beginner/manifests/appset.yamlThis challenge uses Kustomize under the hood: a base set of manifests with environment-specific overlays (staging, prod). Argo CD detects and applies these automatically, so your focus is on fixing the ApplicationSet to properly reference the Kustomize-managed paths.
After making changes, apply them:
kubectl apply -n argocd -f adventures/01-echoes-lost-in-orbit/beginner/manifests/appset.yamlRun the smoke test to verify your solution locally:
adventures/01-echoes-lost-in-orbit/beginner/smoke-test.sh
Complete Your Challenge
- When you push from Codespaces, GitHub forks the repository to your account automatically. If you are working locally, fork the repository on GitHub before pushing.
- Verify your solution:
If it passes, it generates a Certificate of Completion you can paste into the discussion.adventures/01-echoes-lost-in-orbit/beginner/smoke-test.sh - Share your solutions in the challenge thread (opens in new tab) on community.offon.dev.
Completed the challenge? Share your achievement on LinkedIn (opens in new tab)
Toolbox
- kubectl (opens in new tab) - Kubernetes CLI for interacting with the cluster
- kubens (opens in new tab) - fast way to switch between Kubernetes namespaces
- k9s (opens in new tab) - terminal UI for managing and inspecting your cluster