Microservices in Kubernetes bereitstellen DevSpace, Eclipse Che und Apache Gradle

Autor / Redakteur: Thomas Joos / Stephan Augsten

Mit DevSpace, Eclipse Che und Apache Gradle gibt es drei interessante Open-Source-Tools, um Microservices und Apps für Kubernetes zu entwickeln und bereitzustellen. Wir zeigen hier die drei Lösungen im Vergleich zu Apache Ant und Apache Maven.

Firmen zum Thema

Eclipse Che ist eine Kubernetes-native Entwicklungsumgebung für ganze Teams.
Eclipse Che ist eine Kubernetes-native Entwicklungsumgebung für ganze Teams.
(Bild: Eclipse.org)

Geht es um die Entwicklung von Microservices in Zusammenhang mit Kubernetes, kommen Entwickler um Zusatztools, die entsprechend optimiert sind, kaum herum. Wir sehen uns in diesem Beitrag drei Lösungen an, die bei der Bereitstellung von Apps und Microservices in Kubernetes unterstützen.

Die drei Tools, die wir in diesem Beitrag vorstellen, lassen sich gemeinsam einsetzen und ergänzen sich in ihrer Funktionalität. Alle drei Tools arbeiten nicht nur mit lokalen Kubernetes-Clustern zusammen, sondern können auch in der Cloud problemlos in Azure, AWS oder GCP zum Einsatz kommen. Public Clouds eignen sich dafür ebenso wie private und hybride Umgebungen. Auch OpenShift ist kein Problem für DevSpace, Eclipse Che und Apache Gradle.

Kubernetes-Apps mit DevSpace entwickeln und bereitstellen

Bei DevSpace handelt es sich um ein Open Source-Tool für die Entwicklung von Apps für Kubernetes. Das Tool bindet sich als Client an den Cluster an – unabhängig davon, ob dieser in der Cloud oder lokal betrieben wird. Das bedeutet, dass auf dem Cluster selbst keinerlei Installation notwendig ist. DevSpace funktioniert ähnlich wie kubectl, bietet aber weit aus mehr Möglichkeiten.

Mit dem Tool können Entwickler über ihren aktuellen Kube-Kontext auf den Cluster zugreifen, genauso wie mit kubectl oder helm. Nach der Installation der DevSpace-CLI auf einem Kubernetes-Client oder Entwickler-Rechner, stehen verschiedene Optionen für den Zugriff auf den Cluster zur Verfügung. Mit „devspace deploy“ lassen sich Images automatisiert bereitstellen, parallel zum Einsatz mit Docker.

Im Rahmen der Image-Erstellung automatisiert DevSpace auch das Erzeugen und Verwalten der Image-Tags. Falls notwendig, kann DevSpace Images auch in Container-Registries übertragen. Für diese Vorgänge arbeitet DevSpace mit verschiedenen Entwicklungstools zusammen und kann auch skriptbasiert ausgeführt werden.

Die Steuerung erfolgt mit einer devspace.yaml-Konfigurationsdatei. Diese ermöglicht auch das Definieren von Abhängigkeiten zwischen Images in verschiedenen Repositories. Durch diese Möglichkeiten lassen sich DevSpace und die verwendeten Images auch sehr einfach in CI/CD-Umgebungen integrieren.

Mit „devspace dev“ steht eine weitere Funktion zur Verfügung. Mit dieser Technologie ist es möglich, Container in Echtzeit zu aktualisieren, während der Code für den Container noch in der Entwicklung ist. Mit „devspace dev“ lassen sich Anwendungen bereitstellen gleichzeitig eine Echtzeitverbindung zu den bereitgestellten Containern aufbauen.

Quellcodeänderungen erkennt DevSpace, synchronisiert sie mit den laufenden Containern und baut die jeweilige Anwendung neu oder startet sie erneut. Das erspart die ständige Aktualisierung von Images und die damit notwendige Neuerstellung von Containern. Durch den bidirektionalen Dateisync und Hot Reloading lassen sich neue Versionen sehr viel schneller bereitstellen.

