Solution for Adventure 01: Echoes Lost In Orbit | 🟢 Easy: Broken Echoes

:green_circle: Beginner Level 1 Solution Now Live: Broken Echoes

The solution for Level 1 (Beginner) of the “Echoes Lost in Orbit” adventure is now available! If you’ve been puzzling over why your Argo CD Applications aren’t showing up or syncing correctly, this is your chance to check your approach, learn best practices, and level up your GitOps skills.

:warning: Spoiler Alert: The following post contains a full walkthrough of the solution. If you want to solve the challenge on your own, consider coming back only if you get stuck or want to verify your work.

:memo: In a Nutshell: How to Fix Broken Echoes

This is just a very rough overview of the solution steps. For detailed reasoning, troubleshooting tips, and a step-by-step walkthrough, check out the full guide: Beginner Solution: Broken Echoes.

  1. Check the Objectives:

    • Make sure you understand the requirements: two distinct Applications, isolated namespaces, auto sync/self-healing, and no stale resources.
  2. Fix Duplicate Names (and understand the ApplicationSet):

    • The challenge uses an Argo CD ApplicationSet with a Git directory generator to create one Application per environment (staging, prod).
    • If both Applications have the same name, Argo CD will fail to create them due to duplicate names.
    • Update the ApplicationSet template to use a dynamic name:
      name: echo-server-{{path.basename}}
      
    • This ensures each Application is unique (e.g., echo-server-staging, echo-server-prod).
  3. Isolate Namespaces:

    • Use a template variable for the namespace as well:
      namespace: echo-{{path.basename}}
      
    • This keeps environments separated and avoids resource conflicts.
  4. Enable Auto Sync & Self-Healing:

    • Add an automated sync policy to the ApplicationSet:
      syncPolicy:
        automated:
          enabled: true
          selfHeal: true
        syncOptions:
          - CreateNamespace=true
      
    • This ensures Argo CD automatically applies changes from Git and reverts manual changes in the cluster.
  5. Enable Pruning:

    • Add prune: true to the sync policy to clean up resources deleted from Git:
      prune: true
      

:open_book: Want the Full Walkthrough?

For a detailed, step-by-step guide (with screenshots, reasoning, and troubleshooting tips), check out the full solution docs:

:backhand_index_pointing_right: Beginner Solution: Broken Echoes

Happy learning and good luck with the next challenge! :fox: