4.7 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 five 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 the three control-plane
nodes. 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. Port 6443 is the Kubernetes
API on control-plane nodes; port 50000 is Talos's TLS-protected management API
on every node.
| Address | What | Port(s) | URL(s) |
|---|---|---|---|
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 |
10.10.10.210 |
Cluster VIP (use this one, not a node's own address) | 6443 | https://10.10.10.210:6443 |
MetalLB pool
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.
| 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/ |
Allocated addresses (from the MetalLB pool)
| Address | What | Namespace | Port(s) | URL | Source |
|---|---|---|---|---|---|
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 |
10.10.60.12 |
ingress-nginx (shared, routes by hostname) | ingress-nginx |
80, 443 | http://10.10.60.12, https://10.10.60.12 |
apps/ingress-nginx/values.yaml — see docs/11-ingress.md |
Add a row here every time you add a new app with its own dedicated
LoadBalancer Service (see docs/08-adding-new-apps.md).
Most apps should route through ingress-nginx by hostname instead — see the
table below — and only need a dedicated address if they can't speak HTTP
(a raw TCP service, for example). Leave the URL column's port number off
only when it's the protocol default (80 for http://, 443 for https://)
— include it otherwise.
Hostnames routed through ingress-nginx
Every real DNS record pointing at ingress-nginx's shared address
(10.10.60.12), and which app it reaches. All hosted on Cloudflare.
| Hostname | App | Namespace | TLS | Source |
|---|---|---|---|---|
demo.ahmza.com |
Demo app | demo |
Yes — letsencrypt-prod, real trusted cert (see docs/12-cert-manager.md) |
apps/demo/ingress.yaml |
mc.ahmza.com |
Packwiz modpack files | mcpacks |
Yes — letsencrypt-prod, real trusted certificate |
apps/mcpacks/ingress.yaml |
Add a row here every time you point a new hostname at this cluster (see
docs/11-ingress.md). The DNS record itself lives in
Cloudflare, not in this repo — this table is just the log of what's real.
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.
10.10.60.11,10.10.60.13-10.10.60.250
(whoami's former 10.10.60.12 was reclaimed here after that app was
removed as the docs/08 exercise — it now belongs to ingress-nginx instead.
demo's former 10.10.60.11 was reclaimed the same way after that app
moved to routing through ingress-nginx by hostname instead — see
docs/11-ingress.md.)