CI- und CD-Tools für Cloud-native Anwendungen

Consol stellt Jenkins-Alternativen vor

| Redakteur: Ulrike Ostler

Die DevOps-Methode soll den CI/CD-Circle beschleunigen. Cloud-native CI/CD Tools bringen diesen Prozess voran.
Die DevOps-Methode soll den CI/CD-Circle beschleunigen. Cloud-native CI/CD Tools bringen diesen Prozess voran. (Bild: Consol, Oktober 2019)

Cloud-native Anwendungen stellen andere Anforderungen an die Software-Entwicklung und -bereitstellung als solche, die sich mit klassische CI- und CD-Tools lösen lassen, sagt Oliver Weise, Senior Software Engineer bei Consol. Das Unternehmen stellt drei alternative CI- und CD-Open-Source-Projekte vor und beleuchtet ihr Potenzial.

Cloud-native Applikationen basieren auf Microservices-Architekturen, die neue Anforderungen an Continuous Integration (CI) und Continuous Delivery (CD) stellen. CI- und CD-Tools sowie Workflows müssen vor allem an die Geschwindigkeit und die Komplexität der Cloud-nativen Möglichkeiten angepasst sein.

Laut Consol-Software-Enigneer Weise sind „klassische“ CI- und CD-Tools wie „Jenkins“ wenig geeignet. Stattdessen rückten 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“.

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 des Werkzeugs, die Workflow-Engine selbst und das „Argo Events“ bezeichnete Event-Subprojekt, sind 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“-Funktion.

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 ergänzen das Angebot.

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. Zudem ist eine integrierte Unterstützung für die Provisionierung von End-2-End-Testumgebungen 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 heißen bei 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.

Tekton und Jenkins X

„Tekton“ ist ein noch 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.

Projekt im Aufbau

Als dedizierte Cloud-native Software 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.8.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.

Oliver Weise ist Senior Software Engineer bei Consol.
Oliver Weise ist Senior Software Engineer bei Consol. (Bild: Consol, Oktober 2019)

Senior Software Engineer Weise: „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. 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 zur Verfügung.

Was meinen Sie zu diesem Thema?

Schreiben Sie uns hier Ihre Meinung ...
(nicht registrierter User)

Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
Kommentar abschicken
copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Kontaktieren Sie uns über: support.vogel.de/ (ID: 46216029 / RZ-Tools)