[Epic] Kubernetes als Deployment Plattform
Das Deployment der Services soll von den Hetzner VMs auf Kubernetes migriert werden. Wir erhoffen uns dadurch, dass wir die Services flexibler deployen können (z. B. Branch-Deployment). Die Tools und Eigenentwicklungen für die Plattform sollten so ausgewählt und entwickelt werden, dass sie mit Hinsicht auf die Cloudausschreibung möglichst wenig Änderungen für die Weiterverwendung benötigen. Bis zur Cloudausschreibung soll ein Kubernetes Cluster von der FjD angeschafft werden. Auf dem Cluster sollen von der FjD keine weiteren Services installiert werden.
Folgende Punkte sollten wir für die Plattform betrachten:
Evaluierung des Deploymentverfahrens
Anforderung an das Deployment:
- Deployment über CI/CD Pipeline
- Branch Deployments sind möglich
Folgende Tools könnte man dafür verwenden:
- Flux
- ArgoCD
- Terraform
Evaluierung und Deployen einer Backuplösung
Anforderungen an die Backuplösung:
- K8s State wird gebackuped
- K8s persistent Volumes werden gebackuped
- Datenbank Backups für Datenbank PODs sind möglich
- Backups müssen extern abgelegt werden
Evaluierung und Deployen einer Monitoring, Alerting und Logginglösung
Anforderung an das Monitoring:
- Monitoring ist über eine Weboberfläch erreichbar
- Authentisierung ist über OIDC Anbindung möglich
- K8s Mechanismen werden unterstützt (Metrics)
Anforderung an das Logging:
- Logging kann zentral gesammelt werden
Anforderungen an das Alerting:
- Alerting kann automatisch Tickets in einem Ticketsystem erstellen
- Alerting kann Nachrichten an Teams, E-Mail verschicken
Evaluierung einer Secret Management Lösung
Anforderung an das Secret Management
- Secrets sind verschlüsselt im Git eingecheckt
- Übertragung an K8s erfolgt verschlüsselt
- Werden zur Laufzeit entschlüsselt
- Kann eine K8s interne oder externe Lösung sein (Vault)
Evaluierung einer Usermanagement Lösung für Zugriff auf K8s
Anforderungen an das Usermanagement
- Anbindung per OIDC
- Dev Zugriff soll eingeschränkt werden können
Evaluierung eines Ingress-Controllers
Anforderung an den Ingress-Controller
- SSL Zertifikate sollen automatisch für jede externe URL generiert werden
- DNS Einträge für neue externe Namen sollen automatisch eingerichtet werden
- HTTP Requests sollen auf HTTPS redirected werden