Move to a three-node cluster with a Talos VIP; add Longhorn
Every node is now both control plane and worker, giving real tolerance for losing any single machine (etcd quorum needs 3, not 1). A Talos VIP gives the cluster one stable address regardless of which node answers. Also pre-installs Longhorn for replicated storage, backed by a Talos UserVolume on each node's second disk (>=900GB, non-system) rather than the default path — mirroring the pattern from the homescale repo. Docs renumbered to make room for 06-longhorn.md; checklist, glossary, network map, and CLAUDE.md's guided-bootstrap instructions updated to match, including asking the user for node IPs, VIP, and disk info before generating any Talos config. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
92c3ad3191
commit
110bd97cca
@@ -1,7 +1,7 @@
|
||||
# GitOps Starter Pack
|
||||
|
||||
A minimal, real, working GitOps setup for a single Kubernetes cluster —
|
||||
built to teach, not just to run. If you've never touched Kubernetes,
|
||||
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.
|
||||
@@ -35,6 +35,9 @@ shell history. This repo takes a different approach:
|
||||
5. **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.
|
||||
6. **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
|
||||
@@ -46,13 +49,14 @@ picture with diagrams before doing anything, start with
|
||||
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,
|
||||
and wherever you add new apps
|
||||
Longhorn, and wherever you add new apps
|
||||
docs/ → The numbered, progressive guide you should actually read
|
||||
```
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- One machine (physical or VM) to become your cluster node
|
||||
- Three machines (physical or VM), each with a second disk ≥900GB, to
|
||||
become your cluster's three nodes
|
||||
- `talosctl`, `kubectl`, and the `argocd` CLI installed locally
|
||||
- A GitHub account, and your own fork of this repo
|
||||
|
||||
@@ -68,11 +72,12 @@ Read these in order. Each is short — one concept per file.
|
||||
4. [`docs/03-installing-argocd.md`](docs/03-installing-argocd.md) — install Argo CD into the cluster
|
||||
5. [`docs/04-app-of-apps.md`](docs/04-app-of-apps.md) — apply the one manifest that hands control to Git
|
||||
6. [`docs/05-metallb.md`](docs/05-metallb.md) — give apps real IP addresses on your network
|
||||
7. [`docs/06-your-first-change.md`](docs/06-your-first-change.md) — edit a file, push, watch it deploy itself
|
||||
8. [`docs/07-adding-new-apps.md`](docs/07-adding-new-apps.md) — add something of your own
|
||||
9. [`docs/08-growing-up.md`](docs/08-growing-up.md) — next steps: more nodes, ingress, secrets management
|
||||
10. [`docs/glossary.md`](docs/glossary.md) — every term, plain English, for reference throughout
|
||||
11. [`docs/network.md`](docs/network.md) — the running log of every real IP address in your cluster, kept current as you go
|
||||
7. [`docs/06-longhorn.md`](docs/06-longhorn.md) — give apps real, replicated storage
|
||||
8. [`docs/07-your-first-change.md`](docs/07-your-first-change.md) — edit a file, push, watch it deploy itself
|
||||
9. [`docs/08-adding-new-apps.md`](docs/08-adding-new-apps.md) — add something of your own
|
||||
10. [`docs/09-growing-up.md`](docs/09-growing-up.md) — next steps: more nodes, ingress, secrets management
|
||||
11. [`docs/glossary.md`](docs/glossary.md) — every term, plain English, for reference throughout
|
||||
12. [`docs/network.md`](docs/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
|
||||
@@ -101,7 +106,7 @@ moving on.
|
||||
|
||||
This repo deliberately does **not** ship ingress, TLS/cert-manager, or
|
||||
secrets management in v1 — they're real next steps, documented in
|
||||
[`docs/08-growing-up.md`](docs/08-growing-up.md), left out so the core
|
||||
[`docs/09-growing-up.md`](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
|
||||
|
||||
Reference in New Issue
Block a user