init des architektur beschreibenden MD...
noch kein code, nur REadme, ai.agent md s
This commit is contained in:
1 parent
7f59a5d9b7
commit
9861c25949
3 files changed
+488
-3
No files matched your search
@@ -1,4 +1,76 @@
|
||||
# sultan
|
||||
# 👑 sultan
|
||||
|
||||
sultan service + agent in GO
|
||||
Target: a Traefik label registry docker host over span
|
||||
**Verteiltes Ingress-Routing mit ZeroTrust-Service-Discovery – geschrieben in Go.**
|
||||
|
||||
Schluss mit Klick-Konfiguration im Proxy-GUI und toten Routen 🪦: Bei Sultan sagen deine Dienste selbst, wie sie erreichbar sein wollen. Ob Docker-Container mit Traefik-Labels 🐳 oder klassischer Bare-Metal-/LAMP-Server mit Drop-in-Config 🖥️ – ein kleiner Agent meldet das Routing sicher an den zentralen Sultan-Server, und Traefik holt sich daraus live seine Konfiguration. Ohne Neustart, ohne Portweiterleitung.
|
||||
|
||||
## ✨ Was Sultan kann
|
||||
|
||||
- 🏷️ **Routing am Dienst deklarieren** – native `traefik.*`-Labels in Docker oder Dateien unter `/etc/sultan.d/`
|
||||
- 📡 **Firewall-freundlich** – der Agent baut nur *ausgehende* Verbindungen auf; funktioniert hinter NAT, CGNAT und DS-Lite
|
||||
- ⚡ **Echtzeit-Updates** – Container starten oder stoppen, Traefik weiß es sofort
|
||||
- 🔐 **Sicher von Haus aus** – TLS mit Fingerprint-Pinning (wie bei SSH), Ed25519-Schlüssel, die den Host nie verlassen
|
||||
- 🛡️ **Mandantenfähig** – jeder Mandant darf nur seine eigenen Domains beanspruchen
|
||||
- 🌐 **ZeroTrust-Overlay** – optional über ein WireGuard-Mesh (z. B. NetBird), auch für Hosts ohne öffentliche IP
|
||||
- 📊 **Monitoring** – Checkmk-Integration für Knoten- und Lizenzstatus
|
||||
|
||||
## 🧭 So funktioniert's
|
||||
|
||||
```text
|
||||
Internet ──▶ Traefik ──(pollt)──▶ sultan server ◀──(TLS-Stream)── sultan agent (Docker / Bare-Metal)
|
||||
```
|
||||
|
||||
Ein einziges Binary, drei Rollen:
|
||||
|
||||
| Befehl | Aufgabe |
|
||||
|-----------------|----------------------------------------------------------------|
|
||||
| `sultan server` | Registry, Policy-Engine und Konfigurationsquelle für Traefik |
|
||||
| `sultan agent` | Beobachtet Docker bzw. `/etc/sultan.d/` und meldet an den Server |
|
||||
| `sultan token` | Schlüssel, Einladungs-Tokens und Lizenzen verwalten |
|
||||
|
||||
Die ausführliche Architektur steht in [.ai/sultan-system-architecture.md](.ai/sultan-system-architecture.md).
|
||||
|
||||
## 🚀 Installation
|
||||
|
||||
> 🚧 **Hinweis:** Sultan befindet sich noch am Anfang der Entwicklung. Die folgenden Schritte zeigen, wie die Installation aussehen *wird* – Befehle und Flags können sich noch ändern.
|
||||
|
||||
### Voraussetzungen
|
||||
|
||||
- Go (aktuelle stabile Version)
|
||||
- Für den Ingress-Knoten: Traefik v3
|
||||
- Für Docker-Hosts: Zugriff auf `/var/run/docker.sock`
|
||||
|
||||
### Binary bauen
|
||||
|
||||
```bash
|
||||
git clone ssh://git@git.everdc.eu:10022/chmln-app-dev/sultan.git
|
||||
cd sultan
|
||||
go build -o sultan .
|
||||
sudo install -m 0755 sultan /usr/local/bin/sultan
|
||||
```
|
||||
|
||||
### Server starten (Ingress-Knoten)
|
||||
|
||||
```bash
|
||||
sultan server --data-dir=/var/lib/sultan
|
||||
```
|
||||
|
||||
Der Server lauscht auf `:8443` für Agents und auf `127.0.0.1:8080` für Traefik. Traefik bindest du über den HTTP-Provider an:
|
||||
|
||||
```bash
|
||||
--providers.http.endpoint=http://127.0.0.1:8080/v1/traefik-config
|
||||
--providers.http.pollInterval=3s
|
||||
```
|
||||
|
||||
### Agent verbinden (Backend-Host)
|
||||
|
||||
1. Auf dem Server mit `sultan token` einen Einladungs-Token erzeugen 🎟️
|
||||
2. Auf dem Backend-Host den Agent starten:
|
||||
|
||||
```bash
|
||||
sultan agent --server=https://ingress.example.com:8443 --token=<einladungs-token>
|
||||
```
|
||||
|
||||
Beim ersten Verbinden merkt sich der Agent den Fingerprint des Servers – ab dann läuft alles automatisch. 🎉
|
||||
|
||||
Fertige Docker-Compose-Beispiele für Ingress und Backend-Host findest du in der [Architektur-Doku](.ai/sultan-system-architecture.md#7-referenzkonfigurationen).
|
||||
Reference in new issue
Block a user