Mit Kubernetes und unserer Hilfe den Weg in die Cloud gehen

Wir helfen dir bei deiner Kubernetes-Migration

Deine Legacy-Anwendungen und Monolithen für eine Cloud-Native-Zukunft fit zu machen, kann eine entmutigende Aufgabe sein. Aber keine Sorge, wir haben das schon oft gemacht und kennen uns bestens aus. Wir helfen dir bei der Planung und Umsetzung deiner Migrationsstrategie und machen dich fit für die Cloud Native Zukunft.

Ernten, was man sät

Warum solltest du zu Kubernetes migrieren?

Kubernetes ist ein Open-Source-Container-Orchestrierungssystem zur Automatisierung der Bereitstellung, Skalierung und Verwaltung von containerisierten Anwendungen. Unternehmen migrieren aus verschiedenen Gründen zu Kubernetes, unter anderem:

Skalierbarkeit

Skalierbarkeit

Verbesserte Skalierbarkeit und Verfügbarkeit: Kubernetes macht es einfach, Anwendungen je nach Bedarf zu vergrößern oder zu verkleinern. Außerdem sorgt es für hohe Verfügbarkeit, indem es ausgefallene Container automatisch neu startet und neue Container auf anderen Knoten im Cluster einplant.

Streamlining

Streamlining

Optimierter Bereitstellungsprozess: Mit Kubernetes kannst du Anwendungen schnell und zuverlässig bereitstellen, indem du vordefinierte Konfigurationen verwendest, die in YAML-Dateien gespeichert sind. Damit entfällt die Notwendigkeit, die Konfiguration jedes Mal manuell zu ändern, wenn du eine neue Version deiner Anwendung bereitstellen musst.

Sicherheit

Sicherheit

Erhöhte Sicherheit: Kubernetes bietet integrierte Sicherheitsfunktionen wie die rollenbasierte Zugriffskontrolle (RBAC) und die Durchsetzung von Netzwerkrichtlinien, die deine Anwendungen vor böswilligen Angriffen und unbefugtem Zugriff schützen.

Kosten

Kosten

Indem sie mit Kubernetes mehrere Anwendungen auf demselben Host laufen lassen, können Unternehmen ihre Infrastrukturkosten senken, da sie nicht mehr für jede Anwendung eigene Hardware benötigen.

Anbieterabhängigkeit

Anbieterabhängigkeit

Kein Vendor Lock-in: Eine gut aufgesetzte Kubernetes-Implementierung versetzt dich in die Lage, relativ einfach zwischen Anbietern zu wechseln und minimiert somit dein Risiko dich von einem Anbieter abhängig zu machen.

Die Entstehung von Entwicklungsplattformen

Arten der Kubernetes-Migration

Wir wollen unsere Produktions- und Staging-/Testsysteme auf Kubernetes (K8s) migrieren und Entwickler mit privaten oder individuellen Kubernetes-Clustern entwickeln lassen. In diesem Blogbeitrag findest du ein Beispiel für die lokale Entwicklung mit Kubernetes. Je nach Entwicklungsprozess müssen bestehende Projekte vor der Migration vorbereitet werden. Wir schauen uns drei Beispielprojekte an, die sich im Entwicklungsverfahren und im Hosting unterscheiden: eines wurde lokal mit Vagrant entwickelt, zwei mit Docker-Images und eines wird entweder mit Docker Compose oder Kubernetes gehostet. Das Ziel ist es, dass alle drei Projekte sowohl in der Entwicklung als auch im Betrieb unter der Stufe "Container-Orchestrated" erscheinen.

Die folgende Grafik veranschaulicht die zeitliche Entwicklung von Entwicklungs- und Hosting-Systemen. Wir können unsere Beispielprojekte klar zuordnen, werden aber die erste Stufe, "Bare Metal", ignorieren.

Unikube DPOPE - Infographic (V2.2)HalfSize - white.png


Beispiel 1: Lokale Entwicklung mit Vagrant

Vagrant wurde entwickelt, um Produktionsumgebungen in einer virtuellen Maschine zu simulieren. Jetzt, mit dem Cloud-Native-Ansatz werden die Anwendungen und ihre Umgebungsvariablen in Containern gespeichert. Um zu Docker zu migrieren, muss ein Dockerfile erstellt werden. Man muss sich überlegen, welche Teile der Anwendung in einzelne Dienste unterteilt werden können. Dadurch wird verhindert, dass die Anwendung zu einem Monolithen wird. Zum Beispiel sollten Systeme wie eine Datenbank oder ein Cache nicht im Dockerfile landen, sondern als einzelne Dienste konfiguriert werden.

