Skip to content

ArgoCD GitOps Home Lab

Level:Intermediate
Time:2-3 hours
Cost:low
Works locally:Yes
Cloud creds:No
Cleanup:Yes
Reviewed:2026-05-30
Validation:make validate

Local GitOps lab designed for Kind or Minikube with no cloud cost.

Outcome Kubernetes resource output plus app/GitOps screenshot
Tools used Kubernetes, Argo CD, Gitops, Kind
Best fit Intermediate - 2-3 hours
Student workstation Repository files CI/CD pipeline Local Kubernetes Validation proof
  • Install or review: Kubernetes, Argo CD, Gitops, Kind.
  • No cloud provider credentials are required by the project metadata.
  • This project can be practiced locally before you publish portfolio evidence.
  • Open the safety guide before running commands that create infrastructure.
Cost and credential stance

Cost risk is low. Cloud target: no cloud provider. Cloud credentials needed: No. Always use your own account, never commit secrets, and confirm cleanup before creating paid infrastructure.

Use this flow before you run commands:

  1. Read the cost and credential warning above.
  2. Review the validation, troubleshooting, cleanup, and portfolio proof sections below.
  3. Follow the original project guide preserved near the bottom of this page.
  4. Return to the validation and cleanup checks before you capture portfolio evidence.

Run the project validation command before and after meaningful changes:

Terminal window
make validate
  • Run make validate first so local tooling issues are visible early.
  • If a command fails, check tool versions, working directory, and required environment variables.
  • For pipeline failures, check repository secrets, runner permissions, and pinned action versions.
  • For Kubernetes failures, check the current context, namespace, pod events, and service endpoints.

Cleanup is available or expected for this lab. Use the cleanup or destroy steps in the guide below, then confirm that local clusters, containers, cloud resources, buckets, state files, and CI secrets are no longer active.

  • Validation command output: make validate
  • Screenshot or terminal proof: Kubernetes resource output plus app/GitOps screenshot
  • Notes explaining what changed, what failed, and how you fixed it
  • Cleanup evidence, especially for cloud or Kubernetes resources

The original README content is preserved here for lab-specific commands and context. Headings are intentionally demoted so the page outline stays focused on the standard lab flow.

External image reference Level
External image reference Cost
External image reference Cloud
External image reference Workflow

Student-friendly GitOps lab for running a simple Kubernetes app locally with Kind or Minikube and deploying it through ArgoCD.

  • How GitOps differs from manual kubectl apply
  • How ArgoCD watches Git and reconciles cluster state
  • How to structure app manifests for dev/staging style promotion
  • How sync, drift, rollback, and health checks work
flowchart LR
Student["Student edits Git repo"] --> AppManifest["k8s/ manifests"]
AppManifest --> ArgoApp["ArgoCD Application"]
ArgoApp --> ArgoCD["ArgoCD controller"]
ArgoCD --> Cluster["Kind or Minikube cluster"]
Cluster --> Workload["hello-gitops Deployment + Service"]
  • Docker
  • Kind for the one-command workflow, or Minikube if you prefer manual setup
  • kubectl
  • ArgoCD CLI, optional but useful
Terminal window
make validate
make up
make logs
make down

make up creates a local Kind cluster named gitops-lab, installs ArgoCD, and applies argocd/application.yaml.

Terminal window
kind create cluster --name gitops-lab
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
kubectl wait --for=condition=available --timeout=180s deployment/argocd-server -n argocd
kubectl apply -f argocd/application.yaml
kubectl get applications -n argocd

Update argocd/application.yaml so repoURL points to your fork before using it with a real GitHub repo.

Terminal window
make validate

This parses the Kubernetes and ArgoCD YAML locally, so it works before a cluster or ArgoCD CRD exists.

  • no matches for kind "Application": install ArgoCD before applying the manifest to a cluster; make validate is only a local YAML check.
  • repoURL sync fails: fork this repository and update argocd/application.yaml to your fork URL and branch.
  • App namespace missing: confirm syncOptions still includes CreateNamespace=true.
  • Kind cluster already exists: run make down, or use CLUSTER=my-gitops-lab make up.
Terminal window
make down

For Minikube users:

Terminal window
minikube delete
  • Add a staging overlay.
  • Add ArgoCD sync waves.
  • Add image automation.
  • Break the deployment and use ArgoCD rollback.
Use the guide first.

The full learning flow stays on this page. Open GitHub only when a step asks you to inspect code, fork the lab, or download source assets.