Skip to content

Systemarchitektur

Überblick über die komplette Systemarchitektur von Janus.

graph TB
    subgraph Internet ["Internet"]
        Client["Client / Browser"]
        DNS["DNS<br/>*.janus.ciss.digital"]
    end

    subgraph Janus ["Janus (89.58.27.247)"]
        subgraph Security ["Sicherheit"]
            UFW["UFW Firewall"]
            F2B["fail2ban"]
        end

        subgraph K8s ["K3s Cluster"]
            Ingress["ingress-nginx<br/>:80 / :443"]
            CertMgr["cert-manager"]
            Flux["Flux Agent"]
            subgraph Namespaces ["Namespaces"]
                Test["test<br/>(Test-App)"]
                Prod["(weitere Apps)"]
            end
        end
    end

    subgraph External ["Externe Dienste"]
        GitLab["GitLab<br/>gitlab.ciss.de"]
        LE["Let's Encrypt<br/>ACME HTTP-01"]
    end

    Client --> DNS
    DNS -->|Wildcard| UFW
    UFW --> Ingress
    Ingress --> Test
    Ingress --> Prod
    CertMgr -->|Zertifikate| Ingress
    CertMgr -->|HTTP-01 Challenge| LE
    Flux -->|pullt Konfig & Images| GitLab
    F2B -.-> UFW

Eingangspunkt für allen HTTP/HTTPS-Traffic. Läuft mit hostPort auf 80/443 (Traefik ist deaktiviert).

  • Namespace: ingress-nginx
  • Deployment: Helm Chart
  • Ports: hostPort 80 (HTTP), 443 (HTTPS)
  • TLS-Terminierung: Ja

Automatische TLS-Zertifikate über Let’s Encrypt.

  • Namespace: cert-manager
  • Deployment: Helm Chart (CRDs aktiviert)
  • Challenge-Typ: HTTP-01
  • Cluster Issuer: letsencrypt-prod (Staging: letsencrypt-staging)
  • E-Mail: a.willner@ciss.de

GitOps-Operator für automatische Deployments aus GitLab.

  • Quelle: GitLab-Repositories
  • Synchronisation: Automatisch bei Änderungen
  • Namespace: flux-system
sequenceDiagram
    participant Dev as Entwickler
    participant GL as GitLab
    participant Flux as Flux
    participant K3s as K3s
    participant LE as Let's Encrypt
    participant User as Nutzer

    Dev->>GL: Code push / Image build
    GL->>Flux: Neue Revision erkannt
    Flux->>GL: Pull Konfig + Image
    Flux->>K3s: Deployment aktualisieren
    K3s->>LE: HTTP-01 Challenge (TLS)
    LE-->>K3s: Zertifikat ausgestellt
    User->>K3s: HTTPS-Anfrage
    K3s-->>User: Antwort (verschlüsselt)