Verwendete Technologien
Überblick
In diesem Abschnitt werden die wichtigsten Technologien vorgestellt, die für die Umstellung eines Galerieverwaltungssystems auf Kubernetes und die Einrichtung einer CI/CD-Pipeline verwendet werden. Die Auswahl erfolgte basierend auf ihrer Effizienz und Eignung für cloud-basierte Anwendungen.
Kubernetes (k0s)
Was ist Kubernetes?
Kubernetes ist eine Software, die es ermöglicht, viele kleine Programme, sogenannte Container, zu verwalten. In diesem Projekt wird eine spezielle Version namens k0s verwendet, die einfach zu bedienen ist und gut skaliert.
Warum wird Kubernetes benutzt?
-
Um sicherzustellen, dass alle Teile des Galerieverwaltungssystems reibungslos zusammenarbeiten.
-
Um die Dienste auf verschiedene Server zu verteilen, damit das System stabil bleibt.
-
Um mit MetalLB eine einfache Möglichkeit für die Lastverteilung einzurichten.
Alternative
- OpenShift: Eine erweiterte Kubernetes-Distribution, die umfangreiche Funktionen für Unternehmen bietet, darunter integrierte CI/CD-Pipelines und Sicherheitsmechanismen. Sie eignet sich besonders für große und komplexe Umgebungen.
MAAS (Metal as a Service)
Was ist MAAS?
MAAS hilft dabei, physische Server wie in einer Cloud zu verwalten. Man kann sich das vorstellen wie eine private Cloud, die auf echter Hardware läuft.
Einsatz im Projekt
-
MAAS stellt die Basis für die Server, auf denen Kubernetes läuft.
-
Es sorgt dafür, dass die physische Infrastruktur leicht eingerichtet und verwaltet werden kann.
-
Zusammen mit Terraform wird die Einrichtung automatisiert.
Alternative
- Azure AKS: Ein vollständig verwalteter Kubernetes-Dienst von Microsoft Azure, der eine einfache Bereitstellung und Verwaltung von Clustern in der Cloud ermöglicht.
CI/CD-Tools: ArgoCD
Was ist ArgoCD?
ArgoCD hilft dabei, Software automatisch bereitzustellen und sicherzustellen, dass alles auf dem neuesten Stand bleibt. Es folgt dem Prinzip “GitOps”.
Einsatz im Projekt
-
ArgoCD installiert neue Versionen der Software direkt aus dem GitHub-Repository.
-
Es stellt sicher, dass die Software immer mit den vorgegebenen Einstellungen übereinstimmt.
Alternative
- FluxCD: Ein weiteres GitOps-Tool, das ähnliche Funktionen bietet und ebenfalls gut mit Kubernetes integriert werden kann.
Versionskontrolle: GitHub
Was ist GitHub?
GitHub ist eine Plattform, auf der Code gespeichert und organisiert wird. Entwickler können hier zusammenarbeiten und Änderungen verfolgen.
Einsatz im Projekt
-
Speicherung des gesamten Projektcodes.
-
Verknüpfung mit ArgoCD, um neue Softwareversionen automatisch bereitzustellen.
Alternative
- GitLab: Eine Plattform mit ähnlichen Funktionen wie GitHub, die zusätzlich integrierte CI/CD-Funktionen bietet.
Infrastruktur-as-Code: Terraform
Was ist Terraform?
Terraform ist ein Tool, das hilft, Server und andere Ressourcen automatisch bereitzustellen und zu konfigurieren.
Einsatz im Projekt
-
Terraform richtet die MAAS-Server und die Kubernetes-Umgebung ein.
-
Es sorgt dafür, dass alle Einstellungen wiederholt genutzt werden können.
Alternative
- Ansible: Ein Tool für Infrastrukturautomatisierung, das auf deklarativen Konfigurationsansätzen basiert und ebenfalls für die Bereitstellung geeignet ist.
Cluster-Management: OpenLens
Was ist OpenLens?
OpenLens ist ein Werkzeug, mit dem man Kubernetes-Cluster einfacher verwalten und überwachen kann.
Einsatz im Projekt
-
OpenLens hilft dabei, alle Programme und Ressourcen im Kubernetes-Cluster zu visualisieren.
-
Es erleichtert die Überwachung und Verwaltung des Systems.
Alternative
- Lens: Die originale Version, von der OpenLens abgeleitet wurde, bietet ähnliche Funktionen und eine große Community-Unterstützung.