This commit is contained in:
2026-06-30 11:11:40 +02:00
commit 30f4dd4694
30 changed files with 721 additions and 0 deletions

16
.gitignore vendored Normal file
View File

@@ -0,0 +1,16 @@
.idea/
.vscode/
*.class
src/bin/
*.aux
*.bbl
*.bcf
*.blg
*.fdb_latexmk
*.fls
*.log
*.out
*.run.xml
*.synctex.gz
*.toc
graphics/unters.png

BIN
expose.pdf Normal file

Binary file not shown.

189
expose.tex Normal file
View File

@@ -0,0 +1,189 @@
\documentclass[paper=a4,fontsize=12pt,ngerman]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{graphicx}
\usepackage[ngerman]{babel}
\usepackage[autostyle=true]{csquotes} %biblatex german quoting
\usepackage{amsmath}
\usepackage{pifont} % ding55
\usepackage[a4paper,left=25mm,right=35mm,top=25mm,bottom=30mm]{geometry}
%\usepackage{parskip}
\usepackage{comment} %dies ist ein kommentar
% tableau
\usepackage{booktabs}
\usepackage{multirow} % table stuff
\usepackage{tablefootnote} % table
\usepackage{diagbox}
\usepackage{caption}
\usepackage{url} %damit urls richtig formatted werden dürfen, müss \url{URL} usen
\usepackage{tikz}
\usetikzlibrary{shapes.geometric, arrows, positioning}
%\usepackage[colorlinks=false, hidelinks]{hyperref} % keine hyperrefs
\usepackage{listings} % code blocks
\usepackage{xcolor}
\usepackage{todonotes}
\usepackage[backend=biber, style=numeric, url=true]{biblatex} %URL in biblatex
\addbibresource{literatur.bib}
%\bibliography{literatur} %bibtex
\graphicspath{{graphics/}}
\definecolor{codegreen}{rgb}{0,0.6,0}
\definecolor{codegray}{rgb}{0.5,0.5,0.5}
\definecolor{codepurple}{rgb}{0.58,0,0.82}
\definecolor{backcolour}{rgb}{0.95,0.95,0.92}
\lstdefinestyle{mystyle}{
backgroundcolor=\color{backcolour},
commentstyle=\color{codegreen},
keywordstyle=\color{magenta},
numberstyle=\tiny\color{codegray},
stringstyle=\color{codepurple},
basicstyle=\ttfamily\footnotesize,
breakatwhitespace=false,
breaklines=true,
captionpos=b,
keepspaces=true,
numbers=left,
numbersep=5pt,
showspaces=false,
showstringspaces=false,
showtabs=false,
tabsize=2
}
\lstset{style=mystyle}
\newcommand{\cmark}{\ding{51}}
\newcommand{\xmark}{\ding{55}}
\newcommand{\myTitleDos}{Entwicklung einer Deployment- und Upgradestrategie in Kubernetes-basierten On-Premise Umgebungen}
\newcommand{\myTitle}{Security-Compliant Container-Supply-Chain und Patch-Management in isolierten Kubernetes-Umgebungen}
\begin{document}
\pagenumbering{roman}
\pagestyle{plain}
% Einbinden der Titelseite
\begin{titlepage}
\linespread{1.5}
\includegraphics[width=\linewidth]{htw_logo}
\begin{center}
\large
\hfill
\vfill
\Large{\bfseries{Exposé: \myTitle}}
von \\
Tim Wall\\
Mat. Nr. 5014365
\vfill
\vfill
Saarbrücken, den \today
\end{center}
\end{titlepage}
\clearpage
\pagenumbering{arabic}
%\tableofcontents
\section{Forschungsfrage}
Wie lässt sich eine sichere Softwarearchitektur für netzwerkisolierte Kubernetes-Cluster entwerfen, die eine automatisierte Container-Supply-Chain mit integrierter Security-Compliance (Image-Signing, Vulnerability Scanning, SBOM) und höchstmöglich automatisiertem Patch-Management ohne Internetverbindung gewährleistet?
\section{Problemstellung}
Moderne Software wird zunehmend über containerisierte Anwendungen verteilt und mit Orchestrations-Software wie Kubernetes verwaltet.
Gleichzeitig werden hochregulierte On-Premise und Edge Umgebungen immer öfters vollständig ohne Internetanbindung betrieben.
Regularien wie der Cyber-Resilience-Act setzen Software Bill of Materials (SBOMs), Schwachstellenmanagement, Incident Response und Meldepflichten vor.
Diese Herausforderungen benötigen eine durchdachtes Architektur, welches automatisiert SBOM-Generierung, Vulnerability-Scanning, Image-Signatur, Deployment und Policy-Enforcement in isolierten Kubernetes-Umgebungen integriert.
\section{Nicht-Ziele}
Außerhalb des Umfangs dieser Arbeit sind Schwachstellen, die nicht die Container-Supply-Chain, das Patch-Management oder die Cluster-Verwaltung betreffen, zum Beispiel physische Schwachstellen. Desgleichen sind Multi-Cluster-Umgebungen und Windows-Nodes kein Ziel der Arbeit. Die Basis bildet der Orchestrator Kubernetes, die Übertragbarkeit auf Alternativen wie Docker Swarm oder HashiCorp Nomad ist nicht garantiert. Die Anforderungsanalyse und das darausfolgende Architekturkonzept basiert auf dem konkreten Unternehmenskontext der psb intralogistics GmbH und ist nicht für alle AirGap-Szenarien generalisierbar.
\section{Motivation}
Schwachstellen in weltweit genutzter Software und deren Supply-Chains werden im KI-Zeitalter schneller gefunden, (siehe xz, Copy Fail, Dirty Frag, npm Vorfälle) und können gleichzeitig schneller ausgenutzt werden.
Während netzwerkisolierte Installationen ihre Angriffsoberfläche minimieren, ist sie nicht Null. Die Software-Supply-Chain, physischer Zugang und alternative Extraktionsmöglichkeiten wie Elektromagnetismus bleiben Wege, um ein Netzwerk zu infiltrieren oder Daten zu extrahieren. Somit ist auch innerhalb eines AirGap-Deployments ein Architekturkonzept notwendig, um die Sicherheit zu gewährleisten.
\section{Zielgruppe}
Die primäre Zielgruppe sind Cybersicherheitspezialisten und DevOps-Engineers, welche in regulierten Umgebungen AirGap-Kubernetes-Cluster bereitstellen und betreiben. Darunter zählen Behörden, kritische Infrastrukturbereitsteller, Finanzinstitute, Rüstungsunternehmen oder Industriekonzerne mit strengen Netzwerkanforderungen. Compliance-Verantwortliche bilden die Sekundärzielgruppe, da sie Anhand der Bewertung des Clusters Stärken und Defizite in existierenden Kriterienkatalogen identifizieren können.
\section{Heutiger Forschungsstand}
AirGap-Umgebungen und Provisionierung auf Basis von kubeadm, k3s, RKE2 und OpenShift sind gut Dokumentiert.
Forschung zu Schwachstellenmanagement ist für Container in Online-Umgebungen abgedeckt. Sigstore Cosign, Trivy, Grype und Syft bilden die Grundlage für eine Container-Supply-Chain. Patch-Management in AirGap-Clustern ist eine akademische Forschungslücke. Es fehlt eine Referenzarchitektur für Offline-Umgebungen, aufbauend auf einem getestetem Gesamtsystem.
\section{Methodischer Ansatz}
Basierend auf der Analyse eines konkreten Anwendungsszenarios anhand der psb intralogistics GmbH und einer Literatur- sowie Tool-Analyse wird ein Anforderungskatalog erarbeitet. Darauf aufbauend wird eine Referenzarchitektur entworfen, implementiert und bezüglich Compliance und Sicherheit evaluiert.
\section{Notwendige Resourcen}
Schätzung der benötigten Ressourcen:
\begin{itemize}
\item Infrastruktur: 3-5 Linux-Maschinen (Bare-Metal oder VM) zum Instanziieren von isolierten Kubernetes-Clustern
\item Software: Ansible / pyinfra (Provisionerung), kubeadm / RKE2 / k3s / Talos (Distribution), Harbor Registry / Sonatype Nexus Repository (Repo), Cosign (Signierung), Trivy / Grype / Clair (CVE-Scan / SBOM), Syft (SBOM), Spegel (Image-Mirror), Kyverno / OPA Gatekeeper (Policy Admission), FluxCD / ArgoCD (GitOps), Hauler / Zarf (AirGap Transport)
\item Zeit: 13 Wochen
\end{itemize}
\section{Ergebnis}
Primär entsteht eine dokumentierte Referenzarchitektur, welche als Blaupause für das Bereitstellen von sicheren AirGap-Kubernetes-Clustern mit integrierter Container-Supply-Chain-Sicherheit dient, sowie ein dazugehöriges Mapping, welches die Einhaltung der Compliance-Anforderungen aufzeigt (CRA, SLSA). Ergänzend entsteht ein Proof-of-Concept, der die Architektur in einer Testumgebung mit den darausfolgenden Artefakte (z.B. GitOps-Directory, Helm-Charts, Ansible-Playbooks) abbildet.
\section{Zeitplan}
\begin{table}[ht]
\begin{tabular}{rl}
Woche & Aufgabe $\rightarrow$ Ergebnis \\
\hline \\
1 & Grundlagen-Recherche (k8s, AirGap, Supply-Chain, Patch-Management) \\
& $\rightarrow$ Draft Theoretische Grundlagen \\
2 & Anforderungsanalyse psb und Literaturrecherche \\
& $\rightarrow$ funktionale \& qualitative Anforderungen, Zielkonflikte, Testszenarien \\
3 & Architektur-Entwurf, Entscheidungsbegründung (ATAM Utility-Tree) \\
& $\rightarrow$ Draft Architektur, Diagramme Komponenten \& Runtime \\
4 & Architektur-Feedback psb \& Betreuer, Finalisierung Architektur \\
& $\rightarrow$ Finalisierung Architektur \\
5-6 & PoC Setup: Container-Supply-Chain (CVE, Signierung) \\
& $\rightarrow$ Funktionale Pipeline \& Draft PoC Container-Supply-Chain \\
7-8 & PoC Setup: AirGap-Cluster, Provisionierung, Registry, Policies \\
& $\rightarrow$ Funktionales Cluster \& Draft PoC Cluster \\
9 & PoC: Patch-Management, mögliche Automatisierung \\
& $\rightarrow$ Draft Patch-Management \\
10 & PoC Testing \& Metrikerhebung (Deployment-Zeit, Automatisierung,) \\
& $\rightarrow$ Draft Metriken, Erkenntnisse, Diagramme Metriken \\
11 & Compliance-Bewertung Architektur \& PoC (CRA, SLSA) \\
& Architektur-Bewertung (STRIDE, Risiken, Tradeoffs) \\
& $\rightarrow$ Draft Compliance, Draft Compliance-Bewertung\\
12 & Diskussion, Fazit \& Ausblick \\
& $\rightarrow$ Draft Diskussion, Fazit \& Ausblick \\
13 & Proof-Read, Finalisierung, Signierung, Binden, Vorbereitung Kolloqium \\
& $\rightarrow$ Finale Arbeit \\
\end{tabular}
\end{table}
\end{document}

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="286" height="62" viewBox="0 0 286 62" fill="none"><path d="M18.4677 44.9509H14.2512L12.1429 48.5875H16.3595L18.4677 44.9509Z" fill="#F79133"></path><path d="M15.4118 39.6813H11.1964L9.08811 43.3168H13.3046L15.4118 39.6813Z" fill="#F79133"></path><path d="M21.5225 39.6813H17.3071L15.1988 43.3168H19.4143L21.5225 39.6813Z" fill="#F79133"></path><path d="M44.5269 0H40.3114L18.2536 38.0472H22.4701L44.5269 0Z" fill="#F79133"></path><path d="M24.3643 38.0472H67.8005L71.8866 31L53.915 0H46.421L24.3643 38.0472Z" fill="#F79133"></path><path d="M8.14051 44.9509L8.11401 44.9963L10.1958 48.5875H10.2488L12.357 44.9509H8.14051Z" fill="#F79133"></path><path d="M11.1964 50.2215L11.1699 50.2669L13.2516 53.8581H13.3036L15.4118 50.2215H11.1964Z" fill="#F79133"></path><path d="M60.7433 50.2215H17.3071L15.1988 53.8581H58.635L60.7433 50.2215Z" fill="#F79133"></path><path d="M4.13809 38.0472L26.1959 0H17.9717L0 31L4.08509 38.0472H4.13809Z" fill="#F79133"></path><path d="M23.4167 39.6813L21.3095 43.3168H64.7457L66.8529 39.6813H23.4167Z" fill="#F79133"></path><path d="M14.2512 55.4911L14.2247 55.5365L17.9717 62L53.915 61.9989L57.6874 55.4911H14.2512Z" fill="#F79133"></path><path d="M12.1429 38.0472H16.3595L38.4162 0H34.2007L12.1429 38.0472Z" fill="#F79133"></path><path d="M6.0333 38.0472H10.2488L32.3055 0H28.0901L6.0333 38.0472Z" fill="#F79133"></path><path d="M5.0592 39.7267L7.14096 43.3168H7.19396L9.30117 39.6813H5.0857L5.0592 39.7267Z" fill="#F79133"></path><path d="M20.3619 44.9509L18.2536 48.5875H61.6898L63.7981 44.9509H20.3619Z" fill="#F79133"></path><path d="M92.3312 10.0441H100.555V45.3246H118.301V51.9548H92.3312V10.0441Z" fill="#111111"></path><path d="M126.71 10.0441H134.934V51.9548H126.71V10.0441Z" fill="#111111"></path><path d="M146.756 10.0441H157.657L175.305 41.4178H175.435V10.0441H183.66V51.9548H173.216L155.111 19.5752H154.98V51.9548H146.756V10.0441Z" fill="#111111"></path><path d="M195.046 10.0441H212.105C213.845 10.0441 215.564 10.232 217.261 10.6067C218.958 10.9825 220.47 11.5937 221.798 12.4414C223.125 13.2901 224.202 14.3858 225.03 15.7264C225.856 17.0681 226.27 18.6863 226.27 20.5801C226.27 22.9478 225.529 24.9018 224.051 26.4408C222.571 27.9799 220.634 29.0851 218.241 29.7554V29.8737C221.156 30.2284 223.549 31.2555 225.421 32.9518C227.292 34.6492 228.228 36.9177 228.228 39.7594C228.228 42.049 227.727 43.9723 226.727 45.5315C225.725 47.0906 224.41 48.3436 222.778 49.2905C221.145 50.2374 219.274 50.9182 217.164 51.3331C215.053 51.7479 212.91 51.9548 210.734 51.9548H195.046V10.0441ZM203.271 27.0932H209.626C212.368 27.0932 214.456 26.6002 215.892 25.6132C217.328 24.6273 218.046 23.2255 218.046 21.4109C218.046 19.5963 217.305 18.1754 215.826 17.3858C214.347 16.5973 212.04 16.2015 208.907 16.2015H203.271V27.0932ZM203.271 45.6803H209.69C210.734 45.6803 211.865 45.6117 213.084 45.4734C214.302 45.3351 215.424 45.0501 216.446 44.6152C217.468 44.1814 218.317 43.549 218.992 42.7204C219.667 41.8917 220.005 40.7876 220.005 39.4058C220.005 37.1964 219.178 35.6573 217.524 34.7886C215.87 33.9209 213.368 33.486 210.018 33.486H203.272V45.6803H203.271Z" fill="#111111"></path><path d="M238.334 10.0441H246.558V51.9548H238.334V10.0441Z" fill="#111111"></path><path d="M254.603 16.5561V10.0441H286V16.5561H274.285V51.9548H266.061V16.5561H254.603Z" fill="#111111"></path></svg>

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

