ArgoCD GitOps Home Lab
low
kubernetes ready
local lab
make validate
Use the guide first.
The full learning guide is on this page. Open the repository files only when a step asks you to inspect code, fork the project, or download raw assets.
Project Guide
Section titled “Project Guide”
Student-friendly GitOps lab for running a simple Kubernetes app locally with Kind or Minikube and deploying it through ArgoCD.
What You Learn
Section titled “What You Learn”- 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
Architecture
Section titled “Architecture”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"]Prerequisites
Section titled “Prerequisites”- Docker
- Kind for the one-command workflow, or Minikube if you prefer manual setup
kubectl- ArgoCD CLI, optional but useful
One-Command Local Workflow
Section titled “One-Command Local Workflow”make validatemake upmake logsmake downmake up creates a local Kind cluster named gitops-lab, installs ArgoCD, and applies argocd/application.yaml.
Manual Quick Start
Section titled “Manual Quick Start”kind create cluster --name gitops-labkubectl create namespace argocdkubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yamlkubectl wait --for=condition=available --timeout=180s deployment/argocd-server -n argocdkubectl apply -f argocd/application.yamlkubectl get applications -n argocdUpdate argocd/application.yaml so repoURL points to your fork before using it with a real GitHub repo.
Validation
Section titled “Validation”make validateThis parses the Kubernetes and ArgoCD YAML locally, so it works before a cluster or ArgoCD CRD exists.
Troubleshooting
Section titled “Troubleshooting”no matches for kind "Application": install ArgoCD before applying the manifest to a cluster;make validateis only a local YAML check.repoURLsync fails: fork this repository and updateargocd/application.yamlto your fork URL and branch.- App namespace missing: confirm
syncOptionsstill includesCreateNamespace=true. - Kind cluster already exists: run
make down, or useCLUSTER=my-gitops-lab make up.
Cleanup
Section titled “Cleanup”make downFor Minikube users:
minikube deleteStretch Goals
Section titled “Stretch Goals”- Add a
stagingoverlay. - Add ArgoCD sync waves.
- Add image automation.
- Break the deployment and use ArgoCD rollback.