Skip to content

Netzwerk

Netzwerkarchitektur und Traffic-Flow von Janus.

graph TB
    subgraph Internet ["Internet"]
        Client["Client"]
        DNS["DNS Resolver"]
    end

    subgraph Firewall ["UFW Firewall"]
        Port80[":80 HTTP"]
        Port443[":443 HTTPS"]
        Port22[":22 SSH (rate-limited)"]
    end

    subgraph K3s ["K3s Cluster"]
        Ingress["ingress-nginx<br/>hostPort 80/443"]
        CertMgr["cert-manager"]
        subgraph Pods ["Pods"]
            App1["App 1"]
            App2["App 2"]
        end
    end

    Client -->|"*.janus.ciss.digital"| DNS
    DNS -->|"89.58.27.247"| Firewall
    Client -->|HTTPS| Port443
    Client -->|HTTP| Port80
    Port443 --> Ingress
    Port80 -->|"ACME Challenge"| Ingress
    Port22 -->|"Admin"| SSH["SSH Server"]
    Ingress -->|"Routing"| App1
    Ingress -->|"Routing"| App2
    CertMgr -->|"Zertifikate"| Ingress
PortDienstZugriff
22SSHRate-limited (fail2ban)
80ingress-nginx (HTTP)Offen (ACME + Redirect)
443ingress-nginx (HTTPS)Offen
6443K3s APINur lokal
  1. DNS löst *.janus.ciss.digital zu 89.58.27.247 auf
  2. UFW erlaubt Traffic auf Port 80/443
  3. ingress-nginx empfängt Traffic (hostPort)
  4. HTTP-Anfragen werden zu HTTPS weitergeleitet
  5. TLS-Terminierung in ingress-nginx
  6. Routing an entsprechende Pods basierend auf Host-Header
graph TD
    Ingress["Ingress<br/>Host-basiertes Routing"]

    subgraph TestNS ["Namespace: test"]
        TestSvc["Service: test<br/>ClusterIP"]
        TestPod["Pod: test"]
        TestSvc --> TestPod
    end

    Ingress -->|"test.janus.ciss.digital"| TestSvc

Jede App erhält eigene Subdomain und eigenes TLS-Zertifikat. Services nutzen ClusterIP (kein direkter externer Zugriff).