Intro – Das Kubernetes Cluster DIY Pt. 1

Illustration eines Bildschirms mit einem Kubernetes Container

Anfang 2023 entschied ich mich, Kubernetes zu lernen. Die treibende Kraft hinter dieser Entscheidung war der starke Wunsch, den gesamten Bereitstellungsprozess einer Website zu meistern. Ich suchte eine Möglichkeit, noch tiefer in die Materie einzutauchen, wollte mir eine eigene Meinung bilden & den Hype um Kubernetes besser verstehen.

Nun sind einige Monate vergangen und ich erkenne inzwischen die zahlreichen Vorteile. Vor allem wächst mein Vertrauen in meine Deployments aufgrund der robusten und vereinfachten Verwaltung wesentlicher Aspekte wie:

  • Alerting

  • Monitoring

  • geplante Backups

  • Zertifikate

  • Abstürze

Außerdem verstehe ich nun die Attraktivität von Managed Services, die von Unternehmen wie Google oder Amazon angeboten werden.

Diese umfassen nicht nur alle oben genannten Aspekte und mehr, sondern bieten auch den Vorteil einer begrenzten kostenlosen Nutzung., z. B. für Start-ups. Es besteht sogar die Möglichkeit einer unbegrenzten kostenlosen Nutzung, wenn man seine Anwendung entsprechend optimieren kann.

Auch wenn es eher wenige Anwendungsbeispiele für DIY-Cluster gibt, so sind sie dennoch von großer Bedeutung. Insbesondere dann, wenn die Kostenoptimierung und der Bedarf an größeren Rechen- und Speicherressourcen zu den wichtigsten Faktoren gehören. Das betrifft z.B.:

  • Geringfügige/Non-Profit-Organisationen wie Sportvereine, Studentenvertretungen etc.

  • Private Cloud/Dienste wie nextcloud

  • Self-learning

  • Testing ground

Voraussetzungen

Bekannter Screenshot aus dem Spiel Zelda

Wenn du dich mit mir auf die Reise begeben möchtest solltest du gewisse solide Grundlagen beherrschen:

  • Docker

  • Kubernetes

  • Terraform

  • Helm

Du solltest ein solides Verständnis dieser Technologien haben – zumindest auf einer grundlegenden Ebene. Nur so wirst du in der Lage sein, ihre Nuancen und Unterschiede zu erkennen. Ich kann dir zwar Informationen und Unterstützung bieten, bin aber kein Experte für Kubernetes oder andere Technologien. Ich lerne selbst noch.

Deshalb zögere bitte nicht, Kommentare/Fragen zu hinterlassen, mir Mails zu schicken um Ideen auszutauschen oder auf Fehler hinzuweisen, die du unterwegs entdeckst.

Ich verlinke dir am Ende dieses Artikels ein paar kurze Einführungen, damit du dein Wissen zu bestimmten Themen auffrischen kannst. Aber berücksichtige bitte immer, dass sich die Technologielandschaft ständig weiterentwickelt. Daher können einige Ressourcen mit der Zeit veraltet sein. Es empfiehlt sich, wachsam zu bleiben und die Aktualität der Materialien zu überprüfen.

Alles klar? Dann lass uns gemeinsam auf diese Lernreise gehen!

Ziele

Bei der Suche nach einer praktikablen Alternative zu vollständig verwalteten Kubernetes-Diensten wie Google Kubernetes Engine (GKE), kommen mehrere entscheidende Faktoren ins Spiel. Hier sind einige wichtige Ziele/Einschränkungen für diese Blog-Serie:

  • Produktionsreife Zuverlässigkeit

  • Einfache Anpassung an Ihr Projekt

  • CI/CD-Pipeline-Integration

  • Minimale GUI-Einrichtung/ClickOps

  • Communitysupport und aktualisierbare Inhalte

    • Damit in Zukunft niemand beim Lesen dieses Leitfadens veraltete Informationen erhält.

 

Das Warum

buchstaben die das Wort why formen
©Ann H | pexels.com

Die zentrale Frage, wenn man in die Thematik eintaucht ist: “Warum?” Lass uns also einen genaueren Blick auf die Beantwortung dieser Frage werfen.

Warum nicht eine Docker-Hosting-Plattform?

Die meisten Cloud Anbieter haben nur indirekten Support für persistente Docker Volumen:

GCP

AWS ECS

Docker Compose wird von Cloud-Anbietern oft nicht direkt für Produktionsbereitstellungen unterstützt.

