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>
2.4 KiB
Network map
Every real IP address this cluster hands out, and exactly what's reachable
there. This file isn't a template with the rest of the repo — it's a log
of your actual setup, meant to be updated every time an address is
assigned or changed, so you (or Claude) never have to reverse-engineer
"wait, what's running on .241 again?" from kubectl output.
Keep this current. If you're working with Claude and an IP changes — a new app gets a
LoadBalanceraddress, the MetalLB pool is resized, Argo CD's address changes — ask it to update this file, or just point it here after any networking change. SeeCLAUDE.mdfor the standing instruction that tells Claude to do this on its own when it makes such a change itself.
The three nodes and the VIP
None of these are from the MetalLB pool below — they're the machines
themselves and the shared address Talos elects between them. Set in
talos/README.md; see
docs/02-talos-bootstrap.md for what the VIP is
and why it's separate from any one node's address.
| Address | What | Port | URL |
|---|---|---|---|
EDIT ME |
Node 1 | 6443 | https://EDIT ME:6443 |
EDIT ME |
Node 2 | 6443 | https://EDIT ME:6443 |
EDIT ME |
Node 3 | 6443 | https://EDIT ME:6443 |
EDIT ME |
Cluster VIP (use this one, not a node's own address) | 6443 | https://EDIT ME:6443 |
MetalLB pool
| Range | EDIT ME — e.g. 192.168.1.240-192.168.1.250 |
| Configured in | apps/metallb/templates/ipaddresspool.yaml |
Allocated addresses (from the MetalLB pool)
| Address | What | Namespace | Port(s) | URL | Source |
|---|---|---|---|---|---|
EDIT ME |
Argo CD UI/API (argocd-server) |
argocd |
443 | https://EDIT ME |
Patched to LoadBalancer by hand — see docs/05-metallb.md |
EDIT ME |
Demo app | demo |
80 | http://EDIT ME |
apps/demo/service.yaml |
Add a row here every time you add a new app with a LoadBalancer Service
(see docs/08-adding-new-apps.md). Leave the URL
column's port number off only when it's the protocol default (80 for
http://, 443 for https://) — include it otherwise.
Free in the pool
Addresses from the range above that aren't spoken for yet. Update this alongside the table above so it's obvious at a glance what's safe to hand to the next app.
EDIT ME