Weitere Optionen von DevSpace sind „init“, „ui“, „logs“ und „enter“. Mit „init“ können neue Projekte in Sekunden für die Bereitstellung in Kubernetes vorbereitet werden, „logs“ ermöglicht das Streamen der Protokolle von Containern. Eine Liste aller Container zeigt DevSpace mit „enter“ an und mit „ui“ eine lokale Verwaltungsoberfläche für die Bereitstellung von Anwendungen in Kubernetes.

Eclipse Che – Open Source-Workspace-Server für Entwickler

Bei Eclipse Che handelt es sich um eine kostenlose Entwicklungsumgebung mit Open-Source-Lizenz auf Basis von Java, die sich für die Entwicklung von Microservices mit Kubernetes eignet. Im Gegensatz zur Eclipse IDE ist Che für Container optimiert und kann eigene Container erstellen und verwenden.

Die wichtigsten Grundlagen von Che sind ein Workspace-Server und ein webbasierter Editor. Auch ein SDK ist Bestandteil von Che. Mit der RESTful-API bieten die Komponenten, vor allem der Workspace-Server, eine flexible Umgebung, die sich leicht an die eigenen Anforderungen anpassen lässt.

Die Workspaces in Che entsprechen Pods in Kubernetes. Wie Devspace auch, kann Eclipse Che nicht nur bei lokalen Kubernetes-Clustern zum Einsatz kommen, sondern auch in Cloud-Plattformen wie Microsoft Azure, AWS oder GCP. Auch in OpenShift kann Eclipse Che genutzt werden.

Die einzelnen Werkzeuge in Eclipse Che werden als Container bereitgestellt. Das hat den Vorteil, dass die Komponenten voneinander getrennt sind und eigene Arbeitsbereiche nutzen können. Durch die Trennung ist es auch möglich, alle Komponenten separat zu konfigurieren und zu aktualisieren. Anpassungen einer Komponente haben keinen Einfluss auf die anderen Container und den darin betriebenen Tools und Plug-ins von Che.

Für die Verwendung im Kubernetes-Cluster ist auf den lokalen Rechnern keine Kubernetes-Installation notwendig. Der Che Workspaces Controller ist die zentrale Steuerung, die über die Kubernetes-API Zugriff auf die Komponenten nimmt. Installation und Konfiguration können mit dem Befehlszeilentool „chetl“ erfolgen, das an „kubectl“ erinnert.

Apache Gradle im Vergleich zu Ant und Maven

Apache Gradle ist ein Build-Automatisierungstool für Kubernetes. Die Funktionen sind ähnlich zu Apache Ant und Apache Maven. Die drei Tools kommen besonders häufig zum Einsatz, wenn eine Bereitstellung auf Basis einer JVM erfolgen soll. Apache Ant (Another Neat Tool) ist eine seit Jahren bekannte Java-Bibliothek zur Automatisierung von Build-Prozessen für Java-Anwendungen.

Apache Maven ist ein Abhängigkeitsmanagement- und Build-Automatisierungstool, das ebenfalls hauptsächlich für Java-Anwendungen verwendet wird. Beide Lösungen bieten Vor- und Nachteile, und kommen in vielen Umgebungen zum Einsatz. Maven ermöglicht eine Standardisierung von Build-Dateien. Die engeren Konventionen von Maven bedeuten weniger Flexibilität als bei Ant. Das Erstellen von benutzerdefinierten Build-Skripten ist im Vergleich zu Ant bei Maven schwerer.

Apache Gradle ermöglicht die Verwaltung von Abhängigkeiten und zur Automatisierung von Builds. Dabei basiert das Open Source-Projekt auf Konzepten von Ant und Maven. Das Tool verwendet im Gegensatz zu Ant und Maven keine XML-Dateien. Gradle nutzt entweder Groovy oder Kotlin. Die Konfigurationsdateien werden dadurch kleiner und übersichtlicher.

Im Gegenzug bietet Gradle selbst zunächst wenige Funktionen. Die Erweiterung findet mit Plug-ins statt. Gradle ist oft schneller als Maven, da das Tool inkrementelle Builds ermöglicht. Außerdem bietet Gradle moderne Analyse- und Debugging-Dienste. Bei der Bedienung ist Gradle komplexer, vor allem wenn Entwickler nicht mit Groovy oder Kotlin vertraut sind.

(ID:47581364)

Über den Autor

 Thomas Joos

Thomas Joos

Freiberuflicher Autor und Journalist