7. Integrationstests

Um sicherzustellen, dass sämtliche Microservices in dieser Semesterarbeit zusammen funktionieren, werden Integrationstests durchgeführt. Diese Tests werden als manuelle Tests ausgeführt. Ziel dieser Tests ist es, die technische Funktionsfähigkeit des Kubernetes-Cluster zu bestätigen und zu demonstrieren, dass die festgelegten Ziele dieser Arbeit erreicht wurden. Im Rahmen dieser Tests wurden folgende Funktionalitäten überprüft:

  • Kubernetes Cluster
  • Connectivity
  • Longhorn
  • Cilium
  • Cert-manager
  • Nextcloud

Test-001 - Kubernetes Setup

Testfall-001 k8s_setup
Ziel: Der K8s-Cluster wurde erfolgreich aufgesetzt und ist mittels kubectl erreichbar
Beschreibung: Befehl auf der Konsole ausführen: kubectl get nodes
Soll-Wert: Sämtliche Nodes haben den Status READY
Ist-Wert: Alle Nodes haben den Status READY
test-001

Test-002 - Distributed Storage

Testfall-002 longhorn_setup
Ziel: Longhorn ist installiert und es kann auf das UI zugegriffen werden.
Beschreibung: Es soll ein Portworward geöffnet werden mit folgendem Befehl kubectl port-forward svc/longhorn-frontend -n longhorn-system 8081:80 --insecure-skip-tls-verify und nachher mit dem Browser auf die URL zugreiffen
Soll-Wert: Das Longhorn UI wird angezeigt und es erscheinen keine Fehler
Ist-Wert: Der Zugriff auf das UI klappt
test-002

Test-003 - Cilium Ingress

Testfall-003 cilium_ingress
Ziel: Der Cilium Ingress Controller ist via eine Externe IP erreichbar.
Beschreibung: Mittels folgendem Befehl die extene IP des services herausfinden und mittels curl versuchen darauf zuzugreiffen: k get svc -n kube-system
Soll-Wert: Es wird erwartet, dass Curl die Rückmeldung gibt, dass die Verbindung zurückgeset wurde vom peer. Die Verbindung funktioniert, nur kann der Host-Header zu keinem Service zugewiesen werden.
Ist-Wert: curl: (35) Recv failure: Connection reset by peer

Test-004 - ArgoCD

Testfall-004 argocd_sync
Ziel: ArgoCD verwaltet die Ressourcen im Kubernetes-cluster.
Beschreibung: Mittels Webbrowser soll auf ArgoCD zugegriffen werden. Es soll den Sync Status der ArgoCD-Applikationen überprüft werden.
Soll-Wert: Sämtliche Applikationen sind im Status Healthy und Synced
Ist-Wert: Alle ArgoCD-Applikationen sind Healthy und Synced
test-004

Test-005 - Nextcloud

Testfall-005 Nextcloud
Ziel: Nextcloud wurde erfolgreich installiert und es kann darauf zugegriffen werden.
Beschreibung: Mit einem Webbrowser auf Nextcloud zugreifen und sich mit den Anmeldedaten aus dem Kubernetes Secret nextcloud-secret anmelden
Soll-Wert: Login funktioniert.
Ist-Wert: Anmeldung erfolgreich.
test-005

Test-006 - Cert Manager

Testfall-006 certManager_letsEncrypt
Ziel: Der CertManager stellt vertrauenswürdige Zertifikate mittels Let’s Encrypt aus.
Beschreibung: Es soll folgenden Curl Befehl ausgeführt werden curl -vI drive.k8s.domain.local
Soll-Wert: issuer: C=US; O=Let's Encrypt; CN=R10
Ist-Wert: Der issuer ist korrekt und ein Webbrowser zeigt das Zertifikat als valid an.
test-006

Test-007 - Renovate Bot

Testfall-007 renovate
Ziel: Der Renovate Bot eröffnet eine Pull-Request, wenn eine neue Version einer Helm-Chart verfügbar ist.
Beschreibung: Deployen einer alten Version von Nextcloud im K8s-Cluster via ArgoCD
Soll-Wert: Ressourcen werden erstellt. Nach einiger Zeit eröffnet Renovate ein Pull-Request, mittels welchem er Changes mergen will mit den neuen Version.
Ist-Wert: Renovate erstellt einen Pull-Request.
test-007

Fazit

Die Testergebnisse bestätigen eindrucksvoll die Funktionsfähigkeit aller in dieser Arbeit implementierten Funktionalitäten. Sie zeigen, dass der Kubernetes Cluster zusammen mit der Distributed Storage Solution vollständig einsatzbereit und effektiv ist.