Sikov - stock.adobe.com

Vergleich von Open-Source-Orchestrierungs-Tools für DevOps

Orchestrierung ist ein wichtiger Bestandteil des modernen IT-Ökosystems. Wir vergleichen die beliebtesten DevOps-Tools und zeigen, ob und wie diese zusammenarbeiten.

Das zentrale Ziel von DevOps besteht darin, eine effiziente Softwarebereitstellung durch ein hohes Maß an Teamarbeit zu gewährleisten, um IT-Umgebungen und -Anwendungen zu entwickeln, zu testen, bereitzustellen und bei Bedarf zu skalieren.

Diese Umgebungen erfordern dynamische Workflows und Automatisierung, um Effizienz und Wiederholbarkeit zu gewährleisten. Orchestrierungs-Tools reduzieren nicht nur Fehler bei der Arbeitsbelastung, sondern senken auch die Entwicklungs- und Bereitstellungskosten und steigern die Produktivität.

Die Wahl des richtigen Orchestrierungsansatzes hängt von einer Reihe von Faktoren ab, von der Unternehmensgröße und den DevOps-Fähigkeiten bis hin zu den Geschäftszielen und Budgetbeschränkungen. Geschäfts- und IT-Führungskräfte können Open Source Tools einsetzen, um technologische Defizite, die durch begrenzte finanzielle Mittel entstehen, auszugleichen. Sehen wir uns die besten Open-Source-Orchestrierungs-Tools für Continuous Integration (CI) sowie Continuous Deployment (CD) an und untersuchen wir die wichtigsten Funktionen, die sie auszeichnen.

CI/CD und die Rolle der Orchestrierung

Der Prozess des Erstellens, Verpackens, Testens und Bereitstellens von Software findet oft gleichzeitig in verschiedenen Bereichen statt. Diese Bereitstellungswege werden als kontinuierliche Integration und kontinuierliche Bereitstellung oder CI/CD-Pipelines bezeichnet. Diese Pipelines wurden entwickelt, um den Build-Prozess zu automatisieren und zu rationalisieren, und ermöglichen DevOps-Teams die einfache Bereitstellung neuer Artefakte.

Für eine erfolgreiche CD-Ausführung ist eine genaue Kenntnis der bereitgestellten Artefakte und ihrer Leistung erforderlich, um zu beurteilen, ob eine bestimmte Instanz zurückgesetzt werden muss. Diese Fähigkeiten liegen außerhalb des Bereichs von CI, das zustandslos ist und automatisch eine neue Pipeline ausführt, wenn der Code aktualisiert wird.

Häufig verwalten DevOps-Teams mehrere Pipelines, was eine optimierte Verwaltung erforderlich macht. Sobald die Automatisierung eingerichtet ist, koordiniert und integriert ein Orchestrator sich wiederholende DevOps-Prozesse. Teams können den Kontext und die Konfiguration über ihre Pipelines hinweg einfach pflegen, um skalierbare und hochverfügbare Anwendungen bereitzustellen. Die Orchestrierung koordiniert beispielsweise alle automatisierten Aufgaben und sorgt für eine schnelle Veröffentlichung von Funktionen und Korrekturen, während gleichzeitig die Bereitstellungszeiten minimiert und die Kosten für die Servicebereitstellung gesenkt werden.

Verwalten mit Kubernetes, Orchestrierung mit Rancher und Nomad

Container sind für die aktuelle Software- und verteilte Anwendungsentwicklung von grundlegender Bedeutung. Diese virtualisierten Betriebssysteme stellen die ausführbaren Dateien, den Binärcode, die Bibliotheken und die Konfigurationsdateien bereit, die für die Ausführung von Anwendungen erforderlich sind. Über das Open-Source-Framework Kubernetes können DevOps-Teams containerisierte Arbeitslasten in Form von Clustern verwalten. Jedes einzelne Cluster hat seinen eigenen Satz von Benutzern, Administratoren, zugewiesenen Speicherressourcen und Sicherheitsparametern.

Kubernetes ist praktisch für Cloud-native Anwendungen, da Cluster Hosts in Public, Private und Hybrid Clouds umfassen können. DevOps-Teams nutzen deklarative Konfigurationen und Automatisierung, um Container zu orchestrieren, Speicher hinzuzufügen und Anwendungen sofort zu skalieren sowie Bereitstellungen und Aktualisierungen zu kontrollieren.

Die Meinungen über die Benutzerfreundlichkeit gehen jedoch weit auseinander. So ist beispielsweise die Einrichtung von Kubernetes relativ einfach, aber die sichere Bereitstellung von Kubernetes in der Produktion kann für große Unternehmen aufgrund der Komplexität schwieriger sein.

Der Open-Source-Dienst Rancher vereinfacht die Kubernetes-Orchestrierung, indem er eine Web-UI für die direkte Verwaltung bereitstellt. Entwickler können Cluster erstellen und die Sicherheit mit externen Authentifizierungsquellen wie Active Directory, Lightweight Directory Access Protocol (LDAP) und Single Sign-On (SSO) verwalten. Beispielsweise können Entwickler über die Rancher-Konsole Benutzer definieren, Berechtigungen zuweisen und die Ressourcennutzung in Clustern festlegen.

