2
0

minor changes

This commit is contained in:
2026-06-08 15:02:14 +02:00
parent 9b23d83872
commit 1a11a8fb19
2 changed files with 18 additions and 8 deletions

View File

@@ -10,6 +10,7 @@
\usepackage[a4paper,left=25mm,right=35mm,top=25mm,bottom=30mm]{geometry} \usepackage[a4paper,left=25mm,right=35mm,top=25mm,bottom=30mm]{geometry}
\usepackage{parskip} \usepackage{parskip}
\usepackage{comment} %dies ist ein kommentar \usepackage{comment} %dies ist ein kommentar
\usepackage{todonotes}
% tableau % tableau
\usepackage{booktabs} \usepackage{booktabs}
\usepackage{multirow} % table stuff \usepackage{multirow} % table stuff
@@ -82,7 +83,7 @@
\vfill \vfill
Ein Praxisbericht im Rahmen der Praxisphase\\
Ein wissenschaftlicher Bericht im Rahmen der Praxisphase\\ Ein wissenschaftlicher Bericht im Rahmen der Praxisphase\\
an der htw saar im Studiengang Praktische Informatik\\ an der htw saar im Studiengang Praktische Informatik\\
in Kooperation mit der psb intralogistics GmbH in Kooperation mit der psb intralogistics GmbH
@@ -159,7 +160,7 @@ Mein Arbeitsplatz befindet sich im Herz der PA INF GUI. Während der Name auf al
Jedes der zuvor genannten Module wurde innerhalb der letzten Jahre in Container-Images gebündelt und mit Containerverwaltungstools wie Docker oder Podman, als auch durchgeführt, um das Deployment weitestgehend zu vereinfachen und Kunden-infrastruktur-unabhängiger zu gestalten. Trotzdessen bleiben ziemlich alle gennanten Probleme bestehen, da sie über die Containerisierung hinaus gehen. Jedes der zuvor genannten Module wurde innerhalb der letzten Jahre in Container-Images gebündelt und mit Containerverwaltungstools wie Docker oder Podman, als auch durchgeführt, um das Deployment weitestgehend zu vereinfachen und Kunden-infrastruktur-unabhängiger zu gestalten. Trotzdessen bleiben ziemlich alle gennanten Probleme bestehen, da sie über die Containerisierung hinaus gehen.
Mein Aufgabenbereich, das Evaluieren von Kubernetes als Containerorchestrierung für den Software-Stack der psb, ist keine klassische Aufgabe im Bezug auf die Nutzeroberfläche, ist in der Firmenstruktur trotzdem dieser Abteilung untergliedert. Kubernetes führt im Kern, ähnlich wie Docker und Podman, Container aus, geht jedoch weit über das Ausführen sowie Verwalten von diesen hinaus und wird daher aus als Orchestration bezeichnet. Lastverteilung, Selbstheilung, Ausfallsicherheit, Koordination, Skalierungsmöglichkeiten beschreiben die Möglichkeiten, die Kubernetes im Kern bietet. Kubernetes ist jedoch leicht erweiterbar, wodurch auch Versionierung und Rollbacking über Helm, automatisches Deployment durch FluxCD und HTTP Routing über GatewayAPI abgedeckt sind. \textbf{TODO: POTENTIELLE SECRET-INJECTION MIT ESO} Da die Firma aktuell noch keine Forschung über Kubernetes außer dem Fakt, dass es existiert und die aktuelle Problemlage Lösen könnte, betrieben hat sollte dies meine Aufgabe werden. Das Ziel ist es, einen möglichst automatisch deploybares "Walking Skeleton" aus dem aktuellen Basisprojekt zu gestalten, und dabei die verschiedenen Funktionieren und Erweiterungen die Kubernetes liefert, zu analysieren wie diese funktionieren als auch zu überprüfen, ob diese konkret für das Projekt Sinn machen. Darüber hinaus soll geprüft werden, inwieweit Kubernetes eine Integration von Windows-basierten Systemen ermöglicht und welche technischen Einschränkungen dabei bestehen. Mein Aufgabenbereich, das Evaluieren von Kubernetes als Containerorchestrierung für den Software-Stack der psb, ist keine klassische Aufgabe im Bezug auf die Nutzeroberfläche, ist in der Firmenstruktur trotzdem dieser Abteilung untergliedert. Kubernetes führt im Kern, ähnlich wie Docker und Podman, Container aus, geht jedoch weit über das Ausführen sowie Verwalten von diesen hinaus und wird daher aus als Orchestration bezeichnet. Lastverteilung, Selbstheilung, Ausfallsicherheit, Koordination, Skalierungsmöglichkeiten beschreiben die Möglichkeiten, die Kubernetes im Kern bietet. Kubernetes ist jedoch leicht erweiterbar, wodurch auch Versionierung und Rollbacking über Helm, automatisches Deployment durch FluxCD und HTTP Routing über GatewayAPI, Datenbankprovisionierung über CloudNativePG und Secret Injection mit External Secrets Operator abgedeckt sind. Da die Firma aktuell noch keine Forschung über Kubernetes außer dem Fakt, dass es existiert und die aktuelle Problemlage Lösen könnte, betrieben hat, sollte dies meine Aufgabe werden. Das Ziel ist es, einen möglichst automatisch deploybares "Walking Skeleton" aus dem aktuellen Basisprojekt zu gestalten, und dabei die verschiedenen Funktionieren und Erweiterungen die Kubernetes liefert, zu analysieren wie diese funktionieren als auch zu überprüfen, ob diese konkret für das Projekt Sinn machen. Darüber hinaus soll geprüft werden, inwieweit Kubernetes eine Integration von Windows-basierten Systemen ermöglicht und welche technischen Einschränkungen dabei bestehen.
Die gewonnenen Erkenntnisse dienen als Entscheidungsgrundlage für eine mögliche Migraton der bestehenden Systemarchitektur hin zu einer Kubernetes-basierten Lösung. Die gewonnenen Erkenntnisse dienen als Entscheidungsgrundlage für eine mögliche Migraton der bestehenden Systemarchitektur hin zu einer Kubernetes-basierten Lösung.
@@ -175,10 +176,13 @@ Diese Funktionsweisen und Charakteristiken werden im Firmeninternen Confluence-B
\subsection{Distribution} \subsection{Distribution}
Initial wurde Forschung über die Funktionsweise von Kubernetes unternommen, da weder meine Betreuer, noch ich Wissen in diesem Bereich hatten. Dabei fiel zuerst Augenmerk darauf, dass es im Gegensatz zu Docker oder Podman nicht \glqq{}ein\grqq{} Kubernetes gibt, sondern verschiedene Distributionen\cite{distroList}, ähnlich wie bei Linux. Da die Logikcontroller der psb direkt im Lager On-Premise laufen, lassen sich schnell viele der Cloud-basierten Lösungen wie AWS EKS, Azure AKS oder Google GKE wegfiltern. Übrig bleiben die On-Premise oder Edge-Computing Distributionen. Diese Unterscheiden sich auch ähnlich wie Linux-Distributionen weniger darin, welche Software laufen kann, sondern in dem Standardumfang und bestimmten Unique Selling Points, wie einem einfachen Installationsprozess oder hohem Compliance-Grad out-of-the-box. Kandidaten sind Rancher k3s, eine Edge-Compute-Distribution mit Fokus auf Hauptspeichereffizienz auf Kosten einiger High-Availability-Funktionen, welche mit einem Befehl installierbar ist\cite{distroK3s}, Rancher RKE2, einer Distribution mit Fokus auf hohen Sicherheitsstandards, Compliance und Enterprise-Support\cite{distroRKE2}, RedHat OpenShift, eine allumfassende Plattform mit Kubernetes im Kern welche GitOps, CI/CD Pipelines, Infrastrukturmanagement, Monitoring und Enterprise-Support umfässt\cite{distroOpenShift}, OKD, die Communitygetriebene Version von OpenShift ohne Enterprise-Support\cite{distroOKD} und zuletzt kubeadm\cite{distroKubeadm}, welches den minimalen Kern von Kubernetes deployt und den Rest der Konfiguration dem Nutzer überlasst. Initial wurde Forschung über die Funktionsweise von Kubernetes unternommen, da weder meine Betreuer, noch ich Wissen in diesem Bereich hatten. Dabei fiel zuerst Augenmerk darauf, dass es im Gegensatz zu Docker oder Podman nicht \glqq{}ein\grqq{} Kubernetes gibt, sondern verschiedene Distributionen\cite{distroList}, ähnlich wie bei Linux. Da die Logikcontroller der psb direkt im Lager On-Premise laufen, lassen sich schnell viele der Cloud-basierten Lösungen wie AWS EKS, Azure AKS oder Google GKE wegfiltern. Übrig bleiben die On-Premise oder Edge-Computing Distributionen. Diese Unterscheiden sich auch ähnlich wie Linux-Distributionen weniger darin, welche Software laufen kann, sondern in dem Standardumfang und bestimmten Unique Selling Points, wie einem einfachen Installationsprozess oder hohem Compliance-Grad out-of-the-box. Kandidaten sind Rancher k3s, eine Edge-Compute-Distribution mit Fokus auf Hauptspeichereffizienz auf Kosten einiger High-Availability-Funktionen, welche mit einem Befehl installierbar ist\cite{distroK3s}, Rancher RKE2, einer Distribution mit Fokus auf hohen Sicherheitsstandards, Compliance und Enterprise-Support\cite{distroRKE2}, RedHat OpenShift, eine allumfassende Plattform mit Kubernetes im Kern welche GitOps, CI/CD Pipelines, Infrastrukturmanagement, Monitoring und Enterprise-Support umfässt\cite{distroOpenShift}, OKD, die Communitygetriebene Version von OpenShift ohne Enterprise-Support\cite{distroOKD} und zuletzt kubeadm\cite{distroKubeadm}, welches den minimalen Kern von Kubernetes deployt und den Rest der Konfiguration dem Nutzer überlasst.
Für das Evaluieren wurde entschlossen, eine möglichst Originalgetreue Distribution von Kubernetes zu benutzen, wodurch OpenShift und OKD mit ihren meinungsstarken Standardkonfigurationen sowie großen Zusatzkomponenten wegfallen und die Entwicklungen von Rancher als auch kubeadm übrig blieben. Da k3s mit einfacher Installation, besonders im Gegensatz zu kubeadm, überzeugt, wurde es als initiale Technische Grundlage ausgewählt, besonders mit dem Hintergedanken, dass für den Kubernetes-Kern geschriebene Komponenten auf jeder Distribution lauffähig sind. Diese Portabilität soll später ebenfalls erlauben, weitaus Kundensystem-agnostischer zu arbeiten. Im Verlauf wurde trotzdessen noch kubeadm als Original sowie RKE2 als k3s-nahe, Produktionsumgebungsähnliche Alternative ausprobiert. Für das Evaluieren wurde entschlossen, eine möglichst Originalgetreue Distribution von Kubernetes zu benutzen, wodurch OpenShift und OKD mit ihren meinungsstarken Standardkonfigurationen sowie großen Zusatzkomponenten wegfallen und die Entwicklungen von Rancher als auch kubeadm übrig blieben. Da k3s mit einfacher Installation, besonders im Gegensatz zu kubeadm, überzeugt, wurde es als initiale Technische Grundlage ausgewählt, besonders mit dem Hintergedanken, dass für den Kubernetes-API-Kern geschriebene Komponenten auf jeder Distribution lauffähig sind. Diese Portabilität soll später ebenfalls erlauben, weitaus Kundensystem-agnostischer zu arbeiten. Im Verlauf wurde kubeadm sowie RKE2 geprüft. Falls die Migration zustande kommt, wird RKE2 als Produktionsumgebung mit Möglichkeit für High-Availability die Basis bilden.
\subsection{Graylog} \subsection{Erste Berührungspunkte}
Nach der Wahl der Distribution folgte das Einarbeiten in Kubernetes. Dabei wurde mit den kompletten Grundlagen begonnen: wie bediene ich das Kommandozeilentool \texttt{kubectl}, was ist ein Pod, wie ist er definiert, wie binden Services sich an Pods, et cetera. Gleichzeitig wurde meiner ersten Aufgabe nachgegegangen, das Monitoring-Tool Graylog, welches selektron benutzt, um alle Logs der verschiedenen Services zusammenzuführen, auf Kubernetes zu portieren, um praktische Erfahrung zu sammeln. Währenddessen wurde ein Nachschlagewerk geschrieben und gepflegt, um diese Daten zusammengefasst an einer Stelle zu haben. Schnell wurde klar, das Kubernetes Komponenten manuell schreiben und verwalten möglich ist, jedoch Limitationen aufweist. Ein Kernnachteil ist, dass \texttt{kubectl apply} nur Komponenten hinzufügen, aber nicht löschen kann, und man somit nichtmehr definierte Komponenten selbst verwalten muss. Darauf folgt das benutzen von Helm als Paketmanager, welches Charts definiert. Charts sind Sammlungen an Komponentendefinitionsvorlagen, die mit einer Values-Datei zu vollwertigen Kubernetes-Komponentendefinitionen werden, um als konfigurierten Release auf das Cluster gespielt zu werden. Dies hat den Vorteil, dass Helm-Charts mit einem Befehl installiert, geupgraded und deinstalliert werden können und eine Versionierung zwischen den Releases existiert die Rollbacks ermöglicht. Glücklicherweise pflegen die Entwickler von Graylog ebenfalls solch einen Chart, wodurch ich von meiner spartanischen Erstimplementation auf eine allumfassend bessere Version wechseln konnte. Bei der Installation hatte ich gleichzeitig das erste mal Kontakt mit Operatoren, konkret dem vom Graylog-Helm-Chart genutzten MongoDB-Operator. Operatoren sind Kubernetes-Erweiterungen bestehend aus Custom-Resource-Definitions (kurz CRDs) und mindestens einem Pod, welcher Instanzen der definierten CRDs (Custom Resources, CRs) überwacht, und daraufhin das Cluster entsprechend bedient. Der MongoDB Operator überwacht z.B. das Cluster nach MongoDB-Komponenten, in welchen eine Datenbank definiert wird, und erstellt daraufhin dynamisch die Datenbank nach den Anforderungen. Falls die Komponente editiert oder gelöscht wird, wird die dadurch erstellte Datenbank dementsprechend editiert oder gelöscht. Somit Verwaltet der Operator den Lebenszyklus der angefragten Resource, und der anfragende Service muss sich nicht um die genaue Implementation, sondern nur den Finalzustand kümmern. Dieser Ansatz wird \glqq{}Infrastructure as Code\grqq{} genannt, da Infrastruktur (in diesem Fall Datenbanken) mithilfe von Code statt manueller Prozesse bereitgestellt wird, und somit Konsistenz, Auditierbarkeit, Transparenz und Skalierbarkeit gewährt. Nach der Wahl der Distribution folgte das Einarbeiten in Kubernetes. Dabei wurde mit den kompletten Grundlagen begonnen: wie bediene ich das Kommandozeilentool \texttt{kubectl}, was ist ein Pod, wie ist er definiert, wie binden Services sich an Pods, et cetera. Gleichzeitig wurde meiner ersten Aufgabe nachgegegangen, das Monitoring-Tool Graylog, welches selektron benutzt, um alle Logs der verschiedenen Services zusammenzuführen, auf Kubernetes zu portieren, um praktische Erfahrung zu sammeln. Währenddessen wurde ein Nachschlagewerk geschrieben und gepflegt, um diese Daten zusammengefasst an einer Stelle zu haben.
\subsection{Helm}
Schnell wurde klar, das Kubernetes Komponenten manuell schreiben und verwalten möglich ist, jedoch Limitationen aufweist. Ein Kernnachteil ist, dass \texttt{kubectl apply} nur Komponenten hinzufügen, aber nicht löschen kann, und man somit nichtmehr definierte Komponenten selbst verwalten muss. Darauf folgt das benutzen von Helm als Paketmanager, welches Charts definiert. Charts sind Sammlungen an Komponentendefinitionsvorlagen, die mit einer Values-Datei zu vollwertigen Kubernetes-Komponentendefinitionen werden, um als konfigurierten Release auf das Cluster gespielt zu werden. Dies hat den Vorteil, dass Helm-Charts mit einem Befehl installiert, geupgraded und deinstalliert werden können und eine Versionierung zwischen den Releases existiert die Rollbacks ermöglicht. Glücklicherweise pflegen die Entwickler von Graylog ebenfalls solch einen Chart, wodurch ich von meiner spartanischen Erstimplementation auf eine allumfassend bessere Version wechseln konnte. Bei der Installation hatte ich gleichzeitig das erste mal Kontakt mit Operatoren, konkret dem vom Graylog-Helm-Chart genutzten MongoDB-Operator. Operatoren sind Kubernetes-Erweiterungen bestehend aus Custom-Resource-Definitions (kurz CRDs) und mindestens einem Pod, welcher Instanzen der definierten CRDs (Custom Resources, CRs) überwacht, und daraufhin das Cluster entsprechend bedient. Der MongoDB Operator überwacht z.B. das Cluster nach MongoDB-Komponenten, in welchen eine Datenbank definiert wird, und erstellt daraufhin dynamisch die Datenbank nach den Anforderungen. Falls die Komponente editiert oder gelöscht wird, wird die dadurch erstellte Datenbank dementsprechend editiert oder gelöscht. Somit Verwaltet der Operator den Lebenszyklus der angefragten Resource, und der anfragende Service muss sich nicht um die genaue Implementation, sondern nur den Finalzustand kümmern. Dieser Ansatz wird \glqq{}Infrastructure as Code\grqq{} genannt, da Infrastruktur (in diesem Fall Datenbanken) mithilfe von Code statt manueller Prozesse bereitgestellt wird, und somit Konsistenz, Auditierbarkeit, Transparenz und Skalierbarkeit gewährt.
\subsection{GatewayAPI} \subsection{GatewayAPI}
Nachdem Graylog auf dem Cluster lief, war es jedoch noch nicht von extern erreichbar. Dafür ist Ingress zuständig. Ingress ist ein Spec, verwaltet von dem Kubernetes-Team\cite{k8sIngress}, welcher Layer 7 HTTP/S Routing erlaubt. Dieser Spec wird von IngressControllern implementiert, z.B. nginx oder Traefik. Da selektron jedoch nicht nur Layer 7, sondern auch Layer 4 Routing benötigt, um mit der SPS im Lager zu kommunizieren, wurde auf Ingress' Nachfolger, GatewayAPI gesetzt\cite{k8sGatewayAPI}. GatewayAPI ist genau wie Ingress ein Spec, welcher von extern programmierten GatewayControllern, z.B. Istio oder Traefik, implementiert wird. Er lernt aus den Defiziten von Ingress und trennt Routen, Gateways und GatewayClasses voneinander. Ebenfalls erlaubt er nicht nur HTTP/S, sondern auch gRPC, TCP und UDP-Verbindungen. Nachdem Graylog auf dem Cluster lief, war es jedoch noch nicht von extern erreichbar. Dafür ist Ingress zuständig. Ingress ist ein Spec, verwaltet von dem Kubernetes-Team\cite{k8sIngress}, welcher Layer 7 HTTP/S Routing erlaubt. Dieser Spec wird von IngressControllern implementiert, z.B. nginx oder Traefik. Da selektron jedoch nicht nur Layer 7, sondern auch Layer 4 Routing benötigt, um mit der SPS im Lager zu kommunizieren, wurde auf Ingress' Nachfolger, GatewayAPI gesetzt\cite{k8sGatewayAPI}. GatewayAPI ist genau wie Ingress ein Spec, welcher von extern programmierten GatewayControllern, z.B. Istio oder Traefik, implementiert wird. Er lernt aus den Defiziten von Ingress und trennt Routen, Gateways und GatewayClasses voneinander. Ebenfalls erlaubt er nicht nur HTTP/S, sondern auch gRPC, TCP und UDP-Verbindungen.
@@ -194,7 +198,7 @@ Eine weitere Anforderung ist eine Verwaltungsübersicht für das Kubernetes-Clus
Eine klassische Serviceaufgabe wäre das Neustarten und Stoppen von Containern. Was mit dem originalen Setup mit einer Ansammlung fehleranfälliger Skripte ablief, kann somit über eine Nutzerfreundliche Oberfläche mit wenigen Clicks realisiert werden. Eine klassische Serviceaufgabe wäre das Neustarten und Stoppen von Containern. Was mit dem originalen Setup mit einer Ansammlung fehleranfälliger Skripte ablief, kann somit über eine Nutzerfreundliche Oberfläche mit wenigen Clicks realisiert werden.
\textbf{TODO: VIELLEICHT PANEL FÜR RESTART ETC IN HEADLAMP / RADAR} \todo{TODO: VIELLEICHT PANEL FÜR RESTART ETC IN HEADLAMP / RADAR}
\subsection{Windows} \subsection{Windows}
Kernbestandteil der mir initial gegebenen Anforderungsliste war die Evaluation der Nutzbarkeit von Kubernetes auf Windows-basierten Systemen. Während Kubernetes unterstützt, Worker-Nodes auf Windows laufen zu lassen, gibt es keine Control-Plane die für Windows konzipiert ist, da Windows im Umfeld der Containerisierung keine Vorteile gegenüber Linux bietet, und der Mehraufwand nicht rechtfertigbar ist. Die Problemstellung lässt sich trotzdem lösen, da der Windows-Kernel seit Windows 10 bzw. Windows-Server 2016 Hyper-V mitliefert\cite{windowsHyperVIntro}. Hyper-V ist Microsofts Type-1 (Bare-Metal) Hypervisor, vergleichbar mit Linux' KVM. Hypervisor sind Software, die es erlauben, auf Host-Systemen mehrere Virtuelle Maschinen (VMs), sogenannte Guest-Systeme, laufen zu lassen. Dabei unterscheidet man zwischen Type-1 und Type-2 Hypervisorn. Der Vorteil von Type-1 Hypervisorn ist, dass diese parallel zum Kernel laufen und unabhängig Userspace des Host-Systems sind, während Type-2 Hypervisor auf dem Host-Betriebssystem laufen. Damit sind Type-2 Hypervisor einfacher zu bedienen, jedoch langsamer und unsicherer. Der Clou ist, mithilfe von Hyper-V eine Linux-VM aufzusetzen auf welcher das Cluster läuft. Nachteil bei dieser Konfiguration ist, dass durch die Virtualisierung ein Performance-Overhead, besonders in I/O-Operationen entsteht, sowie dass Networking innerhalb Hyper-V sehr fragil ist, weswegen nur externe Switches wie erwartet funktionieren. Diese müssen jedoch innerhalb der Kundenfirewall als externes Gerät eingerichtet werden, was die Kundentoleranz maßgeblich senkt. Da ein nicht zu unterschätzender Anteil der Kunden auf Windows-basierte Serversysteme setzt, könnte dies eine große Einschränkung bei Portierung von selektron erweisen. Kernbestandteil der mir initial gegebenen Anforderungsliste war die Evaluation der Nutzbarkeit von Kubernetes auf Windows-basierten Systemen. Während Kubernetes unterstützt, Worker-Nodes auf Windows laufen zu lassen, gibt es keine Control-Plane die für Windows konzipiert ist, da Windows im Umfeld der Containerisierung keine Vorteile gegenüber Linux bietet, und der Mehraufwand nicht rechtfertigbar ist. Die Problemstellung lässt sich trotzdem lösen, da der Windows-Kernel seit Windows 10 bzw. Windows-Server 2016 Hyper-V mitliefert\cite{windowsHyperVIntro}. Hyper-V ist Microsofts Type-1 (Bare-Metal) Hypervisor, vergleichbar mit Linux' KVM. Hypervisor sind Software, die es erlauben, auf Host-Systemen mehrere Virtuelle Maschinen (VMs), sogenannte Guest-Systeme, laufen zu lassen. Dabei unterscheidet man zwischen Type-1 und Type-2 Hypervisorn. Der Vorteil von Type-1 Hypervisorn ist, dass diese parallel zum Kernel laufen und unabhängig Userspace des Host-Systems sind, während Type-2 Hypervisor auf dem Host-Betriebssystem laufen. Damit sind Type-2 Hypervisor einfacher zu bedienen, jedoch langsamer und unsicherer. Der Clou ist, mithilfe von Hyper-V eine Linux-VM aufzusetzen auf welcher das Cluster läuft. Nachteil bei dieser Konfiguration ist, dass durch die Virtualisierung ein Performance-Overhead, besonders in I/O-Operationen entsteht, sowie dass Networking innerhalb Hyper-V sehr fragil ist, weswegen nur externe Switches wie erwartet funktionieren. Diese müssen jedoch innerhalb der Kundenfirewall als externes Gerät eingerichtet werden, was die Kundentoleranz maßgeblich senkt. Da ein nicht zu unterschätzender Anteil der Kunden auf Windows-basierte Serversysteme setzt, könnte dies eine große Einschränkung bei Portierung von selektron erweisen.
@@ -218,7 +222,7 @@ Mithilfe der beiden Pipelines kann FluxCD einen massiven Teil des Deployments ü
\subsection{Airgap-Installation} \subsection{Airgap-Installation}
Viele der Kunden haben strikte IT-Infrastrukturregeln, in welchem Zugang in das Internet stark beschränkt bis komplett deaktiviert ist. Dafür ist es notwendig, dass das komplette System ohne Internet aufgesetzt werden kann. Da Kubernetes eine Cloud-Native Lösung ist, stehen Probleme wie dieses nicht auf der Prioritätsliste der Kernentwickler, jedoch gibt es trotzdem Lösungen dafür. Diese fallen jedoch außerhalb des Zeitrahmens der Praxisphase und werden in einer aufbauenden wissenschaftlichen Arbeit abgehandelt. Viele der Kunden haben strikte IT-Infrastrukturregeln, in welchem Zugang in das Internet stark beschränkt bis komplett deaktiviert ist. Dafür ist es notwendig, dass das komplette System ohne Internet aufgesetzt werden kann. Da Kubernetes eine Cloud-Native Lösung ist, stehen Probleme wie dieses nicht auf der Prioritätsliste der Kernentwickler, jedoch gibt es trotzdem Lösungen dafür. Diese fallen jedoch außerhalb des Zeitrahmens der Praxisphase und werden in der auf der Praxisphase aufbauenden Bachelorarbeit abgehandelt.
\section{Evaluation} \section{Evaluation}

View File

@@ -137,7 +137,13 @@
date = {2022-08-30} date = {2022-08-30}
} }
@online{passESO,
author = {external-secrets Authors},
title = {\glqq External Secrets Operator\grqq},
url = {https://external-secrets.io/latest/},
urldate = {2026-05-18},
year = 2025
}
@misc{rsFaq, @misc{rsFaq,
author = {Rust Community}, author = {Rust Community},