Warum Kubernetes?

Kubernetes bietet erweiterte Skalierbarkeit, Orchestrierung, Hochverfügbarkeit und deklarative Konfigurationsfunktionen für komplexe containerisierte Anwendungen. Es eignet sich hervorragend für die Verwaltung großer Deployments und bietet ein breites Ökosystem und Unterstützung durch die Community. Ein weiteres überzeugendes Argument für Kubernetes (k8s) ist die weitreichende Verbreitung und Verfügbarkeit bei verschiedenen Anbietern, was eine gewisse Interoperabilität ermöglicht.

Und warum kein managed Kubernetes-Cluster?

Auch wenn managed Kubernetes-Cluster zahlreiche Vorteile bieten, ist es wichtig, ihre Nachteile zu berücksichtigen, bevor man eine Entscheidung trifft.

Hier sind einige essenzielle Nachteile, die es zu beachten gilt:

  • Preis
    Der Komfort und der Support, den verwaltete Dienste bieten, sind in der Regel mit Kosten verbunden, die für Unternehmen mit begrenztem Budget möglicherweise nicht geeignet sind.

  • Unterschiedlicher Funktionsumfang

    • Der Begriff „managed“ kann je nach Anbieter unterschiedliche Bedeutungen und Funktionsumfänge umfassen.

      • GKE bietet erweiterte Überwachung, OVH nicht.

    • Jeder Anbieter kann gewisse Stärken und Schwächen haben. Die Wahl sollte auf deinen spezifischen Anforderungen basieren.

      • Im schlimmsten Fall hat der Anbieter keine Vorteile gegenüber einem DIY-Cluster

  • Herausforderungen bei der Einrichtung von Backups

    • Die Einrichtung von Backups in einem managed Kubernetes-Cluster kann eine komplexe Aufgabe sein.

    • Die Anbieter haben möglicherweise unterschiedliche Backup-Mechanismen, und es ist wichtig, die Backup-Lösung genau zu verstehen und zu implementieren, um die Datensicherheit zu gewährleisten.

  • Erhöhte Komplexität

    • Obwohl verwaltete Cluster darauf abzielen, den Kubernetes-Betrieb zu vereinfachen, können sie zusätzliche Komplexität mit sich bringen, z.B.

      • Konfigurationsnuancen

      • Beschränkungen

      • Anpassungsoptionen

  • Vendor Lock und Kontrollverlust

    • Je nach verwalteter Kubernetes-Lösung besteht das Risiko der Anbieterbindung oder des Kontrollverlusts über bestimmte Aspekte der Infrastruktur, z. B. die Steuerungsebene.

    • Es ist wichtig, das Maß an Flexibilität und Portabilität zu bewerten, das der Anbieter bietet.

Bedenke all diese Punkte gründlich. Nur wenn du sorgfältig abwägst, kannst du eine Entscheidung treffen, die den Anforderungen und Zielen deines Projekts entspricht.

Gründe für Helm

Logo der Software Helm

Helm ist ein leistungsstarker Paketmanager für Kubernetes, der die Bereitstellung und Verwaltung von Anwendungen vereinfacht. Hier sind einige überzeugende Gründe, die für den Einsatz von Helm im Kubernetes-Workflow sprechen:

  1. Streamlined Application Packaging

    • Helm ermöglicht es, Anwendungen als wiederverwendbare und versionierte Helm-Diagramme zu verpacken.

    • Die Charts kapseln alle erforderlichen Kubernetes-Ressourcen und -Konfigurationen und erleichtern so die gemeinsame Nutzung und Verteilung von Anwendungen in verschiedenen Umgebungen.

  2. Versionierung und Rollbacks

    • Helm ermöglicht die Versionskontrolle für Deployments, so dass du bei Bedarf zu einer früheren Version zurückkehren kannst.

    • Dies erleichtert die Verwaltung und Verfolgung von Änderungen in deiner Anwendung im Laufe der Zeit. So entsteht ein Sicherheitsnetz für den Fall, dass während des Einsatzes Probleme auftreten.

  3. Anpassbare Konfiguration

    • Helm-Charts unterstützen die Parametrisierung. Diese erlaubt es dir, konfigurierbare Werte zu definieren, die während der Bereitstellung leicht angepasst werden können.

    • Diese Flexibilität ermöglicht es, Anwendungskonfigurationen an unterschiedliche Umgebungen oder nutzerspezifische Anforderungen anzupassen, ohne die zugrunde liegende Diagrammstruktur zu verändern.

  4. Gemeinschaft und Repository

    • Helm verfügt über eine florierende Community, die ein umfangreiches Repository mit vorgefertigten Helm-Charts aktiv pflegt und weiterentwickelt – den Artifact Hub.

    • Diese Charts decken ein breites Spektrum von Anwendungen und Diensten ab und ersparen dir Zeit und Mühe bei der Konfiguration und dem Einsatz gängiger Softwarekomponenten.