Für alle benötigten Dienste, die K8s-Ressourcen erzeugen, sollten Helm-Charts erstellt werden. Schließlich muss der Entwicklungsprozess auf Kubernetes umgestellt werden. Die Entwickler können lokale Cluster verwenden, die von k3d, microk8s oder minikube simuliert werden, oder Remote-Cluster, die nur von einem Entwickler genutzt werden.

Beispiel 2: Lokale Entwicklung und Hosting mit Docker Compose

Unser zweites Projekt nutzt Docker Compose für die Entwicklung und das Hosting des Produktionssystems. Wir haben bereits gründlich über die verschiedenen Dienste nachgedacht, die die Anwendung benötigen wird, und verfügen über Dockerdateien und eine Docker-Compose.yaml, um die benötigten Dienste zu definieren. Der wichtigste Teil der Migration besteht in der Erstellung der Kubernetes-Konfigurationsdateien. Um Kubernetes-Konfigurationen zu erstellen, verwenden wir Helm-Charts, um die Wartung in größeren Projekten zu erleichtern. Alternativ können wir auch den kompose command verwenden, um die Docker-Compose.yaml in Manifestdateien umzuwandeln. Schließlich stellen wir den lokalen Entwicklungsprozess auf Kubernetes um.

Beispiel 3: Lokale Entwicklung über Docker Compose, Hosting über Kubernetes

Bei diesem Projekt haben wir unsere Dienste bereits unterteilt und verfügen über ein oder mehrere Dockerfiles. Für die lokale Entwicklung wird Docker Compose verwendet, während das Hosting über Kubernetes erfolgt. Der einzige Migrationsschritt ist die Umstellung des lokalen Entwicklungsprozesses auf Kubernetes. Die Produktionsumgebung für die lokale Entwicklung muss in der Docker-Compose.yaml simuliert werden. Das erfordert einen gewissen Mehraufwand und birgt das Problem, dass die lokale Umgebung nicht ganz mit der Produktionsumgebung übereinstimmt. Das bedeutet, dass bei der Bereitstellung unerwartete Probleme oder Nebeneffekte auftreten können."

Herausforderungen während der Migration

Bei der Migration müssen einige Herausforderungen bewältigt werden. Dazu gehören die Umstellung auf lokale Entwicklungsprozesse und alle zusätzlichen Tools, die die Entwickler beherrschen müssen. Ein Operations-Spezialist mit Kubernetes-Kenntnissen wird benötigt, um Helm-Diagramme zu entwickeln.

Hindernisse aus der Sicht der Entwickler:

  1. Benötigt Wissen, wie man kubectl benutzt, um die direkte Interaktion mit dem Cluster zu ermöglichen.
  2. Live-Code-Reloading: Wenn Code geändert wird, sollte es möglich sein, die Änderungen so schnell wie möglich zu testen - ohne erst ein neues Docker-Image erstellen zu müssen und es im lokalen Cluster einzusetzen. Das ist zum Beispiel mit Gefyra möglich
  3. Für die meisten Entwickler ist der Debugger ein wichtiger Bestandteil eines optimalen Entwicklungsprozesses. Bei einem lokalen Kubernetes-Cluster muss dieser Debugger wieder explizit konfiguriert werden. In einer Python-Umgebung machst du das zum Beispiel mit python remote debug.

Um wieder den gesamten Funktionsumfang nutzen zu können, den Entwickler von Docker Compose kennen, müssen diese zumindest die Grundlagen von drei weiteren Tools erlernen. Wir helfen dir, die richtige Toolchain für dein Unternehmen zu finden, unterstützen dich bei der Implementierung der Tools und schulen deine Entwickler/innen in der Nutzung deines neuen Toolsets.

Unser Podcast: Tools for the Craft (ENG)

E2: Remote Kubernetes development environments

Michael und Robert werfen einen genaueren Blick auf die verschiedenen Optionen für die Remote-Kubernetes-Entwicklung und geben einige Beispiele aus der Praxis.

Mehr von unseren Podcasts findest du hier:

Die Migration von Docker Compose

Viele Unternehmen nutzen noch immer Docker Compose, um ihre containerisierten Anwendungen zu verwalten. Docker Compose ist ein Tool, mit dem Entwickler/innen Multi-Container-Anwendungen mithilfe einer YAML-Datei definieren und ausführen können. Das macht es einfach, komplexe Anwendungen auf jeder Plattform einzusetzen und zu verwalten.

