Ein Leben nach Jenkins: Consol stellt neue CI- und CD-Tools für Cloud-native Anwendungen auf den Prüfstand

Presse
Ein Leben nach Jenkins: Consol stellt neue CI- und CD-Tools für Cloud-native Anwendungen auf den Prüfstand

München, 29. Oktober 2019 – Cloud-native Anwendungen stellen spezifische Anforderungen an die Softwareentwicklung und -bereitstellung. Klassische CI- und CD-Tools stoßen hier schnell an ihre Grenzen. Consol stellt drei neue CI- und CD-Projekte vor und beleuchtet ihr Potenzial.

Im Zuge des allgemeinen Cloud-Trends werden Cloud-native Applikationen immer wichtiger. Sie basieren verstärkt auf Microservices-Architekturen, die neue Anforderungen an Continuous Integration (CI) und Continuous Delivery (CD) stellen. CI- und CD-Tools sowie Workflows müssen sich vor allem an die Geschwindigkeit und die Komplexität der Cloud-nativen Möglichkeiten anpassen.

„Klassische“ CI- und CD-Tools wie Jenkins mit ihren Funktionalitäten sind hier weniger geeignet. Stattdessen rücken inzwischen vermehrt neue Tools ins Blickfeld, die direkt aus der Cloud-nativen Entwicklung heraus entstanden sind und somit keine „Altlasten“ mit sich tragen. Wichtige Kriterien, die sie erfüllen sollten, sind unter anderem Hosting und Scheduling auf Kubernetes, Container als Pipeline-Schritte, Web-UI und „Pipeline as Code“.

Consol stellt drei neue Projekte beziehungsweise Tools vor.

1. Argo
Das Argo-Projekt besteht im Kern aus der gleichnamigen Workflow-Engine, die explizit für Kubernetes entworfen wurde. Argo-Workflows bestehen aus einer Reihe von beliebigen Containern, die über die üblichen Container-Schnittstellen parametrisiert werden. Die Bestandteile der Lösung, die Workflow-Engine selbst und das „Argo Events“ genannte Event-Subprojekt, sind sehr schnell installiert. Die Installation umfasst im Wesentlichen vier Controller-Pods und das UI-Pod und ist somit leichtgewichtig. Argo kann problemlos dezentral pro Projekt installiert werden.

Dem Projekt ist anzumerken, dass es sich generisch auf Workflows spezialisiert und nicht speziell auf Continuous Integration zugeschnitten ist. Dennoch ist es möglich, aus den Argo-Komponenten eine effektive und vor allem flexible CI-Pipeline aufzubauen. Dazu existieren diverse Beispiele in den Repositories des Herstellers. So kann etwa via Argo Events eine Webhook-URL eingerichtet werden. Bei Aufruf startet sie einen Argo-Workflow als Pipeline, dessen Definition aus dem Git-Repository zu laden ist. Das Repository wird im Payload des Aufrufs angegeben. Damit ergibt sich letztlich eine „Pipeline as Code“-Funktionalität.

Für die Konfiguration sowohl der Workflows als auch der Event-Handler verwendet Argo ausschließlich Kubernetes-Objekte und Custom Resources. Das relativ spartanische, aber funktionale Web-Dashboard informiert über den aktuellen Stand der Workflows. Ein Command Line Client für das Definieren und Starten der Pipelines und ein separates Tool namens „Argo CD“ für den Aspekt Delivery runden das Angebot ab.

2. InfraBox
InfraBox von SAP wird als „Cloud Native Continuous Integration System“ positioniert und setzt ebenfalls auf Kubernetes auf. Das Deployment besteht aus einer größeren Menge an Pods inklusive einiger externer Abhängigkeiten, und ist deswegen nicht mehr wirklich leichtgewichtig zu nennen.

Allerdings ist InfraBox das Tool mit der breitesten Feature-Palette. Es bringt bereits eine eigene Docker-Registry mit und laut Dokumentation werden viele Einsatzszenarien unterstützt, unter anderem auch eine Multi-Cluster-Installation, die sich über mehrere Cloud Provider erstrecken kann. Sogar eine integrierte Unterstützung für die Provisionierung von End-2-End-Testumgebungen ist vorhanden.

Auch InfraBox setzt auf Custom Resource Definitions, um Pipelines, Funktionen und die Ausführung dieser Artefakte zu verwalten. Die Pipelines laufen in einem dedizierten Namespace „infrabox-worker“, was aber eher schlecht zu dezentralen Pipelines passt.

