# RKE2 Cluster Topology & Inventory

## Cluster Nodes

| VMID | Name | Role | IP | Specs | RKE2 Service |
|------|------|------|----|-------|-------------|
| 118 | rke2-cp-01 | control-plane,etcd | 10.0.30.51 | 4c/12GB/40GB | rke2-server |
| 130 | rke2-cp-02 | control-plane,etcd | 10.0.30.52 | 4c/12GB/40GB | rke2-server |
| 129 | rke2-cp-03 | control-plane,etcd | 10.0.30.53 | 4c/12GB/40GB | rke2-server |
| 128 | rke2-worker-01 | worker | 10.0.30.61 | 4c/12GB/80GB | rke2-agent |
| 132 | rke2-worker-02 | worker | 10.0.30.62 | 4c/12GB/80GB | rke2-agent |
| 131 | rke2-worker-03 | worker | 10.0.30.63 | 4c/12GB/80GB | rke2-agent |

- **RKE2 API VIP**: 10.0.30.50 (Keepalived on CP nodes)
- **RKE2 version**: v1.35.2+rke2r1
- **Container runtime**: containerd 2.1.5-k3s1
- **OS**: Debian 12 (bookworm), kernel 6.1.0-44-amd64

## Management VM

| VMID | Name | IP | Specs |
|------|------|----|-------|
| 200 | mgmt-runner-01 | 10.0.30.X (DHCP) | 4c/4GB/30GB |

- Has `kubectl`, `helm`, `git`, GitHub Actions runner
- Kubeconfig at `/root/.kube/config` (must set `KUBECONFIG=` explicitly)
- GitHub Actions runner: `actions.runner.dsgrafiniert-iac-homelab.mgmt-runner-01`
- OpenTofu state files in `/opt/tofu-state/`

## LoadBalancer IP Assignments

| Service | Namespace | LB IP | Ports |
|---------|-----------|-------|-------|
| Traefik Ingress | kube-system | 10.0.30.202 | 80, 443 |
| PostgreSQL RW (CNPG) | postgres | 10.0.30.200 | 5432 |

**Cilium LB Pool**: 10.0.30.200 - 10.0.30.250 (48 IPs available)

**Removed**: K8s MariaDB MaxScale (was 10.0.30.201, namespace deleted
2026-07-12). MariaDB Galera runs as native VMs, not in K8s.

**Non-K8s services on same subnet** (must not overlap with LB pool):
- 10.0.30.50 = RKE2 API VIP (Keepalived)
- 10.0.30.70 = MaxScale VIP (Keepalived, standalone Galera VMs)
- 10.0.30.71-73 = Galera VMs (VM300-302)
- 10.0.30.99 = Docker host (CT121)
- 10.0.30.104 = Frigate (CT120)
- 10.0.30.105 = Gitea (CT108)
- 10.0.30.10 = Home Assistant (VM106)

## Operators & Add-ons

| Component | Namespace | Status |
|-----------|-----------|--------|
| Cilium CNI | kube-system | Running (eBPF, L2 announcements) |
| Traefik Ingress | kube-system | Running (RKE2-bundled) |
| CoreDNS | kube-system | Running (RKE2-bundled) |
| Metrics Server | kube-system | Running |
| External Secrets Operator | external-secrets | Running (1Password backend) |
| CloudNativePG | cnpg-system | Running (PostgreSQL operator) |
| Velero | velero | Running (S3 backup) |
| Ceph CSI | kube-system | Running (RBD storage, external Ceph) |
| ArgoCD | argocd | Running (GitOps, App-of-Apps) |

**Removed** (2026-07-12): MariaDB Operator + CRDs — namespace
`mariadb` and `mariadb-operator` deleted. Galera runs as native VMs.

## ArgoCD Applications

| App | Sync Wave | Status | Description |
|-----|-----------|--------|-------------|
| root | — | Synced/Healthy | Root App-of-Apps |
| operators | 0 | Synced/Healthy | CNPG, Velero operators |
| databases | 1 | Synced/Healthy | PostgreSQL cluster |
| backups | 2 | Synced/Healthy | Velero schedules |
| memory | 3 | Unknown/Degraded | Qdrant + Ollama + Memory API |
| cloudnativepg-operator | — | Synced/Healthy | CNPG operator |
| velero-operator | — | Synced/Healthy | Velero operator |

**Removed** (2026-07-12): `mariadb-operator`, `mariadb-operator-crds`
apps — deleted from repo, CRs cleaned up manually, namespaces + CRDs purged.

## IaC Repositories (Gitea at 10.0.30.105:3000)

| Repo | Content |
|------|---------|
| dominik/iac-homelab | Main IaC: 7 epics, OpenTofu, Ansible, ArgoCD apps |
| dominik/observability-iac | Observability: Loki, Prometheus/Thanos, Grafana |
| d.schoen/terraform-proxmox-k8s | Older Terraform-Proxmox-K8s work |
| d.schoen/packer-proxmox | VM templates with Packer |

## PVE Node Map

| Node | IP | Notes |
|------|----|-------|
| proxmox1 | 10.0.20.10 | Cluster master (API endpoint) |
| proxmox2 | 10.0.20.20 | Hosts CP-03, Worker-02 |
| proxmox3 | 10.0.20.30 | Hosts CP-02, Worker-03, mgmt-runner |
| proxmox4 | 10.0.20.40 | Hosts MaxScale VM, Galera VM |
| proxmox5 | 10.0.20.50 | Hosts CP-01, Worker-01 |
| proxmox6 | 10.0.20.60 | Hosts Gitea, Authelia, Paperless |
| proxmox7 | 10.0.20.70 | Hosts monitoring, Omada, Ollama |
| n5pro | 10.0.20.91 | AMD GPU, Frigate, Seafile, Immich |

**Note**: VM placements change with HA migration. Always discover
current placement before operating (scan all nodes with `qm list`).
