Consol 31.10.2019, 08:44 Uhr

Neue CI-/CD-Tools für Cloud-native Anwendungen

Cloud-native Anwendungen stellen spezifische Anforderungen an die Softwareentwicklung und -bereitstellung. Klassische CI-/CD-Tools stoßen hier schnell an ihre Grenzen. Consol hat drei neue CI- und CD-Projekte vorgestellt.
(Quelle: www.consol.de)
Cloud-native Applikationen basieren verstärkt auf Microservice-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.
Consol hat drei neue Projekte beziehungsweise Tools geprüft und beurteilt sie wie folgt:

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. Argo wurde generisch auf Workflows spezialisiert und nicht speziell auf Continuous Integration zugeschnitten. 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 ein 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.

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.

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.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.
„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.“
Weitere Informationen bietet der Consol-Leitfaden "Neue Tools für Continuous Integration & Continuous Delivery in der Cloud", der nach einer Registrierung kostenlos geladen werden kann.


Das könnte Sie auch interessieren