View File

@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 24.1.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" x="0px" y="0px" viewBox="0 0 345.9976501 111.362381" style="enable-background:new 0 0 345.9976501 111.362381;" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg"><defs id="defs181">
</defs>
<style type="text/css" id="style148">
.st0{fill:#384745;}
.st1{fill:#2E68E9;}
</style>
<g id="g156">
<path class="st0" d="m 163.81985,30.313908 h 20.80295 c 9.87773,0 16.5376,4.789058 16.5376,14.067558 0,7.558727 -5.16298,12.12368 -10.17737,13.694862 1.49689,1.271561 2.61986,2.992554 3.5175,4.789059 2.09491,4.265335 3.51629,8.978882 7.93143,8.978882 1.12297,0 2.02062,-0.373917 2.02062,-0.373917 l -0.97316,8.904579 c 0,0 -2.69294,0.673539 -5.01317,0.673539 -5.98633,0 -9.42832,-2.320237 -12.9458,-10.327172 -1.49569,-3.590576 -3.5918,-9.877743 -6.36025,-9.877743 h -2.84396 v 19.979588 h -12.49639 z m 12.49639,9.054393 v 12.420864 h 4.49066 c 3.59178,0 7.7816,-1.121753 7.7816,-6.508834 0,-4.415146 -2.84274,-5.91203 -6.28593,-5.91203 z" id="path150"/>
<path class="st0" d="m 209.69107,30.313908 h 12.49637 v 14.143074 c 0,1.571182 -0.22411,3.890197 -0.37392,5.612407 h 0.29962 c 0.82335,-1.27156 1.87081,-3.217876 3.14237,-4.714763 L 237.6033,30.313908 h 13.46831 l -16.46208,19.829776 17.36094,30.679459 H 237.6033 l -11.67425,-21.175632 -3.74161,4.564952 v 16.61068 h -12.49637 z" id="path152"/>
<path class="st0" d="m 255.93741,30.313927 h 33.4479 v 9.278492 H 268.43378 V 50.44331 h 17.58505 v 9.278492 h -17.58505 v 11.82283 h 21.70059 v 9.278496 h -34.19696 z" id="path154"/>
<path class="st0" d="m 331.99765,80.648811 h -37.30078 v -8.855293 l 12.55078,-12.295223 c 3.58594,-3.632942 5.92969,-6.113556 7.03125,-7.441849 1.10156,-1.328293 1.86914,-2.469265 2.30273,-3.422909 0.4336,-0.953647 0.6504,-1.952705 0.6504,-2.997177 0,-1.294231 -0.4336,-2.315998 -1.30079,-3.065292 -0.86718,-0.749291 -2.08593,-1.12394 -3.65625,-1.12394 -1.61718,0 -3.25195,0.448441 -4.90429,1.345326 -1.65235,0.896881 -3.52149,2.219497 -5.60742,3.967849 l -7.62891,-8.650936 c 2.64844,-2.293293 4.875,-3.933792 6.67969,-4.921497 1.80468,-0.987705 3.76757,-1.742676 5.88867,-2.26491 2.12109,-0.522236 4.50586,-0.783352 7.1543,-0.783352 3.32812,0 6.29882,0.567646 8.9121,1.70294 2.61329,1.135293 4.64063,2.753087 6.08204,4.853379 1.4414,2.100292 2.16211,4.456028 2.16211,7.067199 0,1.952706 -0.25196,3.757824 -0.75586,5.415352 -0.50391,1.657528 -1.28321,3.286675 -2.33789,4.887436 -1.05469,1.600765 -2.45508,3.286675 -4.20118,5.057732 -1.74609,1.771057 -5.46679,5.131527 -11.16211,10.081402 v 0.340591 h 19.44141 z" id="path172" transform="translate(2)"/></g><g id="g168">
<circle class="st1" cx="34.908058" cy="76.394211" r="7" id="circle158"/>
<path class="st1" d="m 71.458618,58.681824 c -0.209182,0 -0.416992,-0.01081 -0.623092,-0.0294 1.803489,3.899177 2.958931,8.156898 3.306198,12.639991 H 89.1073 c 2.133667,-3.763054 5.618973,-6.660682 9.793503,-8.029022 V 58.680115 H 71.487328 c -0.0094,4.2e-5 -0.01914,0.0017 -0.02871,0.0017 z" id="path160"/>
<path class="st1" d="m 42.107155,27.74408 v 9.646404 c 8.244308,1.112423 15.636864,4.93811 21.249168,10.549305 L 58.468285,27.74408 Z" id="path162"/>
<circle class="st1" cx="104.33828" cy="79.894211" r="3.5" id="circle164"/>
<path class="st1" d="M 121.58689,0 H 14.392383 C 6.4765382,0 0,6.4766235 0,14.392469 v 82.577438 c 0,7.915843 6.4765382,14.392473 14.392383,14.392473 H 121.58689 c 7.91584,0 14.39239,-6.47663 14.39239,-14.392473 V 14.392469 C 135.97928,6.4766235 129.50273,0 121.58689,0 Z M 34.908058,97.394211 c -11.579395,0 -21.000002,-9.420563 -21.000002,-21 0,-11.579438 9.420607,-21.000004 21.000002,-21.000004 11.579395,0 21,9.420567 21,21.000004 0,11.579437 -9.420608,21 -21,21 z m 69.430222,0 c -7.766137,0 -14.363159,-5.086579 -16.644143,-12.101792 H 67.257935 c -3.862988,0 -6.995217,-3.12915 -7,-6.991798 l -0.0048,-4.108055 c 0,-12.765087 -10.378323,-23.14341 -23.134865,-23.14341 H 25.608618 c -3.865723,0 -7,-3.133934 -7,-7 0,-3.866066 3.134277,-7 7,-7 h 2.498535 V 27.74408 h -2.498535 c -3.865723,0 -7,-3.133936 -7,-7 0,-3.866064 3.134277,-7 7,-7 h 38.367386 c 3.23135,0 6.042965,2.212109 6.803806,5.353222 l 6.192337,25.582813 h 26.415083 c 5.2459,0 9.51357,4.267677 9.51357,9.513573 v 10.446891 c 5.32862,3.003113 8.93748,8.713303 8.93748,15.253632 0,9.649521 -7.85039,17.5 -17.5,17.5 z" id="path166"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.4 KiB

BIN
graphics/distro/okd-1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

View File

@@ -0,0 +1 @@
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 287.36395 111.36238"><defs><style>.cls-1{fill:#384745;}.cls-2{fill:#ffc61c;}</style></defs><title>sub-project-brand-logo-variants</title><path class="cls-1" d="M163.81972,30.43153H176.3161V44.57461c0,1.57118-.22411,3.89019-.37392,5.6124h.29962a42.96588,42.96588,0,0,1,3.14237-4.71476l12.34717-15.04072h13.46893L188.73818,50.26131l17.36034,30.67946H191.73134L180.0577,59.76513l-3.7416,4.565V80.94077H163.81972Z"/><path class="cls-1" d="M218.29711,65.07792c-1.34708,4.86336,1.42137,7.93143,5.6118,7.93143,4.71415,0,7.10868-3.74161,7.10868-9.0544,0-5.6867-2.84335-7.85591-6.65986-7.85591a9.07616,9.07616,0,0,0-6.21043,2.39453l-5.3877-5.83773L228.399,39.71h-18.5576v-9.2785h31.054v9.80223L228.92268,50.1115c7.63241-.74783,14.89091,4.26533,14.89091,13.99326,0,10.55128-8.60557,17.73487-19.45586,17.73487-10.251,0-18.85662-6.36024-16.6119-15.266Z"/><path class="cls-1" d="M259.30374,64.33009c-.89765,4.04.67354,8.67926,8.60557,8.67926,5.23727,0,7.03378-2.09491,7.03378-4.86458,0-4.18982-4.191-5.23727-9.12991-7.03256-7.40709-2.54556-16.53638-6.13614-16.53638-16.68741,0-9.42831,7.25849-15.19053,19.60445-14.89091,15.11623.2984,19.38156,9.2042,17.73487,16.91152L275.1672,47.49286c.74905-5.83651-1.34708-9.1299-7.25789-9.1299-3.96571,0-6.211,1.4981-6.211,4.64046,0,4.18982,4.04062,5.46138,8.97949,7.18359,7.633,2.54313,16.68619,5.61241,16.68619,16.087,0,9.05439-6.73416,15.56566-19.90407,15.56566-12.34657,0-20.80233-5.68792-19.08073-16.46209Z"/><path class="cls-2" d="M121.58689,0H14.39255A14.43487,14.43487,0,0,0,0,14.39247V96.96991a14.43487,14.43487,0,0,0,14.39255,14.39247H121.58689a14.43487,14.43487,0,0,0,14.39255-14.39247V14.39247A14.43487,14.43487,0,0,0,121.58689,0ZM57.45811,80.98065,31.29766,96.18344A6.99993,6.99993,0,1,1,24.26348,84.079L50.42393,68.87626a6.99993,6.99993,0,1,1,7.03418,12.10439Zm10.2915-23.16221h-.03145A6.99967,6.99967,0,0,1,60.74893,50.788l.13125-30.13725a7.00056,7.00056,0,0,1,6.99931-6.96958h.03145a6.99991,6.99991,0,0,1,6.96924,7.03042l-.13125,30.13725A7.00056,7.00056,0,0,1,67.74961,57.81844Zm46.2875,35.81006a6.997,6.997,0,0,1-9.56211,2.56211L78.27627,81.06473a6.99994,6.99994,0,1,1,7-12.12421L111.475,84.06639A6.99956,6.99956,0,0,1,114.03711,93.6285Z"/></svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

BIN
graphics/htw_logo.pdf Normal file

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

28
graphics/infra/helm.svg Normal file
View File

@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="351" viewBox="0 0 304 351" width="304">
<mask id="a" fill="#fff">
<path d="m0 0h313.303155v159.864865h-313.303155z" fill="#fff" fill-rule="evenodd"/>
</mask>
<mask id="b" fill="#fff">
<path d="m0 0h313.303155v159.864865h-313.303155z" fill="#fff" fill-rule="evenodd"/>
</mask>
<g fill="none" fill-rule="evenodd" transform="translate(-11 -51)">
<path d="m11.6785714 189h19.7858357v26.789h23.9037v-26.789h19.7858358v75.25h-19.7858358v-28.695333h-23.9037v28.695333h-19.7858357zm86.1738429 75.25v-75.25h46.8030427v16.354333h-27.017207v12.240667h23.9037v16.655333h-23.9037v13.846h27.017207v16.153667zm68.4971567 0v-75.25h19.785836v55.384h27.117643v19.866zm77.536372-75.25 30.733328 27.892667 30.632893-27.892667h8.938779v75.25h-19.886272v-38.628333l-19.6854 17.959666-19.785835-17.859333v38.528h-19.886272v-75.25z" fill="#0f1689"/>
<g transform="matrix(1 0 0 -1 11.958136 455)">
<g fill="#0f1689" mask="url(#a)">
<path d="m203.460676 95.6875425c6.93631 0 12.559301-14.8092194 12.559301-33.0773172s-5.622991-33.0773172-12.559301-33.0773172c-6.936311 0-12.559301 14.8092194-12.559301 33.0773172s5.62299 33.0773172 12.559301 33.0773172z" transform="matrix(.81915204 .57357644 -.57357644 .81915204 111.870091 -51.706556)"/>
<path d="m30.1423223 95.6875425c6.9363104 0 12.559301-14.8092194 12.559301-33.0773172s-5.6229906-33.0773172-12.559301-33.0773172-12.5593009 14.8092194-12.5593009 33.0773172 5.6229905 33.0773172 12.5593009 33.0773172z" transform="matrix(-.81915204 .57357644 .57357644 .81915204 58.084611 47.704768)"/>
<path d="m116.732815 66.2752676c6.936311 0 12.559301-14.8092193 12.559301-33.0773172 0-18.2680978-5.62299-33.07731713-12.559301-33.07731713-6.93631 0-12.559301 14.80921933-12.559301 33.07731713 0 18.2680979 5.622991 33.0773172 12.559301 33.0773172z" transform="matrix(-1 0 0 1 272.628524 53.670762)"/>
</g>
<path d="m251.467006 173.099849c-20.230076-33.609969-56.889565-56.067908-98.755776-56.067908-40.720798 0-76.5158766 21.245901-97.0586959 53.334588m2.1981107 129.169534c20.8403036 30.232701 55.5559042 50.026591 94.8605852 50.026591 39.376099 0 74.146424-19.865887 94.974049-50.191495" mask="url(#a)" stroke="#0f1689" stroke-width="20"/>
</g>
<g transform="translate(11.958136)">
<g fill="#0f1689" mask="url(#b)">
<path d="m203.460676 95.6875425c6.93631 0 12.559301-14.8092194 12.559301-33.0773172s-5.622991-33.0773172-12.559301-33.0773172c-6.936311 0-12.559301 14.8092194-12.559301 33.0773172s5.62299 33.0773172 12.559301 33.0773172z" transform="matrix(.81915204 .57357644 -.57357644 .81915204 111.870091 -54.166016)"/>
<path d="m30.1423223 95.6875425c6.9363104 0 12.559301-14.8092194 12.559301-33.0773172s-5.6229906-33.0773172-12.559301-33.0773172-12.5593009 14.8092194-12.5593009 33.0773172 5.6229905 33.0773172 12.5593009 33.0773172z" transform="matrix(-.81915204 .57357644 .57357644 .81915204 58.084611 45.245308)"/>
<path d="m116.732815 66.2752676c6.936311 0 12.559301-14.8092193 12.559301-33.0773172 0-18.2680978-5.62299-33.07731713-12.559301-33.07731713-6.93631 0-12.559301 14.80921933-12.559301 33.07731713 0 18.2680979 5.622991 33.0773172 12.559301 33.0773172z" transform="matrix(-1 0 0 1 272.628524 51.211302)"/>
</g>
<path d="m251.467006 170.64039c-20.230076-33.609969-56.889565-56.067908-98.755776-56.067908-40.720798 0-76.5158766 21.2459-97.0586959 53.334587m2.1981107 129.169534c20.8403036 30.232702 55.5559042 50.026591 94.8605852 50.026591 39.376099 0 74.146424-19.865886 94.974049-50.191494" mask="url(#b)" stroke="#0f1689" stroke-width="20"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.6 KiB

BIN
graphics/infra/images.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 27 KiB

View File

@@ -0,0 +1,71 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="layer" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 652 652" style="enable-background:new 0 0 652 652;" xml:space="preserve">
<style type="text/css">
.st0{fill-rule:evenodd;clip-rule:evenodd;fill:#FFEE00;}
.st1{fill-rule:evenodd;clip-rule:evenodd;fill:#5E6872;}
.st2{fill-rule:evenodd;clip-rule:evenodd;fill:#FFFFFE;}
</style>
<rect x="151.8" y="70.9" class="st0" width="340.4" height="342.2"/>
<path class="st1" d="M435,243.6c0-15.1-12.3-27.5-27.4-27.5c-15.1,0-27.4,12.4-27.4,27.5s12.3,27.5,27.4,27.5
C422.8,271.1,435,258.7,435,243.6L435,243.6z M429.1,243.6c0,11.9-9.6,21.5-21.4,21.5c-11.8,0-21.4-9.7-21.4-21.5
c0-11.9,9.6-21.6,21.4-21.6C419.5,222,429.1,231.7,429.1,243.6L429.1,243.6z M262.6,243.7c0-15.1-12.3-27.5-27.4-27.5
c-15.1,0-27.4,12.4-27.4,27.5c0,15.1,12.3,27.5,27.4,27.5C250.3,271.2,262.6,258.8,262.6,243.7L262.6,243.7z M256.6,243.7
c0,11.9-9.6,21.5-21.4,21.5c-11.8,0-21.4-9.7-21.4-21.5c0-11.9,9.6-21.6,21.4-21.6C247,222.1,256.6,231.8,256.6,243.7L256.6,243.7z
M256.6,243.7 M380.1,271.2c7.1,7.1,16.8,11.5,27.5,11.5c21.5,0,39-17.6,39-39.2c0-21.6-17.5-39.2-39-39.2
c-10.4,0-20.3,4.2-27.5,11.6l0.1-85.9h5.9l0.1,73.7c6.6-3.6,13.9-5.5,21.4-5.5c24.8,0,45,20.3,45,45.2s-20.2,45.2-45,45.2
c-11.6,0-21.9-4.8-30.2-11.8c-5.8-4.8-10.8-12-16.2-18.1c1.7,12.2-9.6,31.2-36.1,31.2c-22.9,0-31.6-10.1-48.4-29
c-6.8,16.2-22.9,27.6-41.4,27.6c-7.7,0-15-2-21.4-5.5l0,74.2h-6.1l-0.1-86.4c7.1,7.1,16.8,11.4,27.5,11.5
c22.7,0.2,36.5-17.3,38.7-34.7c7.6,9.8,15.9,19.3,24.3,26.7c6.9,6.2,14.3,9.1,25.9,9.4c18.9,0.4,31.5-9.9,31.5-24.4
c-0.1-16.8-18.6-21.5-33.4-21.8c-4.1-0.1-9.6-0.4-14-2c-4.1-1.6-7.2-4-7.2-8.5c-0.1-8.6,10.8-12.1,21-12c6,0.1,11.9,1.7,16.3,4.6
c5.7,3.8,11.5,11.9,17.7,20.6c-4.5-3.9-9-6.8-14.1-8.3c-2.4-4-4.8-6.8-9.1-8.6c-3-1.2-7.1-2.2-11-2.2c-8.6,0.2-14.7,2.4-14.7,5.1
c0,3.2,4.9,4.9,15.3,5.2c10.2,0.3,17.9,1.9,24.2,5.2c8.9,4.6,14.9,11.9,21.6,19.6C372.3,261.5,375.9,266.3,380.1,271.2 M262.8,215.8
c-6.8-7.3-16.8-11.5-27.5-11.5c-21.5,0-39,17.6-39,39.1v114.1h-5.9v-114c0-24.9,20.2-45.2,45-45.2c12,0,22.7,5,31,12.5
c6.8,6.1,10.5,11.4,16.6,18.6c-2.1-36.9,60.5-43,79.7-9.4v-89.9h6v108c-9-11.3-14.2-22.4-24.4-28.2c-7.2-4.1-15.4-5.8-22.8-6
c-14.6-0.5-32.5,6-32.4,23.8c0.1,16.7,16.3,20.2,27.6,21.2c6.2,0.6,13.8,0.8,19.4,2.5c4.6,1.4,7.8,4,7.8,8.2
c0,8.5-9.2,12.9-18.8,12.9c-11,0-15.3-3.2-20.4-7.6c-6.9-5.9-12.2-12.6-16.1-17.1c4.6,3.9,9.4,5.7,14.2,7.3
c9.4,9.2,13.3,11.4,22,11.6c4.5,0.1,12.9-1.9,12.9-6.4c0.1-3.8-8.9-4.5-15.1-4.9c-12.4-0.7-26.8-2.9-35.4-12.1
c-3.6-3.8-7.7-7.9-11.2-12.6C272.1,225.5,267.2,220.6,262.8,215.8 M384,271c6.5,5.7,15,8.9,23.7,8.9c19.9,0,36.2-16.3,36.2-36.4
c0-20-16.3-36.4-36.2-36.4c-12.6,0-23.7,6.5-30.2,16.3l0-93.4h-6v111.6l6.9,9.1c-0.5-2.3-0.8-4.7-0.8-7.2
c0-16.7,13.6-30.4,30.2-30.4c16.7,0,30.2,13.7,30.2,30.4c0,16.7-13.6,30.4-30.2,30.4c-6.8,0-13-2.3-18.1-6
c-8.3-7.2-14.9-17-21.6-26.1c-5.2-7-10.4-14-15.6-20.9c-6.8-8.9-18.8-14-30.4-14.2c-16-0.3-29.9,6.1-30.1,21.4
c-0.1,13.8,15.1,17.9,29.9,18.5c11.4,0.5,25,2.5,25,12.5c0,13.2-13.4,16.3-22.5,16.4c-10.4,0.1-17.6-4.4-24.4-11
c-4.5-4.3-8.8-9.6-13.3-14.9c-8.8-10.4-14.9-20.2-25.6-31.7c-6.6-6.6-15.6-10.7-25.6-10.7c-20,0-36.3,16.4-36.3,36.5v113.8h6.1
l-0.1-93.8c6.5,9.9,17.7,16.5,30.3,16.5c19.2,0,35-15.1,36.2-34l-6.8-9.9c0.6,2.3,0.9,4.7,0.9,7.2c0,16.7-13.6,30.4-30.3,30.4
c-16.7,0-30.3-13.7-30.3-30.4c0-16.7,13.6-30.4,30.3-30.4c8.2,0,15.7,3.3,21.1,8.7c8.2,9,14.3,18.9,22.1,27.9
c7.8,9.1,15.5,18.8,24.9,25.4c6.5,4.6,11.1,6.1,21,6.2c12.2,0,28.1-4.7,28.3-22c0.1-14.2-17.2-18.4-30.7-18.7
c-5.1-0.1-12.7-1-17.7-3.3c-3.5-1.7-6.4-4.9-6.3-9.3c0.2-12.3,12.3-15.2,23.9-15.3c5.3,0,12.4,1,18.9,5.8c4.1,3,8.3,7.6,12.9,14.2
C363.3,246.2,372.3,258.7,384,271 M151.8,570.9h340.4V434.7H151.8V570.9z M151.8,570.9"/>
<path class="st2" d="M190.4,533.5h2.1v-21.6h-2.1V533.5z M201.5,533.5h2.1v-18.6h0.1l10.7,18.6h2.9v-21.6h-2.1v19h-0.1l-10.9-19
h-2.7V533.5z M230,533.5h2.1v-19.7h6.3v-1.9h-14.8v1.9h6.3V533.5z M247.2,513.8h2.2c2.9,0,5.4,0.2,5.4,3.7c0,3-2.9,3.9-5.3,3.9h-2.2
V513.8z M245.1,533.5h2.1v-10.2h1.7c2,0,3,0.1,4.2,2.9l3.1,7.3h2.3l-3.7-8.3c-0.7-1.5-1-2.4-2.8-2.6v-0.1c2.6-0.3,4.8-2.2,4.8-5
c0-4-2.5-5.6-6.3-5.6h-5.5V533.5z M264.8,533.5h2.1l2.3-5.8H280l2.3,5.8h2.2l-8.5-21.6h-2.4L264.8,533.5z M279.2,525.8h-9.3
l4.7-11.9L279.2,525.8z M291.6,533.5h10.7v-1.9h-8.6v-19.7h-2.1V533.5z M306.3,522.7c0.1,6.6,3.2,11.1,9.4,11.1
c6.2,0,9.4-4.5,9.4-11.1c0.1-5.8-3-11.2-9.4-11.2C309.3,511.5,306.3,516.8,306.3,522.7L306.3,522.7z M315.8,513.4
c5,0,7.3,4.7,7.3,9.3c0,4.6-2.3,9.3-7.3,9.3c-5,0-7.3-4.7-7.3-9.3C308.4,518.1,310.7,513.4,315.8,513.4L315.8,513.4z M346,531.2
c-1,0.6-3.2,0.8-4.6,0.8c-5.6,0-8.7-3.9-8.7-9.3c0-5.3,3.1-9.3,8.7-9.3c1.9,0,3.8,0.2,5.5,1.1l0.3-2c-1.4-0.7-4.1-1-5.8-1
c-6.6,0-10.8,4.6-10.8,11.2c0,6.7,4.1,11.1,10.8,11.1c2.4,0,4.5-0.4,6.7-1.3v-10.7h-7.1v1.8h5V531.2z M356.9,533.5h2.1v-21.6h-2.1
V533.5z M366.9,532.9c1.1,0.5,2.8,0.9,4.9,0.9c3.3,0,7-1.7,7-6.1c0-6.3-9.8-6.3-9.8-10.7c0-2.8,2.4-3.7,4.6-3.7c1.4,0,3,0.3,3.9,0.8
l0.3-1.9c-1.5-0.6-3.2-0.7-4.2-0.7c-3.8,0-6.8,2.2-6.8,5.6c0,5.7,9.8,6.2,9.8,10.4c0,3.1-2.2,4.4-4.8,4.4c-2,0-3.5-0.5-4.7-1.3
L366.9,532.9z M392,533.5h2.1v-19.7h6.3v-1.9h-14.8v1.9h6.3V533.5z M408.6,533.5h2.1v-21.6h-2.1V533.5z M434.3,512.3
c-1.1-0.6-3.7-0.8-4.9-0.8c-6.6,0-10.8,4.6-10.8,11.2c0,6.7,4.1,11.1,10.8,11.1c1.3,0,3.8-0.2,4.9-0.9l-0.1-1.9
c-1.2,0.7-3.4,0.9-4.8,0.9c-5.7,0-8.7-3.9-8.7-9.3c0-5.3,3.1-9.3,8.7-9.3c1.5,0,3.4,0.2,4.8,0.9L434.3,512.3z M441.6,532.9
c1.1,0.5,2.8,0.9,4.9,0.9c3.3,0,7-1.7,7-6.1c0-6.3-9.8-6.3-9.8-10.7c0-2.8,2.4-3.7,4.6-3.7c1.4,0,3,0.3,3.9,0.8l0.3-1.9
c-1.5-0.6-3.2-0.7-4.2-0.7c-3.8,0-6.8,2.2-6.8,5.6c0,5.7,9.8,6.2,9.8,10.4c0,3.1-2.2,4.4-4.8,4.4c-2,0-3.5-0.5-4.7-1.3L441.6,532.9z
M206.2,471.1c-1.1-0.6-3.7-0.8-4.9-0.8c-6.6,0-10.8,4.6-10.8,11.1c0,6.7,4.1,11.2,10.8,11.2c1.4,0,3.8-0.2,4.9-0.9l-0.1-1.9
c-1.2,0.7-3.4,0.9-4.8,0.9c-5.6,0-8.7-3.9-8.7-9.3c0-5.3,3.1-9.3,8.7-9.3c1.5,0,3.4,0.2,4.8,0.9L206.2,471.1z M216.5,472.6h2.2
c2.9,0,5.4,0.2,5.4,3.7c0,3-2.9,4-5.3,4h-2.2V472.6z M214.4,492.3h2.1v-10.2h1.7c2,0,3,0.1,4.2,2.9l3.1,7.3h2.3l-3.7-8.3
c-0.7-1.4-1.1-2.4-2.8-2.6v-0.1c2.6-0.3,4.8-2.2,4.8-5c0-4-2.5-5.6-6.3-5.6h-5.5V492.3z M235,492.3h10.9v-1.9h-8.8v-8.3h8v-1.9h-8
v-7.7h8.4v-1.9H235V492.3z M252.3,492.3h2.1l2.3-5.8h10.8l2.3,5.8h2.2l-8.5-21.6H261L252.3,492.3z M266.7,484.6h-9.3l4.7-11.9
L266.7,484.6z M280.8,492.3h2.1v-19.7h6.3v-1.9h-14.8v1.9h6.3V492.3z M295.8,492.3h2.1v-21.6h-2.1V492.3z M306.7,492.3h2.1v-18.6
h0.1l10.7,18.6h2.8v-21.6h-2.1v19h-0.1l-10.9-19h-2.7V492.3z M345.8,490c-1,0.6-3.2,0.8-4.6,0.8c-5.7,0-8.7-3.9-8.7-9.3
c0-5.3,3.1-9.3,8.7-9.3c1.9,0,3.8,0.2,5.5,1.1l0.2-2c-1.4-0.7-4.1-1-5.7-1c-6.6,0-10.8,4.6-10.8,11.1c0,6.7,4.1,11.2,10.8,11.2
c2.4,0,4.5-0.4,6.7-1.3v-10.7h-7.1v1.9h5V490z M374.3,492.3h2.1v-9.1l8-12.4h-2.3l-6.7,10.5l-6.5-10.5h-2.5l8,12.4V492.3z
M388.8,481.5c0.1,6.6,3.3,11.2,9.4,11.2c6.2,0,9.4-4.5,9.4-11.2c0.1-5.8-3-11.1-9.4-11.1C391.8,470.3,388.8,475.6,388.8,481.5
L388.8,481.5z M398.3,472.2c5,0,7.3,4.7,7.3,9.3c0,4.6-2.3,9.3-7.3,9.3c-5,0-7.3-4.7-7.3-9.3C390.9,476.9,393.2,472.2,398.3,472.2
L398.3,472.2z M431.1,470.7H429v14c0,3.5-1.9,6.1-5.7,6.1c-3.7,0-5.7-2.5-5.7-6.1v-14h-2.1v14c0,6.4,4.6,7.9,7.8,7.9
c3.1,0,7.8-1.6,7.8-7.9V470.7z M442.2,472.6h2.2c2.9,0,5.4,0.2,5.4,3.7c0,3-2.9,4-5.4,4h-2.2V472.6z M440,492.3h2.1v-10.2h1.8
c2,0,2.9,0.1,4.2,2.9l3.1,7.3h2.3l-3.7-8.3c-0.7-1.4-1-2.4-2.8-2.6v-0.1c2.6-0.3,4.8-2.2,4.8-5c0-4-2.5-5.6-6.3-5.6H440V492.3z
M440,492.3"/>
</svg>

After

Width:  |  Height:  |  Size: 7.5 KiB

View File

@@ -0,0 +1,12 @@
<svg width="364" height="280" viewBox="0 0 363.6 280" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M30 280H24V274V268V262V256H18H12V262V268V274V280H6H0V274V268V262V256V250V244V238V232V226V220H6H12V226V232V238V244H18H24V238V232V226V220H30H36V226V232V238V244V250V256V262V268V274V280H30Z" fill="black"/>
<path d="M76.7998 280H70.7998H64.7998H58.7998H52.7998H46.7998V274V268V262V256V250V244V238V232V226V220H52.7998H58.7998H64.7998H70.7998H76.7998H82.7998V226V232H76.7998H70.7998H64.7998H58.7998V238V244H64.7998H70.7998H76.7998H82.7998V250V256H76.7998H70.7998H64.7998H58.7998V262V268H64.7998H70.7998H76.7998H82.7998V274V280H76.7998Z" fill="black"/>
<path d="M123.6 280H117.6V274V268V262V256H111.6H105.6V262V268V274V280H99.6001H93.6001V274V268V262V256V250V244V238V232V226V220H99.6001H105.6H111.6H117.6H123.6H129.6V226V232V238V244V250V256V262V268V274V280H123.6ZM111.6 244.1H117.6V238.1V232.1H111.6H105.6V238.1V244.1H111.6Z" fill="black"/>
<path d="M158.4 280H152.4H146.4H140.4V274V268V262V256V250V244V238V232V226V220H146.4H152.4H158.4H164.4V226V232H170.4H176.4V238V244V250V256V262V268H170.4H164.4V262V256V250V244V238V232H158.4H152.4V238V244V250V256V262V268H158.4H164.4V274V280H158.4Z" fill="black"/>
<path d="M217.2 280H211.2H205.2H199.2H193.2H187.2V274V268V262V256V250V244V238V232V226V220H193.2H199.2V226V232V238V244V250V256V262V268H205.2H211.2H217.2H223.2V274V280H217.2Z" fill="black"/>
<path d="M264 280H258V274V268V262V256H252H246V262V268V274V280H240H234V274V268V262V256V250V244V238V232V226V220H240H246H252H258H264H270V226V232V238V244V250V256V262V268V274V280H264ZM252 244.1H258V238.1V232.1H252H246V238.1V244.1H252Z" fill="black"/>
<path d="M310.8 280H304.8V274V268V262V256V250V244H298.8H292.8V250V256V262V268V274V280H286.8H280.8V274V268V262V256V250V244V238V232V226V220H286.8H292.8V226V232H298.8H304.8V226V220H310.8H316.8V226V232V238V244V250V256V262V268V274V280H310.8Z" fill="black"/>
<path d="M333.6 280H327.6V274V268V262V256V250V244V238V232V226V220H333.6H339.6H345.6H351.6H357.6H363.6V226V232V238V244V250V256H357.6H351.6H345.6H339.6V262V268V274V280H333.6ZM345.6 244.1H351.6V238.1V232.1H345.6H339.6V238.1V244.1H345.6Z" fill="black"/>
<path d="M253.6 114.3V72L242.4 57.4V32.8L206.5 19.9V0H157.2V19.9L121.3 32.8V57.4L110.1 72V114.3L121.3 129.4L110.1 164.2L181.9 180.1L253.6 164.2L242.4 129.4L253.6 114.3Z" fill="black"/>
<path d="M181.9 129.4C201.7 129.4 217.8 113.3 217.8 93.5001C217.8 73.7001 201.7 57.6001 181.9 57.6001C162.1 57.6001 146 73.7001 146 93.5001C146 113.3 162.1 129.4 181.9 129.4Z" fill="#FFF200"/>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

BIN
graphics/ui/k9s.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

View File

@@ -0,0 +1,107 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 320" width="256" height="320">
<defs>
<!-- Dark background gradient -->
<radialGradient id="bg" cx="50%" cy="50%" r="50%">
<stop offset="0%" stop-color="#0a1e3d"/>
<stop offset="70%" stop-color="#06132a"/>
<stop offset="100%" stop-color="#020a18"/>
</radialGradient>
<!-- Sweep trail gradient (conic approximation) -->
<linearGradient id="sweepGlow" x1="0" y1="0" x2="1" y2="0" gradientTransform="rotate(-45, 0.5, 0.5)">
<stop offset="0%" stop-color="#00ccff" stop-opacity="0"/>
<stop offset="60%" stop-color="#00aaff" stop-opacity="0.15"/>
<stop offset="100%" stop-color="#66eeff" stop-opacity="0.5"/>
</linearGradient>
<!-- Ring glow -->
<filter id="ringGlow" x="-20%" y="-20%" width="140%" height="140%">
<feGaussianBlur stdDeviation="1.5" result="blur"/>
<feMerge>
<feMergeNode in="blur"/>
<feMergeNode in="SourceGraphic"/>
</feMerge>
</filter>
<!-- Dot glow -->
<filter id="dotGlow" x="-100%" y="-100%" width="300%" height="300%">
<feGaussianBlur stdDeviation="2.5" result="blur"/>
<feMerge>
<feMergeNode in="blur"/>
<feMergeNode in="SourceGraphic"/>
</feMerge>
</filter>
<!-- Sweep line glow -->
<filter id="lineGlow" x="-50%" y="-50%" width="200%" height="200%">
<feGaussianBlur stdDeviation="3" result="blur"/>
<feMerge>
<feMergeNode in="blur"/>
<feMergeNode in="SourceGraphic"/>
</feMerge>
</filter>
<!-- Outer ring glow -->
<filter id="outerGlow" x="-10%" y="-10%" width="120%" height="120%">
<feGaussianBlur stdDeviation="4" result="blur"/>
<feMerge>
<feMergeNode in="blur"/>
<feMergeNode in="SourceGraphic"/>
</feMerge>
</filter>
<!-- Clip to circle -->
<clipPath id="radarClip">
<circle cx="128" cy="128" r="118"/>
</clipPath>
</defs>
<!-- === RADAR ICON === -->
<!-- Background -->
<circle cx="128" cy="128" r="128" fill="#020a18"/>
<circle cx="128" cy="128" r="118" fill="url(#bg)"/>
<!-- Outer ring -->
<circle cx="128" cy="128" r="118" fill="none" stroke="#3ab8ff" stroke-width="3.5" filter="url(#outerGlow)" opacity="0.9"/>
<!-- Concentric rings -->
<g filter="url(#ringGlow)" opacity="0.6">
<circle cx="128" cy="128" r="90" fill="none" stroke="#2090dd" stroke-width="1.2"/>
<circle cx="128" cy="128" r="62" fill="none" stroke="#2090dd" stroke-width="1.2"/>
<circle cx="128" cy="128" r="34" fill="none" stroke="#2090dd" stroke-width="1.2"/>
</g>
<!-- Crosshairs (subtle) -->
<g opacity="0.15" stroke="#3ab8ff" stroke-width="0.5">
<line x1="128" y1="10" x2="128" y2="246"/>
<line x1="10" y1="128" x2="246" y2="128"/>
</g>
<!-- Sweep trail (pie wedge) -->
<g clip-path="url(#radarClip)">
<path d="M128,128 L128,10 A118,118 0 0,1 211.5,44.5 Z" fill="url(#sweepGlow)" opacity="0.7"/>
<!-- Secondary softer trail -->
<path d="M128,128 L211.5,44.5 A118,118 0 0,1 240,95 Z" fill="#00ccff" opacity="0.05"/>
</g>
<!-- Sweep line -->
<line x1="128" y1="128" x2="211" y2="45" stroke="#aaeeff" stroke-width="2" filter="url(#lineGlow)" stroke-linecap="round"/>
<line x1="128" y1="128" x2="211" y2="45" stroke="#ffffff" stroke-width="1" opacity="0.9" stroke-linecap="round"/>
<!-- Radar blips -->
<g filter="url(#dotGlow)">
<circle cx="155" cy="68" r="4" fill="#ffffff" opacity="0.95"/>
<circle cx="178" cy="108" r="3.5" fill="#ffffff" opacity="0.9"/>
<circle cx="98" cy="85" r="3" fill="#eeffff" opacity="0.7"/>
<circle cx="85" cy="155" r="3.5" fill="#eeffff" opacity="0.65"/>
<circle cx="160" cy="175" r="3" fill="#eeffff" opacity="0.6"/>
<circle cx="108" cy="195" r="3.5" fill="#eeffff" opacity="0.5"/>
</g>
<!-- Center dot -->
<circle cx="128" cy="128" r="3" fill="#66eeff" filter="url(#dotGlow)" opacity="0.8"/>
<!-- === TEXT === -->
<text x="128" y="298" text-anchor="middle" font-family="'Helvetica Neue', Helvetica, Arial, sans-serif" font-size="42" font-weight="600" letter-spacing="4" fill="#3ab8ff">RADAR</text>
</svg>

After

Width:  |  Height:  |  Size: 4.1 KiB

BIN
graphics/windows/hyperv.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

BIN
graphics/windows/hyperv.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

202
literatur.bib Normal file
View File

@@ -0,0 +1,202 @@
@online{psbDasUnternehmen,
author = {psb intralogistics GmbH},
title = {\glqq Das Unternehmen\grqq},
url = {https://www.psb-gmbh.de/psb/das-unternehmen/},
urldate = {2026-04-29}
}
https://isyfact.github.io/isyfact-standards-doku/current/referenzarchitektur/software-technisch.html
# distros
@online{distroList,
author = {Nubenetes},
title = {\glqq Kubernetes Distributions \& Installers\grqq},
url = {https://nubenetes.com/matrix-table/},
urldate = {2026-04-29}
}
@online{distroK3s,
author = {k3s Project Authors},
title = {\glqq Lightweight Kubernetes\grqq},
url = {https://k3s.io/},
urldate = {2026-04-29}
}
@online{distroRKE2,
author = {Rancher by SUSE},
title = {\glqq Introduction: RKE2\grqq},
url = {https://docs.rke2.io/},
urldate = {2026-04-29}
}
@online{distroOpenShift,
author = {Red Hat},
title = {\glqq Red Hat OpenShift\grqq},
url = {https://www.redhat.com/en/technologies/cloud-computing/openshift},
urldate = {2026-04-29}
}
@online{distroOKD,
author = {OKD Contributors \& Red Hat},
title = {\glqq OKD Kubernetes Platform\grqq},
url = {https://okd.io/},
urldate = {2026-04-29}
}
@online{distroKubeadm,
author = {Kubernetes},
title = {\glqq Kubeadm | Kubernetes\grqq},
url = {https://kubernetes.io/docs/reference/setup-tools/kubeadm/},
urldate = {2026-05-15}
}
@online{k8sIngress,
author = {Kubernetes},
title = {\glqq Ingress\grqq},
url = {https://kubernetes.io/docs/concepts/services-networking/ingress/},
urldate = {2026-05-04},
date = {2025-11-24}
}
@online{k8sGatewayAPI,
author = {Kubernetes SIG-Network},
title = {\glqq Introduction: Kubernetes Gateway API\grqq},
url = {https://gateway-api.sigs.k8s.io/},
urldate = {2026-05-07},
}
@online{uiHeadlamp,
author = {Kubernetes SIG-UI},
title = {\glqq Headlamp\grqq},
url = {https://headlamp.dev/},
urldate = {2026-05-08},
year = 2026
}
@online{uiHeadlampDeprecated,
author = {Kubernetes},
title = {\glqq Deploy and Access the Kubernetes Dashboard\grqq},
url = {https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/},
urldate = {2026-05-08},
date = {2026-02-03}
}
@online{uiRadar,
author = {KoalaOps, Inc. (d/b/a Skyhook)},
title = {\glqq Radar | The missing Kubernetes UI.\grqq},
url = {https://radarhq.io/},
urldate = {2026-05-14},
year = 2026
}
@online{uiK9s,
author = {Imhotep Software LLC},
title = {\glqq K9s - Manage Your Kubernetes Clusters in Style\grqq},
url = {https://k9scli.io/},
urldate = {2026-05-08},
year = 2025
}
@online{windowsHyperVIntro,
author = {Microsoft},
title = {\glqq Hyper-V virtualization in Windows Server and Windows\grqq},
url = {https://learn.microsoft.com/en-us/windows-server/virtualization/hyper-v/overview},
urldate = {2026-05-08},
date = {2025-08-05}
}
@online{fluxCNCF,
author = {Cloud Native Computing Foundation},
title = {\glqq Flux | CNCF\grqq},
url = {https://www.cncf.io/projects/flux/},
urldate = {2026-05-08},
year = 2026
}
@online{fluxHeadlampPlugin,
author = {Headlamp},
title = {\glqq headlamp\_flux 0.6.0\grqq},
url = {https://artifacthub.io/packages/headlamp/headlamp-plugins/headlamp_flux},
urldate = {2026-05-08},
date = {2024-11-07}
}
@online{fluxSourceController,
author = {Flux},
title = {\glqq Source Controller | Flux\grqq},
url = {https://fluxcd.io/flux/components/source/},
urldate = {2026-05-08},
date = {2025-09-23}
}
@online{fluxKustomizeController,
author = {Flux},
title = {\glqq Kustomize Controller | Flux\grqq},
url = {https://fluxcd.io/flux/components/kustomize/},
urldate = {2026-05-08},
date = {2023-05-24}
}
@online{fluxHelmController,
author = {Flux},
title = {\glqq Helm Controller | Flux\grqq},
url = {https://fluxcd.io/flux/components/helm/},
urldate = {2026-05-08},
date = {2022-08-30}
}
@online{fluxImagePipeline,
author = {Flux},
title = {\glqq Image reflector and automation controllers | Flux\grqq},
url = {https://fluxcd.io/flux/components/image/},
urldate = {2026-05-08},
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,
author = {Rust Community},
title = {\glqq Frequently Asked Questions\grqq},
year = {2020},
url = {https://prev.rust-lang.org/en-US/faq.html},
urldate = {2025-07-10},
note = {Git: https://github.com/rust-lang/prev.rust-lang.org.git; Commit SHA: 3c8d24f62264c5dd1bd8cb4acc29c2fa2bbc678e}
}
@online{rsLogo,
author = {Mara Bos},
date = {2022-01-02},
title = {\glqq Rust Logo SVG\grqq},
url = {https://raw.githubusercontent.com/rust-lang/rust-artwork/refs/heads/master/logo/rust-logo-blk.svg},
urldate = {2025-08-27}
}
@misc{MITREnewtocwe,
author = {{MITRE (Inst.)}},
date = {2023-06-05},
title = {\glqq New to CWE\grqq},
url = {https://cwe.mitre.org/about/new_to_cwe.html},
urldate = {2025-07-10},
}
@article{MITREvulntheory,
author = {Steve Christey and Conor Harris},
date = {2009-10-29},
journaltitle = {MITRE CWE Document Archive},
title = {Introduction to Vulnerability Theory},
url = {https://cwe.mitre.org/documents/vulnerability_theory/intro.html},
urldate = {2025-08-24},
note = {Document version: 1.0.1},
}
@book{Euclidean,
author = {Meighan I. Dillon},
title = {\glqq Geometry Through History : Euclidean, Hyperbolic, and Projective Geometries\grqq},
year = {2018-03-21},
edition = {1},
publisher = {Springer International Publishing AG},
isbn = {978-3319741345},
}
@book{vegeta,
author = {Kurt Gieck and Reiner Gieck},
publisher = {McGraw-Hill School Education Group},
title = {Engineering Formulas},
edition = {7},
year = {1997},
isbn = {978-0070245723}
}

43
prev.tex Normal file
View File

@@ -0,0 +1,43 @@
Entwicklung einer
Deployment- und
Upgradestrategie
in Kubernetes-basierten
AirGap
On-Premise Umgebungen
für psb-selektron
\section{Problemstellung: Was soll gelöst werden?}
\section{Motivation: Warum habe ich dieses Thema gewählt?}
Aktuell existiert innerhalb der psb das Problem dass Deployments und Upgrades von aktueller Software einen großen Aufwand mit sich ziehen.
\section{Zielgruppe: Wer hat das Problem?}
Die psb intralogistics GmbH, spezifisch die Projektabwicklung Informatik.
\section{Forschungsfrage}
Wie kann mithilfe von Kubernetes, Kubernetes-Operatoren, LLMs die Day2 Operations vereinfacht werden?
\section{Heutiger Forschungsstand}
Ist das Thema schon fertig oder noch frisch
\section{Welche Theorien / Ideen existieren}
\section{Methodischer Ansatz}
\section{Resourcen die du Brauchst}
K8s Cluster
Echte Cluster
\section{Ziel Ergebnistyp}
Was soll rauskommen
\section{Was steht am ende als ergebnis}

26
todos.md Normal file
View File

@@ -0,0 +1,26 @@
- hochregulierte wie *behörden* -> eingrenzen da nicht alle davon ohne internet laufen
3
- Iran nuclear airgap breach schreiben
4
5
kaum Forschungswissen da geheimgehaltung
8
9
4
5 bewertungen
zusammenlegen