Nane Kratzke

Thesis:

Entwicklung einer Web-UI für IaC-basierte Deployments von MicroK8s-Clustern

Published: 28 Mar 2021 (latest update: 12 Apr 2021)
Type: Bachelor (B. Sc.)
State: ongoing
Author: Antonia Berg
Study: Informatik
Language: Deutsch
Institute: myLab

Die Container-Orchestrierungs Plattform Kubernetes erfreut sich zunehmender Beliebheit und wird u.a. vermehrt in Webtechnologie-, Datenbank- oder Cloud-Computing-Lehrveranstaltungen der TH Lübeck eingesetzt. Vermehrt fragen daher Studierende an, ob Kubernetes-Cluster aus Praktika auch im Rahmen eigener privater Projekte oder Gründungsideen genutzt werden können. Dies kann meist nicht realisiert werden und es wird zumeist auf die Möglichkeit verwiesen, solche Cluster in Public Cloud Infrastrukturen zu deployen.

Obwohl leichtgewichtige Kubernetes-Distributionen wie MicroK8s und minikube zwar das Deployment von Single-Node-“Clustern” erheblich erleichtern, bleibt die Lernkurve zum Aufsetzen von Multi-Node Kubernetes-Clustern weiterhin steil. Um Studierenden und anderen Interessierten einen einfacheren Einstieg zu ermöglichen, soll in dieser Arbeit daher untersucht werden, inwiefern Infrastructure as Code (IaC)-basierte Automatisierungen, die bspw. bereits in Praktika zum automatisierten Aufsetzen von Clustern für Kurse in vSphere-Virtualisierungsumgebungen eingesetzt werden, auch für Einzelpersonen und Public Cloud Provider wie Amazon Web Services (AWS), Azure und Google Cloud komfortabel mittels eines Web-UI nutzbar gemacht werden können.

Hierzu ist eine übersichtliche und minimale Web-UI inkl. Deployment-Backend-System zu konzipieren, die es Nutzern ermöglicht, Multi-Node Kubernetes Cluster auf MicroK8s-Basis bei Public-IaaS Providern einfach und schnell aufsetzen zu können. Der Nutzer soll hierzu über eine Web-UI

  • einen Public IaaS-Provider (aus einer Liste unterstützter Provider) wählen können (inkl. Angabe entsprechender Provider-spezifischer Access Credentials),
  • einen Cluster definieren können (Deployment-Region, Anzahl an VMs, Instanztyp, SSD/HDD-Größe),
  • das Deployment starten können,
  • sowie die geheime Kubeconfig-Datei eines erzeugten Kubernetes-Clusters herunterladen/kopieren können.
  • Mit Angabe einer geheimen Kubeconfig-Datei soll ein Nutzer einen bestehenden Cluster vergrößern oder verkleinern sowie löschen/terminieren können.

Der Deployment-Service soll als Open-Access Service ohne Registrierung oder Nutzerverwaltung konzipiert werden. Die Identifizierung einmal deployter Cluster soll einzig und allein über die geheime Kubeconfig-Datei erfolgen. Die begründete Auswahl einer geeigneten Backend-IaC-Lösung (wie bspw. Terraform o. ähnl.) ist Gegenstand der Arbeit. Das Deployment-Backend soll konzeptionell beliebige Public IaaS-Cloud-Provider mittels “Plugins” unterstützen. Die Erweiterbarkeit der Lösung für beliebige IaaS-Provider ist an mindestens zwei Providern wie bspw. AWS, Azure oder Google Cloud nachzuweisen. Die Lösung soll in Form eines Helm-Packages bereitgestellt und in beliebigen Kubernetes-Clustern installierbar sein.

Die Erkenntnisse sollen mittels eines funktionsfähigen Prototypen implementiert, validiert sowie in einer Abschlussarbeit geeignet dokumentiert werden.

Zur Föderung der Cloud-native Community und im Sinne des Open Source Gedankens sollte die/der Autor:in anstreben, diese Lösung als Open Source Projekt im Anschluss der Arbeit der Allgemeinheit zur Verfügung zu stellen und über die Abschlussarbeit hinaus als Open Source Projekt fortzuführen.