Zum Inhalt

Netzwerk und Kommunikation

Netzwerktopologie der Inovetra AI Platform

Übersicht der Netzwerkkommunikation, Ingress-Routing, Firewall-Anforderungen und TLS-Konfiguration.


Ingress-Routing

Der Ingress Controller empfängt alle externen HTTPS-Anfragen und leitet sie anhand des URL-Pfads an den entsprechenden Service weiter:

Pfad Ziel-Service Port Beschreibung
/ LibreChat Chat-Frontend und -Backend
/portal Customer Portal 443 Self-Service Admin-UI
/api/customer/* Customer API 8000 Plattform-Management-Backend
/api/rag/* RAG API 8443 RAG-Endpunkte
/api/connectors/* Connector Service 8000 Datenquellen-Synchronisation

Externe Ports (Firewall)

Die folgenden Ports müssen auf der VM-Firewall geöffnet sein:

Port Protokoll Richtung Zweck
80 TCP Inbound HTTP → HTTPS-Redirect
443 TCP Inbound HTTPS (Ingress Controller)
6443 TCP Inbound K8s API — nur Management-VPN

K8s API-Zugriff

Port 6443 darf ausschließlich über das Management-VPN erreichbar sein. Dieser Port darf niemals öffentlich zugänglich gemacht werden.


Interne Service-Kommunikation

Alle Services kommunizieren über Kubernetes-interne DNS-Namen. Das Format lautet:

<service-name>.<namespace>.svc.cluster.local:<port>

Beispiele:

Service Interner DNS-Name
Customer API inovetra-customer-api.inovetra-platform.svc.cluster.local:8000
RAG API inovetra-rag-api.inovetra-platform.svc.cluster.local:8443
PostgreSQL inovetra-postgres.inovetra-platform.svc.cluster.local:5432
MongoDB inovetra-mongodb.inovetra-platform.svc.cluster.local:27017
Qdrant inovetra-vectordb.inovetra-platform.svc.cluster.local:6333
Redis inovetra-redis.inovetra-platform.svc.cluster.local:6379
MinIO inovetra-minio.inovetra-platform.svc.cluster.local:9000
LiteLLM inovetra-llm-proxy.inovetra-platform.svc.cluster.local:4000
SearXNG inovetra-searxng.inovetra-platform.svc.cluster.local:8080 (nur bei aktiver Websuche)
web-scraper inovetra-web-scraper.inovetra-platform.svc.cluster.local:8080 (nur bei aktiver Websuche)

Internet-Egress bei aktivierter Websuche

Bei eingeschalteter Websuche von Inovetra AI stellen SearXNG (Suchanfragen an externe Suchmaschinen) und web-scraper (Abruf ausgewählter Webseiten) ausgehende Verbindungen ins Internet über Ports 80/443 her. Der web-scraper besitzt SSRF-Schutz und ist über NetworkPolicies abgesichert. Bei aktivierten Egress-Policies (networkPolicies.egress.enabled: true) müssen entsprechende Egress-Regeln vorhanden sein. Details: Websuche.


TLS-Konfiguration

Externes TLS

Externe TLS-Terminierung erfolgt am Ingress Controller. Zwei Optionen:

Methode Konfiguration
Let's Encrypt (automatisch) tls.letsencrypt.enabled: true — cert-manager stellt Zertifikate automatisch aus
Custom-Zertifikat Manuell als K8s Secret hinterlegt

Internes TLS

Bei aktiviertem TLS (tls.enabled: true, Standard) verwenden die meisten internen Service-zu-Service-Verbindungen bereits HTTPS (z.B. Ingress → Backend-Services, RAG API → Qdrant, Connector → RAG API). Zusätzliche TLS-Absicherung ist über folgende Parameter steuerbar:

Parameter Beschreibung Standard
tls.internal.enabled Erweiterte TLS-Absicherung für alle internen Services false
tls.verify Strikte TLS-Zertifikatsverifizierung für internen Traffic false

Empfehlung

Für Produktivumgebungen mit erhöhten Sicherheitsanforderungen sollte internes TLS aktiviert und eine interne CA (z. B. cert-manager Self-Signed CA) eingerichtet werden.


Network Policies

Kubernetes Network Policies sind standardmäßig aktiviert und schränken den erlaubten Netzwerkverkehr zwischen Pods ein:

Parameter Beschreibung Standard
networkPolicies.enabled Aktiviert Ingress Network Policies true
networkPolicies.egress.enabled Aktiviert Egress Network Policies false

Egress-Policies nicht ohne Vorbereitung aktivieren

Die Egress-Policies sind standardmäßig deaktiviert. Wenn Sie networkPolicies.egress.enabled: true setzen, ohne für jeden Service passende Egress-Regeln zu definieren, werden Services daran gehindert, ausgehende Verbindungen herzustellen. Dies führt zu Totalausfall der Plattform (DNS-Auflösung, API-Calls, Datenbankverbindungen).


DNS-Anforderungen

  • Die Kundendomain (z. B. ai.kunde.de) muss per DNS-A-Record auf die externe IP der VM zeigen
  • Der DNS-Eintrag muss konfiguriert sein, bevor Let's Encrypt-Zertifikate ausgestellt werden können (ACME HTTP-01 Challenge)
  • Die Domain wird in den Helm Values unter global.domain konfiguriert

Weiterführende Seiten