Die Pipeline-Schritte nennt Infrabox „Jobs“. Es gibt mehrere Job-Typen mit vorgefertigten Funktionen, etwa um Repositories auszuchecken oder Images in die Registry zu übertragen. Darüber hinaus existiert aber auch ein generischer Job-Typ „docker-image“, der beliebige Images ausführen kann.

Nicht zuletzt sind noch erwähnenswert das Web-UI, das vergleichsweise komfortabel ist und die Möglichkeit benutzerdefinierter Darstellungen bietet, und das Command Line Interface „infraboxcli“, das den Entwickler beim lokalen Debugging von Jobs unterstützt.

3. Tekton und Jenkins X
Tekton ist ein sehr junges Projekt. Ursprünglich ging es aus Googles „Knative“-Produkt hervor, einer standardisierten Plattform für Serverless-Applikationen auf Kubernetes. Tekton ist der extrahierte Kern der „Build“-Komponente von Knative. Das Projekt wird von der ebenfalls erst vor Kurzem gegründeten „Continuous Delivery Foundation“ verwaltet, die nach eigenen Aussagen der Fragmentierung der CI- und CD-Landschaft entgegentreten will. Neben Google und weiteren Unternehmen ist hier auch CloudBees Mitglied. Der Jenkins-Hersteller plant, Tekton als alternative Engine seiner eigenen Cloud-nativen CI- und CD-Lösung „Jenkins X“ zu nutzen. Jenkins X besteht bisher aus dem bekannten Jenkins plus Kubernetes-Anbindung und speziellem Tooling. Aktuell ist diese Integration aber noch experimentell.

Als dedizierte Cloud-native Lösung macht Tekton einiges richtig. Sie basiert vollkommen auf Kubernetes-Scheduling und Pipelines werden als einzelne Pods mit mehreren Containern als Build-Schritte ausgeführt, die unter voller Kontrolle der Pipeline-Definition stehen. Das Interfacing ist „sauber“, das heißt, es gibt keine proprietären Kommunikationswege zwischen CI und Container. Als Image-Build-Tool wird „Kaniko“ propagiert. Die Installation ist leichtgewichtig und es gibt zwei zentrale Verwaltungs-Pods. Die Pipelines selbst werden als Custom Resources in den jeweiligen Projekten definiert und dort auch ausgeführt.

Bei Tekton handelt es sich allerdings noch um ein Projekt im Aufbau – die aktuelle Version ist 0.7.0 - vor allem auch im Hinblick auf die Dokumentation. Konzepte wie Webhook-Verarbeitung und ein Command Line Interface sind vorgesehen. „Pipeline as Code“ mit Bezug der Definition aus einem Code-Repository wird zumindest im Zusammenspiel mit Jenkins X vermutlich möglich sein. CloudBees hat bereits in Aussicht gestellt, eine automatische Migration der herkömmlichen Jenkins-Files in das neue Format anzubieten.

„Alle drei vorgestellten Lösungen befinden sich auf einem guten Weg, das CI- und CD-Erbe von Jenkins anzutreten, da sie die aus unserer Sicht erforderlichen Kriterien erfüllen, auch wenn sie verschiedene Ansätze verfolgen und unterschiedliche Anforderungen abdecken“, erklärt Oliver Weise, Senior Software Engineer bei Consol. „Das Argo-Projekt beinhaltet ein umfassendes Tool-Set für Workflows auf Kubernetes, bei dem CI nur ein Anwendungsfall unter anderen ist. InfraBox ist im Gegensatz dazu eine klassische, zentralistische Lösung mit einem reichen Feature-Set, schlüsselfertigen Funktionalitäten und dem von Jenkins gewohnten Komfort. Und Tekton als zukünftige Engine von Jenkins X ist aktuell eher noch als eine perspektivische Lösung zu betrachten, verspricht aber durchaus, eine hochinteressante Alternative zu werden.“

Leitfaden zum Download
Weitere Informationen finden sich in dem Consol-Leitfaden: „Neue Tools für Continuous Integration & Continuous Delivery in der Cloud“. Er steht zum kostenlosen Download unter https://www.consol.de/registrierung/leitfaden-cloud-native-ci-cd-tools/ zur Verfügung.

Download der Presseinformation