Files
lpic-sim/ai/context/knowledge/services/sultan.md
T
Björn RundenandClaude Opus 5.5 7f6b8ebe07 Basis aus 2nd-brain für LPIC-Prüfungsvorbereitung übernommen
Regeln, Standards, Kontextstruktur und Werkzeuge übernommen; 2nd-brain-
Inhalte (Stacks, Ansible-Inventar, Architektur, Knowledge) entfernt.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 21:56:53 +01:00

3.0 KiB
Raw Blame History

id, title, type, status, updated, owner, tags, sources, related, classification
id title type status updated owner tags sources related classification
sultan sultan – verteiltes Ingress-Routing für Traefik (Eigenentwicklung) service active 2026-10-23 br
traefik
ingress
docker
netbird
checkmk
eigenentwicklung
https://git.everdc.eu/chmln-app-dev/sultan
intern

sultan – verteiltes Ingress-Routing für Traefik

Eigenentwicklung des Betreibers (Go), Ersatz für HashiCorp Consul im eigenen Bedarf: Dienste deklarieren ihr Routing per Traefik-Labels, ein Agent meldet es an den sultan-Server, Traefik holt die Konfiguration per HTTP-Provider.

Fakten

Merkmal Wert
Repo ssh://git@git.everdc.eu:10022/chmln-app-dev/sultan.git, lokal ~/git/sultan
Image zot.chmln.de/sultan:<version> (distroless, nonroot UID 65532) – feste Version in .env
Rollen sultan server (neben Traefik), sultan agent (je Docker-Host), sultan accountant (Inventar)
Agent → Server TCP 8443, TLS, nur ausgehend
Traefik → Backend HTTP auf den veröffentlichten Host-Port des Containers
Monitoring Checkmk Local Checks (/metrics/checkmk)

Details – was das für unsere Compose-Stacks heißt

Punkt Folge
Traefik läuft auf anderer VM kein externes Netz traefik-net und kein Label traefik.docker.network auf dem Docker-Host
Port muss veröffentlicht sein ports: "${APP_PORT}:<intern>" Pflicht für Web-Services; Bindung an 127.0.0.1 wird verworfen. Bindung an eine andere IP (z. B. NetBird-IP) wird akzeptiert (Code: pkg/agent/workloads.go, reachablePorts). Festlegung je Host in dessen Knowledge-Eintrag
Port-Label loadbalancer.server.port = Port im Container; der Agent rechnet auf den Host-Port um
Entrypoints/Certresolver Labels müssen Namen aus der Traefik-Konfiguration nutzen (websecure, le); sultan prüft das nicht
Domains nur Domains, die dem Mandanten im sultan-Server erlaubt sind (sonst „Policy-Verstoß“ im Server-Log)
Namen IDs: a-z0-9, -, _; __ ist reserviert (Trenner <mandant>__<knoten>__<router>) – unser _-Schema passt, doppelter Unterstrich verboten
Backend-Adresse Agent meldet die Host-IP, über die er den Server erreicht; mit SULTAN_BACKEND_INTERFACE=wt0 die NetBird-IP
Wartung gestoppter Container → Wartungsseite; entfernter Container (down) → 404 (siehe docs/wartung.md im Repo)

Betrieb

  • Bereitstellung Agent: Compose mit network_mode: host, Docker-Socket :ro, group_add: DOCKER_GID, suldata/ (enthält node.key) persistent und im Backup
  • Einladung: sultan token invite --tenant=… auf dem Server, als SULTAN_TOKEN in die .env des Agents (nur beim ersten Start)
  • Prüfung: Agent-Log „Mit Server verbunden / Lease erhalten“; vom Ingress curl -sI http://<backend-ip>:<port> -H 'Host: …'

Quellen

  • ~/git/sultan/README.md, docs/community.md, deploy/compose/agent/ (gelesen 23.10.2026, Commit dd93277)

Änderungen

  • 23.10.2026 – angelegt (br)