Skip to content
CNPEGitOps and Continuous DeliverySingle nodeMedium

GitOps with Argo CD: an automated Application from the platform repo

Scenario cnpe-git-001 · about 15 minutes · 10 points · 6 grader checks

The shop manifests live in the in-cluster Git server. Deliver them with an Argo CD Application that creates its namespace, prunes and heals drift.

  • argocd
  • gitops
  • application
  • self-heal
  • gitea
  • continuous-delivery

What you will practise

  • Write an Argo CD Application with automated sync
  • Enable prune and self-heal and the CreateNamespace sync option
  • Read Application sync and health status

Start this lab

With the CLI installed and signed in, this command provisions a single node cluster on your Mac, applies the scenario setup and prints the task below.

goldenkube start cnpe-git-001

Task

The task text exactly as the CLI shows it. Solve it on the cluster, then run goldenkube submit.

Argo CD runs in namespace "argocd". The Git repository http://gitea.git.svc.cluster.local:3000/gk/platform.git (branch "main", public, no credentials needed for reading) contains the manifests of the shop application in the directory "apps/shop". 1. Create an Argo CD Application "shop" in namespace "argocd" (project "default") that deploys that directory at revision "main" into the namespace "shop" of the cluster Argo CD runs in. 2. Sync automatically, prune resources removed from Git, revert manual changes (self-heal), and let Argo CD create the namespace "shop". 3. The Application must end up Synced and Healthy, with the Deployment "shop" running the 2 replicas declared in Git.

Requirements and details

Certification
CNPE · Certified Cloud Native Platform Engineer
Domain
GitOps and Continuous Delivery
Difficulty
Medium
Cluster topology
Single node
Cluster features
None beyond the base cluster
Recommended time
15 minutes
Points
10
Grader checks
6
Kubernetes version
1.35
Minimum CLI version
0.1.0
Scenario version
1
Published

Grading runs locally: 6 state checks read your cluster when you submit; the scenario passes when every check passes. Hints, the reference solution and the check definitions are available only inside the CLI, not on this page.

CNPEGitOps and Continuous DeliveryHard

GitOps with Flux: reconcile infra from Git and fix the broken manifest

The infra repository should be reconciled by Flux, but one manifest in it does not apply. Wire up the GitRepository and Kustomization, then fix the repository so the reconciliation turns Ready.

Single node · ~18 min · 10 points

  • flux
  • gitops
  • kustomization
  • gitrepository
  • gitea
  • continuous-delivery

goldenkube start cnpe-git-002

CNPEGitOps and Continuous DeliveryHard

Progressive delivery: an Argo Rollouts canary with a manual gate

Replace the storefront Deployment with an Argo Rollout that sends 20% of the pods to a new version, waits for a human, then completes; ship podinfo 6.17.0 through it.

Single node · ~18 min · 9 points

  • argo-rollouts
  • canary
  • progressive-delivery
  • rollout
  • continuous-delivery

goldenkube start cnpe-git-003

CNPEGitOps and Continuous DeliveryHard

CI/CD with Tekton: a two-task release pipeline passing a result

Build a Tekton Pipeline whose first Task emits the release version as a result and whose second Task publishes it into the staging namespace with kubectl, then run it.

Single node · ~18 min · 9 points

  • tekton
  • pipeline
  • ci-cd
  • task-results
  • serviceaccount
  • continuous-delivery

goldenkube start cnpe-git-004

CNPEGitOps and Continuous DeliveryMedium

Progressive delivery: blue/green with a preview service and manual promotion

Run checkout as an Argo Rollout with a blue/green strategy, verify the new version on the preview Service, then switch the active Service by promoting.

Single node · ~15 min · 8 points

  • argo-rollouts
  • blue-green
  • progressive-delivery
  • preview
  • continuous-delivery

goldenkube start cnpe-git-005

Independent community project, not affiliated with or endorsed by CNCF or The Linux Foundation. Lab results are practice feedback, not an exam score.