Mit seiner aktiven Community, dem umfangreichen Chart-Repository und der Integration mit anderen Kubernetes-Tools ist Helm eine wertvolle Ergänzung deines Kubernetes-Toolkits für effiziente und konsistente Anwendungsimplementierungen.

Gründe für Kube-Hetzner

Logo der Firma Hetzner

Dieses Projekt bietet eine umfassende Lösung für die Bereitstellung von Kubernetes-Clustern auf der Hetzner Cloud unter Verwendung von Terraform.

  1. Nahtlose Integration

    • Integriert Terraform mit der Hetzner Cloud, so dass Sie Ihre Kubernetes-Cluster automatisiert und reproduzierbar bereitstellen können.

    • Bietet vorkonfigurierte Terraform-Module und -Ressourcen, die speziell auf die Hetzner Cloud zugeschnitten sind, und minimiert so den Zeit- und Arbeitsaufwand für die Einrichtung.

  2. Hetzner Cloud Vorteile

    • Durch die Nutzung der Infrastruktur der Hetzner Cloud profitierst du von den Vorteilen ihrer zuverlässigen und skalierbaren Ressourcen.

    • Die Hetzner Cloud bietet leistungsstarke virtuelle Maschinen, effiziente Netzwerke und flexible Speicheroptionen. Sie ist damit eine ausgezeichnete Wahl für das Hosting von Kubernetes-Clustern.

    • Die Konfiguration und Einrichtung von Nodes, Netzwerk und Storage erfolgt API (als Code).
      Dadurch werden genau die Ressourcen allokiert, die für den Betrieb eines Kubernetes-Clusters benötigt werden. Im Gegensatz dazu bieten Cloud-Anbieter zwar eine Vielzahl von zusätzlichen Funktionen an, verlangen jedoch auch entsprechend höhere Beiträge dafür.

  3. Terraform-Flexibilität

    • Es ist möglich Einstellungen wie Knotengrößen, Speicherkapazitäten, Netzwerke und mehr einfach anzupassen.

  4. Community-Unterstützung

    • Das Projekt profitiert von einer aktiven Gemeinschaft aus Mitarbeitern und Nutzern.

    • Du profitierst außerdem vom kollektiven Wissen und der Erfahrung der Community. So fällt es leichter, Probleme zu beheben, Ideen auszutauschen und Anleitungen zu Best Practices für die Erstellung und Verwaltung von Clustern zu erhalten.

  5. Dokumentation und Aktualisierungen:

    • Das Projekt bietet eine ausführliche Dokumentation mit Schritt-für-Schritt-Anleitungen und Beispielen, die einen schnellen Einstieg ermöglichen.

    • Außerdem wird das Projekt aktiv gepflegt und regelmäßig aktualisiert, um die Kompatibilität mit den neuesten Versionen von Terraform und den Hetzner Cloud APIs sicherzustellen.

Ganz gleich, ob du ein Kubernetes-Neuling oder ein erfahrener Nutzer bist: Dieses Projekt wird dir dabei helfen, den Workflow bei der Erstellung von Clustern zu optimieren und dich auf die Bereitstellung und Verwaltung deiner Anwendungen zu konzentrieren.

Links & further reading:

Alptuğ Dingil

Alptuğ Dingil

Alptuğ unterstützt uns bereits seit 2022 im Bereich Softwareentwicklung. Neben den Kundenprojekten sucht er immer wieder nach neuen Herausforderungen und beschäftigte sich in jüngster Zeit mit Kubernetes und der Konfiguration eines DIY-Clusters.

Kürzliche Posts

Elixir

Code BEAM Europe 2023

Last month we attended Code BEAM Europe, a conference centered around programming languages that run on the BEAM virtual machine

Read More »
Projekte

Case Study: WSAM ProDu

Die Wärtsilä SAM Electronics GmbH (WSAM) aus Hamburg ist spezialisiert auf die Konstruktion, Montage, Verkabelung und Inbetriebnahme von komplexen elektrischen

Read More »