GitOps Starter Pack
A minimal, real, working GitOps setup for a three-node Kubernetes cluster — built to teach, not just to run. If you've never touched Kubernetes, GitOps, Talos, or Argo CD before, this is meant to get you from a bare machine to a working cluster you actually understand, not just one you copy-pasted into existence.
Who this is for
You're comfortable with computers: the command line, SSH, servers,
networking, editing config files. You have never used Kubernetes,
GitOps, Argo CD, or Talos, and none of the jargon is familiar yet. This
repo assumes that, exactly. Every cloud-native term is defined in plain
English the first time it appears, and a full glossary lives at
docs/glossary.md.
The mental model, briefly
Traditionally, you configure a server by SSHing in and changing things by hand. Nothing records why it looks the way it does except your memory and shell history. This repo takes a different approach:
- Kubernetes runs your applications, and you tell it the state you want ("one copy of this running") rather than the steps to get there — it keeps making that true, continuously.
- Talos Linux is the operating system underneath — built for nothing but running Kubernetes, configured the same declarative way, with no SSH or shell to log into.
- Argo CD watches this Git repository and keeps the cluster matching
whatever it finds here. You stop running
kubectl applyby hand; you edit a file, commit, push, and Argo CD applies it for you. - App-of-apps is how this repo is organized so that adding a new app later is "add a file," never a new procedure.
- MetalLB gives apps in this cluster real IP addresses on your own network — something a cloud provider would normally do for you, and bare metal doesn't have on its own.
- Longhorn does the same for storage — turning a spare disk on each node into one pool of storage that's replicated across all three nodes, so losing a machine doesn't mean losing its data.
Git becomes the one place that's actually true. If you want the full
picture with diagrams before doing anything, start with
docs/00-what-is-all-this.md.
What's in here
talos/ → Talos machine config + bootstrap guide (the OS layer)
argocd/ → Argo CD install + the one manifest you apply by hand
apps/ → Everything Argo CD manages from here on — demo app, MetalLB,
Longhorn, and wherever you add new apps
docs/ → The numbered, progressive guide you should actually read
Prerequisites
- Three machines (physical or VM), each with a second disk ≥900GB, to become your cluster's three nodes
talosctl,kubectl, and theargocdCLI installed locally- A GitHub account, and your own fork of this repo
Full detail, with install commands: docs/01-prerequisites.md.
The path through this repo
Read these in order. Each is short — one concept per file.
docs/00-what-is-all-this.md— the mental model and architecture, before touching a terminaldocs/01-prerequisites.md— install the tools, get a target machine readydocs/02-talos-bootstrap.md— turn that machine into a Kubernetes nodedocs/03-installing-argocd.md— install Argo CD into the clusterdocs/04-app-of-apps.md— apply the one manifest that hands control to Gitdocs/05-metallb.md— give apps real IP addresses on your networkdocs/06-longhorn.md— give apps real, replicated storagedocs/07-your-first-change.md— edit a file, push, watch it deploy itselfdocs/08-adding-new-apps.md— add something of your owndocs/09-growing-up.md— next steps: more nodes, ingress, secrets managementdocs/glossary.md— every term, plain English, for reference throughoutdocs/network.md— the running log of every real IP address in your cluster, kept current as you go
Prefer a single condensed list you can work through step by step with
Claude, checking items off as you go? Use
docs/checklist.md instead — see the next section.
Learning this with Claude
This repo is meant to be read with an AI assistant open alongside it. The
root CLAUDE.md primes Claude to act as a patient tutor for
this exact repo — teaching concepts in order, explaining why before
how, and checking your understanding rather than just handing you
commands. Throughout the docs, you'll see call-outs like:
Ask Claude: ...
Take those. They mark places where pausing to ask a follow-up question pays off more than plowing ahead.
If you'd rather be walked through the whole bootstrap interactively, start a conversation with Claude in this repo and say something like "walk me through the checklist in docs/checklist.md" — it will go step by step, wait for your output at each one, and help you debug before moving on.
A note on scope
This repo deliberately does not ship ingress, TLS/cert-manager, or
secrets management in v1 — they're real next steps, documented in
docs/09-growing-up.md, left out so the core
loop stays small enough to fully understand first. This repo is also
public — never commit plaintext secrets, credentials, or private keys
to it; see that same doc for how to handle secrets properly once you need
them.