2026-08-22 17:30:45 +01:00
# 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.
2026-09-02 22:50:34 +01:00
## The five nodes and the VIP
2026-08-22 18:25:38 +01:00
None of these are from the MetalLB pool below — they're the machines
2026-09-02 22:50:34 +01:00
themselves and the shared address Talos elects between the three control-plane
nodes. Set in [`talos/README.md` ](../talos/README.md ); see
2026-08-22 18:25:38 +01:00
[`docs/02-talos-bootstrap.md` ](02-talos-bootstrap.md ) for what the VIP is
2026-09-02 22:50:34 +01:00
and why it's separate from any one node's address. Port 6443 is the Kubernetes
API on control-plane nodes; port 50000 is Talos's TLS-protected management API
on every node.
2026-08-22 18:25:38 +01:00
2026-09-02 22:50:34 +01:00
| Address | What | Port(s) | URL(s) |
2026-08-22 18:25:38 +01:00
|---|---|---|---|
2026-09-03 01:54:37 +01:00
| `10.10.10.200` | `talos-455-i3b` — control plane (Raspberry Pi 4) | 6443, 50000 | `https://10.10.10.200:6443` , `https://10.10.10.200:50000` |
| `10.10.10.201` | `talos-9xy-iuk` — control plane (Raspberry Pi 4) | 6443, 50000 | `https://10.10.10.201:6443` , `https://10.10.10.201:50000` |
| `10.10.10.202` | `talos-k1b-7j5` — control plane (Raspberry Pi 4) | 6443, 50000 | `https://10.10.10.202:6443` , `https://10.10.10.202:50000` |
| `10.10.10.203` | `talos-rss-v5l` — worker01 (Proxmox VM on Gimli) | 50000 | `https://10.10.10.203:50000` |
| `10.10.10.204` | `talos-vba-ood` — worker02 (Proxmox VM on Titus) | 50000 | `https://10.10.10.204:50000` |
2026-09-02 22:50:34 +01:00
| `10.10.10.210` | Cluster VIP (use this one, not a node's own address) | 6443 | `https://10.10.10.210:6443` |
2026-08-22 18:25:38 +01:00
2026-08-22 17:30:45 +01:00
## MetalLB pool
2026-09-03 02:19:46 +01:00
This dedicated service range is advertised to the MikroTik at
`10.10.10.1` with BGP by the two workers; it is not an L2 or DHCP pool.
2026-08-22 17:30:45 +01:00
| | |
|---|---|
2026-09-03 02:19:46 +01:00
| Range | `10.10.60.10-10.10.60.250` |
| Router / ASN | MikroTik RB5009 `10.10.10.1` / `64512` |
| Worker ASN | `64520` |
| Configured in | [`apps/metallb/templates/` ](../apps/metallb/templates/ ) |
2026-08-22 17:30:45 +01:00
2026-08-22 18:25:38 +01:00
## Allocated addresses (from the MetalLB pool)
2026-08-22 17:30:45 +01:00
| Address | What | Namespace | Port(s) | URL | Source |
|---|---|---|---|---|---|
2026-09-03 02:19:46 +01:00
| `10.10.60.10` | Argo CD UI/API (`argocd-server` ) | `argocd` | 443 | `https://10.10.60.10` | Patched to `LoadBalancer` by hand — see [`docs/05-metallb.md` ](05-metallb.md ) |
| `10.10.60.11` | Demo app | `demo` | 80 | `http://10.10.60.11` | [`apps/demo/service.yaml` ](../apps/demo/service.yaml ) |
2026-08-22 17:30:45 +01:00
Add a row here every time you add a new app with a `LoadBalancer` Service
2026-08-22 18:25:38 +01:00
(see [`docs/08-adding-new-apps.md` ](08-adding-new-apps.md )). Leave the URL
2026-08-22 17:30:45 +01:00
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.
2026-09-03 02:19:46 +01:00
- `10.10.60.12-10.10.60.250`