Files
vps-k8s/docs/network.md
T
Maxwell MorrisandClaude Sonnet 5 110bd97cca 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>
2026-08-22 18:25:38 +01:00

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 LoadBalancer address, 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. See CLAUDE.md for 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