== Techstack

Ziel ist es, eine hochverfügbare, dockerisierte Applikation zu erstellen. Dies wird mit einem Kubernetes-Cluster erzielt. Die einzelnen Nodes werden für dieses Projekt auf einem VMware-ESXi Hypervisor virtualisiert und laufen mit Ubuntu als Betriebssystem. Die hochverfügbare IP und das interne Netzwerk des Clusters wird durch das Cilium-Plugin bereitgestellt.

Um die Datenbank sowohl persistent als auch hochverfügbar zu machen, wird ein Patroni-Cluster verwendet. Dieser basiert auf PostgreSQL und der Cluster wird über die selben Nodes gespannt, die auch den Kubernetes-Cluster bilden. Die Anfragen an die Datenbank werden durch HAProxy an den Leader des Clusters weitergeleitet.

Die Applikation wird durch eine GitLab CI/CD Pipeline gebaut und deployed. Als Base-Image der Container wird Alpine Linux verwendet. Das Frontend wird mittels Vue.js umgesetzt, im Backend wird Golang eingesetzt. Traefik verwaltet die Authentifizierung und leitet die Anfragen basierend auf dem Pfad an den jeweiligen Pod weiter. 

#figure(
  image("../Images/01/techstack.png", width: 90%),
  caption: [ Visualisierung Techstack + Aufbau ]
)