Docker Compose ist besonders nützlich für Unternehmen, die bestehende Anwendungen in verschiedenen Sprachen und Frameworks geschrieben haben, da sie diese Anwendungen schnell bereitstellen und verwalten können, ohne sie von Grund auf neu schreiben zu müssen. Außerdem kann mit Docker Compose die Anzahl der Container, in denen eine Anwendung läuft, schnell erhöht oder verringert werden, was es ideal für Unternehmen mit schwankender Auslastung macht.

Trotz seiner vielen positiven Eigenschaften hat Docker Compose auch einige Nachteile, die es für moderne Cloud-native Implementierungen weniger geeignet machen. So fehlt zum Beispiel die Unterstützung für Kubernetes, dem heutigen De-facto-Standard für die Container-Orchestrierung. Außerdem können die YAML-Dateien mit der Zeit komplex und schwer zu pflegen werden.

Trotz dieser Nachteile nutzen viele Unternehmen Docker Compose aufgrund seiner Benutzerfreundlichkeit und Vertrautheit immer noch als Legacy-Lösung. Das gilt vor allem für kleinere Unternehmen, die nicht über die Ressourcen oder das Fachwissen verfügen, um ihre bestehenden Anwendungen auf modernere Lösungen wie Kubernetes zu migrieren.

migration

Eine kleine Hilfe für die Ablösung von Docker Compose

Starte mit kompose.io

Kompose.io ist eine großartige Lösung für Unternehmen, die von Docker Compose zu Kubernetes migrieren wollen. Kompose ist ein Tool, mit dem Entwickler ihre bestehenden Docker Compose-Dateien in Kubernetes YAML-Dateien umwandeln können, so ist es einfach, bestehende Anwendungen zu migrieren, ohne sie von Grund auf neu schreiben zu müssen.

Kompose bietet außerdem zusätzliche Funktionen, die die Verwaltung und Bereitstellung von Anwendungen in Kubernetes erleichtern. So kann Kompose zum Beispiel automatisch Kubernetes-Manifeste für Services, Deployments und Ingresses erstellen und Helm-Diagramme für den Einsatz von Anwendungen in Kubernetes-Clustern generieren. Außerdem kann Kompose die Anzahl der Container, auf denen eine Anwendung läuft, schnell erhöhen oder verringern und ist damit ideal für Unternehmen mit schwankender Auslastung.

Insgesamt ist Kompose eine großartige Lösung für Unternehmen, die von Docker Compose zu Kubernetes migrieren wollen. Es macht die Migration bestehender Anwendungen viel einfacher und schneller, als wenn sie von Grund auf neu geschrieben werden müssten. Außerdem erleichtern die zusätzlichen Funktionen die Verwaltung und Bereitstellung von Anwendungen in Kubernetes-Clustern.

Unsere Experten können dir bei deiner Migration mit kompose.io helfen. Lass uns darüber reden.

Mögliche Probleme bei der Umstellung auf Kubernetes

Komplexität

Komplexität

Kubernetes ist ein komplexes System mit vielen beweglichen Teilen, und die Umstellung darauf kann schwierig und zeitaufwändig sein. Sie erfordert ein tiefes Verständnis des Systems, um sicherzustellen, dass alles richtig konfiguriert ist und reibungslos funktioniert.

Sicherheitsrisiken

Sicherheitsrisiken

Kubernetes kann anfällig für Sicherheitsprobleme sein, wenn es nicht richtig konfiguriert ist. Falsche Einstellungen können zu unbefugtem Zugriff oder Datenverlust führen. Deshalb ist es wichtig, sich zu vergewissern, dass dein Cluster sicher ist.

Schlechte Performance

Schlechte Performance

Wenn deine Anwendung nicht gut für den Betrieb in Containern geeignet ist oder du nicht genügend Ressourcen für deinen Cluster zur Verfügung hast, kann die Leistung unter Kubernetes leiden.

Woran du denken solltest

Wichtige Faktoren, die vor der Migration zu Kubernetes zu beachten sind

Bewerte deine Anwendung

Bewerte deine Anwendung

Vor der Migration zu Kubernetes ist es wichtig, deine Anwendung zu prüfen und festzustellen, ob sie für den Betrieb in Containern geeignet ist. Nicht alle Anwendungen lassen sich problemlos in Containern betreiben. Deshalb musst du sicherstellen, dass deine Anwendung mit Kubernetes kompatibel ist, bevor du Zeit und Ressourcen in den Migrationsprozess investierst.

Vorausplanen

Vorausplanen

Es ist wichtig, vorausschauend zu planen und die Ressourcen zu berücksichtigen, die für den Betrieb deiner Anwendung in Kubernetes benötigt werden. Dazu gehören Dinge wie CPU, Speicher, Storage und Netzwerkanforderungen.

