Systemarchitektur
Überblick über die komplette Systemarchitektur von Janus.
High-Level-Architektur
Section titled “High-Level-Architektur”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
Komponenten
Section titled “Komponenten”ingress-nginx
Section titled “ingress-nginx”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
cert-manager
Section titled “cert-manager”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
Datenfluss
Section titled “Datenfluss”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)