#import "../template.typ": *

Grundsätzlich können wir sagen, dass unser Projekt erfolgreich verlaufen ist. Die Planung und Koordinierung im Team hat immer gut funktioniert und für aufgetretene Probleme wurde immer eine Lösung gefunden. Die Applikation ist aus dem Internet erreichbar und erfüllt ihre Aufgabe.

Dieser Challenge Task hat uns einen Einblick in neue Technologien gegeben, darunter Kubernetes, GitLab CI/CD, Patroni, Golang und Vue.js. Während die meisten von uns in diesen Bereichen die ersten Schritte gemacht haben, konnten wir aber auch in vertrauten Gebieten weitere Erfahrungen sammeln.

Während der Umsetzung dieses Projekts wurden wir mit manchen Problemen konfrontiert. Da der Kubernetes-Cluster in einer produktiven Infrastruktur eingerichtet wurde, waren bereits diverse Dienste gehostet. Die Zugriffe über HTTPS werden durch einen NGINX Reverse-Proxy geregelt, welcher aufgrund des DNS-Namen im Request die Anfrage an die richtige Ressource weiterleitet. Um dennoch die Konfiguration des Kubernetes-Clusters und der benötigten HA IPs und Load-Balancer wie im produktiven Umfeld darzustellen, wurde nicht auf die restlichen Funktionalitäten von NGINX zurückgegriffen.

Eine andere Frage, die wir uns im Laufe der Umsetzung stellen mussten, war, ob wir die API ins Internet stellen, damit der User die Anfrage an die API sendet, oder ob alles Cluster-intern geschieht. Zweiteres würde aber bedeuten, dass die Applikation komplett auf dem Server gerendert werden muss. Da wir bereits an der Umsetzung des Frontends dran waren und die Umstellung in eine Server-Side Rendered Applikation einen deutlichen Mehraufwand bedeutet hätte, haben wir die API öffentlich gemacht. Dies hatte dann zur Folge, dass wir eine Form von Authentifizierung ins Backend einbauen mussten. Letzten Endes konnten wir aber auch diese Hürde meistern mithilfe von Traefik Basic Auth.

Zu Beginn haben wir die High-Availability IP des K3s-Clusters über MetalLB und das Kubernetes-interne Netzwerk über Cilium bereitgestellt, weil uns nicht bewusst war, dass Cilium die Funktionalität von MetalLB übernehmen kann. Um die Komplexität etwas zu verringern, haben wir gegen Ende die HA IP ebenfalls über Cilium bereitgestellt, wodurch MetalLB überflüssig wurde.

Wir sind mit unserer finalen Infrastruktur, Applikation und der generellen Umsetzung definitiv zufrieden.