GitOps

Configuration as Code (CasC) ist weit verbreitet. Dabei wird CasC auf verschiedenen Ebenen eingesetzt. Beispiele sind Puppet und Ansible auf Softwareebene, aber auch Infrastructure as Code (IaC) ist inzwischen bereits State-of-the-Art oder zumindest auf dem Weg dorthin. Bei CasC wird der Soll-Zustand eines Software-Systems in Code beschrieben und in einem Repository abgelegt. Das jeweilige Tool gleicht dann den Ist-Zustand und den Soll-Zusstand ab und versucht, den Sollzustand herzustellen. GitOps setzt dieses Prinzip auf Clusterebene um. …

Es geht weiter ...

Nach einer längeren Pause bin ich dabei, den Faden wieder aufzunehmen und die Kubernetesreihe fortzuführen. In der Pause, die deutlich länger als die geplanten Sommerpause war, war ich damit beschäftigt mir einige Grundlagen der Programmiersprache GO anzueignen und die Shellscripte (nettista-bootstrap) in GO zu überführen. Dazu später mehr. Außerdem haben mich einige andere Projekte und die Erwerbsarbeit so stark in Anspruch genommen, dass die Motivation zum Schreiben neuer Artikel zu gering war. …

Kubernetes-Cluster erzeugen

Nachdem wir die Basis-Infrastruktur in Form von Hetzner Cloud-Servern provisioniert und konfiguriert haben, fehlt nun nur noch ein letzter Schritt zum laufenden Kubernetes-Cluster. Diesen Schritt dokumentiere ich mit diesem Blogpost. Kubespray Eine der vielen Möglichkeiten, ein Kubernetes-Cluster aufzusetzen, ist Kubespray. Kubespray setzt, wie ich bereits im Blogpost Konfiguration der Basis Infrastruktur angedeutet hatte, auf Ansible. Dies ist auch der Hauptgrund, weshalb ich mich für Kubespray entschieden habe. Mit Ansible hatte ich bereits einige gute Erfahrungen gesammelt und mich deshalb früh entschieden, Ansible für das Basis-Setup zur Konfiguration der Basis Infrastruktur einzusetzen. …

Konfiguration der Basis Infrastruktur

Als ich mit meinen Experimenten begann, bot Hetzner nicht die Möglichkeit, private Netzwerke zu erzeugen. Jeder Hetzner-Server hat eine öffentliche IP-Adresse und steht damit im Internet. Somit stellte sich unmittelbar die Frage nach der Sicherheit. Das Thema spielt auf verschiedenen Ebenen eine Rolle. Um die Kommunikation zwischen Master und Nodes abzusichern, entschied ich mich, Wireguard zu verwenden. Um die Zahl der möglichen Angriffsvektoren zu minimieren, werden per Uncomplicated Firewall (UFW) alle nicht explizit benötigten Ports geschlossen werden. …

Basis Infrastrukur erzeugen

Mit den vielen einleitenden Worten und Vorbemerkungen ist jetzt Schluss. Umgebung für die Clustererzeugung vorbereiten Im ersten Schritt legen wir ein Basisverzeichnis und darin das Verzeichnis repos an. Das Basisverzeichnis heißt bei mir clusterbase. Nachdem ich die Verzeichnisse angelegt habe, clone ich das Repository nettista-bootstrap Dann werden einige für das weitere Setup notwendige Abhängigkeiten installiert und schließlich die Tools Terraform, Helm und die Hetzner CLI heruntergeladen. Die Schritte im Einzelnen: …