3.1 Anforderungen
In diesem Abschnitt werden die Anforderungen an die Umgebung und Infrastruktur beschrieben, die zur Unterstützung der Anwendung umgesetzt wurden. Der Fokus liegt auf den implementierten funktionalen und nicht-funktionalen Anforderungen.
Funktionale Anforderungen
1. Kubernetes-Cluster
-
Bereitstellung: Der Kubernetes-Cluster wird mit Terraform und k0s eingerichtet, um eine konsistente und wiederholbare Infrastruktur bereitzustellen.
-
Orchestrierung: Die Microservices der Anwendung werden im Cluster orchestriert, um eine effiziente Verwaltung der Ressourcen zu gewährleisten.
2. CI/CD-Pipeline
-
GitOps-Prinzip: ArgoCD wird verwendet, um die CI/CD-Pipeline zu implementieren. Änderungen im Git-Repository werden automatisch in den Cluster integriert.
-
Automatisierung: Automatische Deployments und Updates der Anwendung erfolgen ohne manuelle Eingriffe.
3. Externer Zugriff
-
Cloudflare Tunnel: Der Zugriff auf interne Dienste erfolgt sicher über Cloudflare Tunnel. Dies ermöglicht eine verschlüsselte Verbindung ohne direkte Portfreigabe.
-
MetalLB: MetalLB stellt die Load-Balancing-Funktion für externe IPs bereit, um den Zugriff auf Services im Cluster zu ermöglichen.
4. Speicherdienste
-
Amazon S3: Bilder und andere Dateien werden in Amazon S3 gespeichert, um eine skalierbare und zuverlässige Speicherlösung bereitzustellen.
-
Amazon Rekognition: Bildanalysen erfolgen über Amazon Rekognition, um spezifische Funktionen der Anwendung zu unterstützen.
Nicht-funktionale Anforderungen
1. Skalierbarkeit
-
Horizontale Skalierung: Kubernetes ermöglicht die horizontale Skalierung von Services basierend auf der Nachfrage.
-
Automatische Skalierung: Autoscaling-Mechanismen können für Services aktiviert werden, um die Verfügbarkeit bei Lastspitzen sicherzustellen.
2. Sicherheit
-
TLS-Verschlüsselung: Alle Verbindungen innerhalb des Clusters und nach außen sind durch TLS gesichert.
-
Secrets-Management: Kubernetes Secrets werden für die sichere Speicherung sensibler Informationen wie API-Schlüssel verwendet.
3. Verfügbarkeit
- Hochverfügbarkeit: Durch den Einsatz von Kubernetes und MetalLB wird die Verfügbarkeit der Anwendung gewährleistet, auch bei Ausfällen einzelner Komponenten.
4. Effizienz
- Ressourcennutzung: Die Infrastruktur ist so konfiguriert, dass Ressourcen effizient genutzt und Kosten minimiert werden.