Mit Rancher können IT-Teams Workloads und Projekte auch ohne tiefgreifende Kenntnisse von Kubernetes verwalten. DevOps-Praktiken ermöglichen es IT-Administratoren, neue Pipelines zu erstellen, Code zu testen und Workloads bereitzustellen, indem sie Rancher mit GitHub integrieren, um eine Reihe von Phasen und Schritten auszuführen. Rancher bietet außerdem Bereitstellungsfunktionen für alle gängigen Cloud-Anbieter, darunter AWS, Google Cloud und Microsoft Azure.

Abbildung 1: Die verschiedenen Stufen des DevOps-Prozesses.
Abbildung 1: Die verschiedenen Stufen des DevOps-Prozesses.

Nomad von HashiCorp ist ein weiteres Open-Source-Orchestrierungs-Tool, das sich für Cloud-native Anwendungen eignet, die eine schnelle Skalierung erfordern. Nomad bietet ein dynamisches Application Sizing zur Nachverfolgung der Ressourcennutzung, und die automatische Skalierung sorgt für eine möglichst effiziente Nutzung der Ressourcen. DevOps-Teammitglieder können Workloads und zugehörige Objekte segmentieren, um mandantenfähige Cluster bereitzustellen.

Für die Anwendungsbereitstellung verwenden die Entwickler einen deklarativen Infrastructure-as-Code-Ansatz, um Aufträge zu planen und die Ressourcennutzung zu verbessern. DevOps-Teams können auch Microservices sowie containerisierte und nicht-containerisierte Workloads orchestrieren. Nomad bietet eine leichtgewichtige Schicht für einen einfachen Betrieb über einen einzigen Orchestrierungs-Workflow.

Höhere Agilität mit Jenkins, Jenkins X oder GitLab CI

Jenkins ist ein etabliertes Open Source Tool, das Schnittstellen zu einer Vielzahl von Entwicklungsansätzen bietet und diese orchestriert. Bei konservativem Einsatz mit modernen Best Practices bietet Jenkins einen leistungsstarken und flexiblen CI/CD-Ansatz, insbesondere für komplexere Prozesse und Multiplattform-Builds. Allerdings erfordert Jenkins die Einrichtung von Benutzerbeschränkungen sowie die Beachtung der Anzahl der verwendeten Plug-Ins.

Teams können Jenkins mit einfachen deklarativen Pipelines und kleinen, definierten Bibliotheken erweitern, um ihre Jenkins-Dateien übersichtlich zu halten. Das Ergebnis ist ein leistungsfähiges und effektives Orchestrierungssystem für komplexe Prozesse und Multiplattform-Builds. Teams können auch die Verwaltung vereinfachen, indem sie das Jenkins Cloud-Plug-In für Docker verwenden, um einen Container als Jenkins-Agentenknoten bereitzustellen und die Konfigurationen mit Ansible zu verwalten.

Um eine Überbeanspruchung von Plug-ins zu vermeiden, können DevOps-Teams Jenkins X einsetzen und das Befehlszeilen-Tool für die Orchestrierung von CI/CD, den Import von Projekten und das Bootstrapping nativer Cloud-Anwendungen verwenden. Jenkins X ist Kubernetes-nativ, so dass keine tiefgreifenden Kubernetes-Kenntnisse erforderlich sind. Es vereinfacht die Erstellung von Clustern und bietet Vorschauumgebungen für Pull Requests. DevOps-Teams können die enge Verknüpfung mit Git nutzen, um auf Dockerfiles, Jenkinsfiles oder Helm Charts zuzugreifen, um Anpassungen und Workflow-Optimierungen vorzunehmen.

Ob für einfachere Setups oder Cluster-Isolierung, Jenkins X beschleunigt die Ausführung von Aufgaben und lässt sich in wichtige Cloud-Plattformen wie Google, AWS, Azure und Oracle integrieren. Jenkins X ermöglicht auch schnelle Wiederherstellungen, da Versionen, Kommentare und nachvollziehbare Informationen über das zentralisierte GitOps zugänglich sind.

Schließlich ermöglicht GitLab CI DevOps-Teams, mehrere Pipelines zu orchestrieren und bestimmte Abschnitte zur Fehlerbehebung und Überprüfung erneut auszuführen. Entwickler verwenden YAML Anchors, um bekannten, guten Code in ihren YAML-Dateien wiederzuverwenden. Teams, die GitLab CI verwenden, erhalten eine Single Source of Truth für die Überprüfung von Codeänderungen und arbeiten durch integrierte Automatisierungsfunktionen und kürzere Release-Zyklen effizienter zusammen.

Mit dem verteilten Versionskontrollsystem von GitLab CI können Administratoren die Entwicklung und Codegenerierung lokal verwalten und Container für die Erstellung und Prüfung orchestrieren. Unternehmen können GitLab CI vor Ort hosten oder das Tool in Verbindung mit Kubernetes in einer Public Cloud bereitstellen. DevOps-Teams können kostenlos auf die wichtigsten Funktionen von GitLab CI sowie auf 50.000 CI-Pipeline-Minuten zugreifen. GitLab CI bietet eine effiziente Planung, Quellcodeverwaltung, Konfigurationskontrolle und Überwachung, um DevOps-Teams eine nahtlose CI zu ermöglichen.

Erfahren Sie mehr über Softwareentwicklung