4.5 Architektur und Technologie

In der Semesterarbeit kommen eine Vielzahl von Tools und Technologien zum EiPnsatz.

arch_bigpicture

Kategorie Tool/Technologie
Betriebssystem Talos Linux (Immutable Linux OS for K8s)
Hardware TuringPi 2
Distributed Storage Solution Longhorn
Source Control Git hosted on GitHub
CI/CD GitHub Actions
GitOps ArgoCD
Paketmanagement Helm
Selfhosted cloud Solution Nextcloud

Hardware

Der TuringPi 2 ist eine modulare Cluster-Plattform, die es ermöglicht, mehrere Compute Module zu einem Cluster zu verbinden. In dieser Konfiguration wird der TuringPi 2 Cluster mit den folgenden Komponenten ausgestattet:

  • 4x RK1 8GB RAM: Diese Compute-Module bieten ausreichend Speicher und Rechenleistung für die Ausführung von Kubernetes-Workloads.
  • 4x 2TB NVMe: Diese NVMe-Festplatten bieten schnellen und zuverlässigen Speicher für die verteilte Speicherlösung Longhorn.

Kubernetes controlplane & worker

In diesem Cluster sind alle Nodes als Worker konfiguriert. Die Control-Plane-Komponenten sind auf den Nodes node01 und node02 installiert, um eine hohe Verfügbarkeit zu gewährleisten.

Node Rolle
node01 Control-Plane, Worker
node02 Control-Plane, Worker
node03 Worker
node04 Worker

Logical Diagram

Das folgende Diagramm zeigt den hardwaretechnischen und physikalischen Aufbau des Clusters.

sem04-network

GitOps Flow

Der GitOps-Flow beschreibt den Prozess, bei dem Änderungen am Code automatisch in die Produktionsumgebung übernommen werden. Entwickler nehmen Code-Änderungen vor und erstellen einen Pull Request im GitHub Repository. Nach einer erfolgreichen Code-Überprüfung wird der Code in den Main Branch gemerged. GitHub Actions übernimmt dann den Build-Prozess und stellt sicher, dass der Code fehlerfrei ist. ArgoCD synchronisiert automatisch den xwgewünschten Zustand aus dem Git-Repository mit dem Kubernetes-Cluster und stellt sicher, dass alle Änderungen konsistent und nachvollziehbar sind. Das ArgoCD Dashboard bietet eine Übersicht über den aktuellen Status und ermöglicht es Entwicklern, Feedback zu erhalten und den Zustand ihrer Anwendungen zu überwachen.

flowchart TD;
    A[Entwickler] -->|Code-Änderung| B[GitHub Repository]
    B -->|Pull Request| C[Code Review]
    C -->|Merge| D[Main Branch]
    D -->|Build| H[GitHub Actions]
    H -->|Automatischer Sync| E[ArgoCD]
    E -->|Synchronisation| F[Kubernetes Cluster]
    F -->|Status| G[ArgoCD Dashboard]
    G -->|Feedback| A[Entwickler]