Sicherheitsüberlegungen

Sicherheitsüberlegungen

Vergewissere dich, dass du verstehst, wie sich der Einsatz von Kubernetes auf deine Anwendungs-Sicherheit auswirkt, und ergreife die notwendigen Maßnahmen, um die Sicherheit deines Clusters zu gewährleisten. Dazu gehört die Einrichtung einer rollenbasierten Zugriffskontrolle (RBAC) und die Durchsetzung von Netzwerkrichtlinien für deinen Cluster.

Performance-Überwachung

Performance-Überwachung

Sobald deine Anwendung auf Kubernetes läuft, ist es wichtig, ihre Leistung genau zu überwachen, um mögliche Probleme oder verbesserungswürdige Bereiche zu erkennen.

Bereite deine Anwendung(en) auf die Migration vor

Was kommt nach deiner Migration?

Was kommt als Nächstes? Entwicklung & Testen

Nach der Migration auf Kubernetes ist es wichtig sicherzustellen, dass deine Entwicklungs- und Testabläufe für die neue Umgebung optimiert sind. Kubernetes bietet eine leistungsstarke Plattform für den Betrieb von Anwendungen, erfordert aber auch einen anderen Ansatz für die Entwicklung und das Testen als traditionelle Umgebungen.

Bei der Entwicklung von Anwendungen auf Kubernetes ist es zum Beispiel wichtig, dass alle Codeänderungen in einer Umgebung getestet werden, die wie die Produktionsumgebung funktioniert, bevor sie überführt werden. So kann sichergestellt werden, dass Fehler oder Leistungsprobleme erkannt und behoben werden, bevor sie sich auf den Endnutzer auswirken. Dies kann jedoch schwierig sein und ist wieder einmal der Punkt, an dem unsere Open-Source-Tools für dich nützlich sind.

Wir helfen dir dabei, deinen Entwicklern vorkonfigurierte Kubernetes-Umgebungen zur Verfügung zu stellen, die die Entwicklung und das schnelle Testen wirklich einfach machen und dir gleichzeitig die technischen Mittel an die Hand geben, um schnell zu sehen, welche Ergebnisse Codeänderungen bringen, ohne auf einen langsamen Build-Push-Zyklus zurückgreifen zu müssen.

Insgesamt sind gute Entwicklungs- und Testabläufe bei der Migration auf Kubernetes unerlässlich. Durch die Befolgung von Best Practices wie der Verwendung von Staging-Umgebungen, automatisierten Testwerkzeugen und CI/CD-Pipelines können Unternehmen sicherstellen, dass ihre Anwendungen auf der Plattform reibungslos laufen.

Wir bei Blueshoe haben uns verpflichtet, bei der Migration von Anwendungen auf Kubernetes die höchste Servicequalität zu bieten. Unser Team aus erfahrenen Ingenieuren arbeitet eng mit dir zusammen, um sicherzustellen, dass deine Anwendungen rechtzeitig und effizient migriert werden und dabei alle Sicherheits- und Zuverlässigkeitsaspekte berücksichtigt werden.

Wir bieten umfassende Unterstützung während des gesamten Prozesses, von der Planung und dem Design bis hin zur Bereitstellung und Wartung nach der Migration. Dank unserer Erfahrung mit Kubernetes kannst du sicher sein, dass deine Anwendungen erfolgreich und sicher migriert werden.

Cloud-native projects

Das Aufsetzen unserer Kundenprojekte nach dem Cloudnative-Ansatz hilft uns dabei, komplexe Systeme schnell und effizient zu entwickeln und kurze, effiziente Release-Zyklen umzusetzen. Die folgenden Projekte sind ein kleiner Auszug aus unseren vergangenen Cloud-native-Projekten.

Fondsfinanz - Automation Hubs

fondsfinanz kundenreferenz
Django CMS | Redis | Bootstrap | VueJS | Docker | Kubernetes

Infrastructure for automated seminar and webinar management. Including consent management, connection to existing systems and interfaces to external applications such as Go2Webinar.

Find out more

Secret Projects

Cloud-native development

Pssst! We have already worked in the field of cloud-native for a well-known car manufacturer. For some other clients as well. If you want to know more, just give us a call!

Contact us

Digitalisation and strengthening of the brand

winter-company
Django | Python | Hubspot

We developed a digital strategy with a focus on search engine optimisation for the Swiss designer of covering materials Winter & Company. Furthermore, we positioned the brand with potential new customers not having known the company so far.

Find out more