ci / test (push) Failing after 24s
Admin-Schlüssel je Person auf ops (Bastion) aus sites/knaster/proxmox.yaml (access.ops_ssh_keys/_revoked), Playbook admins.yml, Test, Übergabe in BETRIEB §15. Einstieg für Agenten und neue Admins: AGENTS.md, Projektkarte, bekannte Probleme. Weg 2 (Verwaltung über NEX) als Entwurf in Phase 9. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
91 lines
6.0 KiB
Markdown
91 lines
6.0 KiB
Markdown
# Projektkarte knaster
|
||
|
||
Stand 19.10.2026. Was wo läuft, wie man es erreicht und wo es im Repo steht. Bei jeder Änderung an Adressen,
|
||
Diensten oder Ports mitpflegen (siehe [AGENTS.md](AGENTS.md)). Bekannte Probleme: [known-issues.md](known-issues.md).
|
||
|
||
## Netz
|
||
|
||
Flaches Netz `192.168.100.0/24`, Gateway `.1`, DNS und DHCP auf dem DC `.120` (verwaltet vom DC-Support, nicht von uns).
|
||
Feste Adressen: Knoten, ops und infra statisch konfiguriert; GPU-VMs und k3s-VM per DHCP (Reservierungen Task 0.2).
|
||
|
||
## Rechner und Gäste
|
||
|
||
| Name | Art | Adresse | Feste Adresse | Rolle |
|
||
|---|---|---|---|---|
|
||
| pve44 | Proxmox-Knoten | .210 | statisch + Reservierung | GPU-Knoten (M4000 + P2000), Heimat von infra |
|
||
| pve46 | Proxmox-Knoten | .209 | statisch, keine Reservierung möglich | GPU-Knoten (M4000 + P2000), Heimat von ops |
|
||
| pve48 | Proxmox-Knoten | .212 | statisch, keine Reservierung möglich | GPU-Knoten (M4000 + P2000), Heimat der k3s-VM |
|
||
| pve52 | Proxmox-Knoten | .207 | statisch + Reservierung | GPU-Knoten (nur M4000) |
|
||
| pve61 | Proxmox-Knoten (Surface) | .214 | statisch | Quorum, später Kiosk (Task 5.3), kein `tank` |
|
||
| ops | LXC 100 auf pve46 | .173 | statisch | Steuerrechner/Bastion: kubectl, Ansible, tofu, Repo-Clone |
|
||
| infra | LXC 101 auf pve44 (HA) | .188 | statisch, keine Reservierung möglich | Monitoring und Router (Compose-Stack `knaster-infra`) |
|
||
| k3s | VM 110 auf pve48 (HA) | .124 | DHCP | k3s-Steuerung, Portainer CE, kube-state-metrics |
|
||
| gpu-pve44 | VM 244 | .186 | DHCP | k3s-Agent; llama.cpp Embedding + Rerank (P2000) |
|
||
| gpu-pve46 | VM 246 | .178 | DHCP | k3s-Agent; llama.cpp Embedding + Rerank (P2000) |
|
||
| gpu-pve48 | VM 248 | .183 | DHCP | k3s-Agent; llama.cpp Chat (P2000) |
|
||
| gpu-pve52 | VM 252 | .174 | DHCP + Reservierung | k3s-Agent; NEX-Sprachdienste (M4000) |
|
||
| appsrv08 | fremder Server | .29 | – | NEX-Produktion, LiteLLM (D4), Portainer EE, nex-admin, Traefik |
|
||
| Admin-Laptop | – | .151 (WLAN), .181 (Dock) | Reservierung | Arbeitsplatz von r.rapp |
|
||
|
||
## Dienste und Ports
|
||
|
||
| Dienst | Wo | Adresse | Zugang |
|
||
|---|---|---|---|
|
||
| Proxmox-Weboberfläche | jeder Knoten | `https://<knoten>:8006` | persönliches Konto + TOTP, nur Adressen aus `firewall.management` |
|
||
| Grafana | infra | `http://192.168.100.188:3000` | `admin`, `kiosk` (Viewer); Dashboards: Übersicht, Proxmox, Knoten, GPU, k3s – Pods |
|
||
| Prometheus / Alertmanager | infra | `:9090` / `:9093` | ohne Anmeldung, nur LAN |
|
||
| knaster-Router | infra | `:8080` | Bearer-Token (Dry-Run) |
|
||
| TTS (Piper, knaster) | infra | `:8090` | – |
|
||
| k3s-API | k3s | `https://192.168.100.124:6443` | kubeconfig nur auf ops; nex-admin mit eigenem Token (nur Namespace `nex`) |
|
||
| Portainer CE | k3s | `https://192.168.100.124:30779` | Portainer-Konten (Datenbank von appsrv08 übernommen) |
|
||
| Portainer-Agent | jeder k3s-Knoten | `:30778` | für Portainer |
|
||
| SearXNG (NEX) | jeder k3s-Knoten | `:30880` | – |
|
||
| kube-state-metrics | jeder k3s-Knoten | `:30808` | für Prometheus |
|
||
| RustDesk hbbs/hbbr | jeder k3s-Knoten | `:21115–21119` | Clients zeigen noch auf `.29` |
|
||
| llama.cpp Embedding / Rerank | gpu-pve44, gpu-pve46 | `:8081` / `:8082` | LAN (ufw) |
|
||
| llama.cpp Chat (verifier-small) | gpu-pve48 | `:8080` | LAN (ufw) |
|
||
| NEX STT (whisper.cpp) / TTS (Piper) | gpu-pve52 | `:8178` / `:8179` | nur von appsrv08 (ufw) |
|
||
| node_exporter / nvidia_gpu_exporter | jede GPU-VM | `:9100` / `:9835` | LAN |
|
||
| kubelet | jeder k3s-Knoten | `:10250` | Token `prometheus-infra` |
|
||
|
||
## k3s-Namespaces
|
||
|
||
| Namespace | Inhalt | Ausgerollt mit |
|
||
|---|---|---|
|
||
| `kube-system` | k3s-Grundlagen, metrics-server, NVIDIA Device Plugin (nur M4000), kube-state-metrics | `playbooks/k3s.yml`, `playbooks/monitoring-k3s.yml` |
|
||
| `knaster` | llama.cpp je GPU-VM (`llamacpp-<vm>`) | `playbooks/gpu-llamacpp-k3s.yml` |
|
||
| `nex` | NEX-Agenten (von nex-admin), nex-stt, nex-tts, nex-searxng, Brücke zu appsrv08 | nex-admin, `playbooks/nex-k3s.yml`, `nex-speech-k3s.yml`, `nex-searxng-k3s.yml` |
|
||
| `portainer`, `portainer-ce` | Portainer-Agent, Portainer CE | `playbooks/k3s.yml`, `playbooks/portainer-k3s.yml` |
|
||
| `rustdesk` | RustDesk-Server | `playbooks/rustdesk-k3s.yml` |
|
||
|
||
## Repo
|
||
|
||
| Pfad | Inhalt |
|
||
|---|---|
|
||
| `AGENTS.md`, `project-map.md`, `known-issues.md` | Einstieg für Agenten und neue Admins |
|
||
| `docs/superpowers/plans/2026-10-12-aufbau-cluster-knaster.md` | Aufbauplan mit Stand je Task |
|
||
| `docs/BETRIEB.md` | Betriebshandbuch (Monitoring §7, Zugang §8, Firewall §10, k3s §14, Übergabe §15) |
|
||
| `docs/ANMELDUNG.md` | Anmeldung und Vertretung (Password Depot) |
|
||
| `docs/PLAN.md`, `docs/adr/`, `docs/spec/` | Architektur, Entscheidungen, Spezifikationen |
|
||
| `sites/knaster/proxmox.yaml` | Zielbild: Knoten, GPUs, VMs, LXC, Zugang, Firewall |
|
||
| `sites/knaster/registry.yaml`, `catalog/` | Slots (Modelle je Rolle) und Modellkatalog |
|
||
| `config/` | Policy, Healer-Regeln, Lifecycle |
|
||
| `core/` | Python-Paket `knaster` (Router, Healer, Canary, Inventar) und Tests |
|
||
| `deploy/k8s/` | Manifeste für k3s (Übersicht: `deploy/k8s/README.md`) |
|
||
| `deploy/compose/` | Compose-Stacks (infra aktiv; gpu-llamacpp, nex-speech nur noch Rückweg) |
|
||
| `deploy/prometheus/`, `deploy/alertmanager/`, `deploy/grafana/` | Monitoring-Konfiguration für infra |
|
||
| `platform/proxmox/tofu/` | VMs und LXC (OpenTofu, `bpg/proxmox`) |
|
||
| `platform/proxmox/ansible/` | Rollen und Playbooks (laufen auf ops) |
|
||
| `platform/proxmox/scripts/` | Bootstrap, Healthcheck, Zugang auffrischen, Monitoring-Ziele, Admin-Konto |
|
||
| `n8n/workflows/` | n8n-Workflows (inaktiv importieren) |
|
||
|
||
## Geheimnisse (nur Orte, nie Inhalte)
|
||
|
||
| Was | Wo |
|
||
|---|---|
|
||
| Proxmox-Admin-Passwort, TOTP, root-Passwörter | Password Depot; Kopie Passwörter auf dem Admin-Laptop `it/proxmox/.env` |
|
||
| SSH-Schlüssel Laptop | Admin-Laptop `it/proxmox/keys/` |
|
||
| tofu-, pve-exporter-, Healer-Token, k3s-Token, nex-admin-Token, Prometheus-Token, k3s-CA, Gitea-Registry | ops `/root/.config/knaster/` |
|
||
| Postgres, Router-Token, Grafana-Passwörter, Kopien der Exporter-/k3s-Zugänge | infra `/opt/knaster/infra/.env`, `/opt/knaster/infra/secrets/` |
|
||
| kubeconfig | ops `/root/.kube/config` |
|