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.