Wir stellen Kontroler vor: Eine Kubernetes-Planungs-Engine für DAGs

Mary-Kate Olsen
Freigeben: 2024-11-22 15:59:23
Original
669 Leute haben es durchsucht

Was ist Controller?

Kontroler ist eine Open-Source-Kubernetes-Planungs-Engine, die die Verwaltung von gerichteten azyklischen Graphen (DAGs) vereinfachen soll. Mit Kontroler können Sie Workflows in YAML definieren, Aufgaben als Containerjobs ausführen und sie sogar über eine optionale webbasierte Benutzeroberfläche visualisieren. Unabhängig davon, ob Sie Workflows nach einem Zeitplan ausführen oder auf Echtzeitereignisse reagieren müssen, bietet Kontroler eine flexible, Kubernetes-native Lösung.

Dennoch muss ich bedenken, dass sich Kontroler derzeit im Alpha-Stadium befindet. Es eignet sich ideal zum Experimentieren und Prototyping, ist jedoch möglicherweise noch nicht für den Produktionseinsatz bereit. Als Nebenprojekt wird Kontroler nicht unterstützt. Die Verwendung in der Produktion erfolgt daher auf eigenes Risiko!

Wenn Sie sich das GitHub-Repository ansehen möchten, finden Sie es hier: https://github.com/GreedyKomodoDragon/Kontroler

Warum Controller verwenden?

Die Verwaltung von Workflows auf Kubernetes kann eine Herausforderung sein. Während Kubernetes leistungsstarke Grundfunktionen wie CronJobs und Jobs bietet, sind für die Koordinierung komplexer Arbeitsabläufe mit Abhängigkeiten, Wiederholungsversuchen und dynamischen Triggern oft benutzerdefinierte Skripte oder externe Tools erforderlich. Kontroler vereinfacht diesen Prozess, indem es eine Kubernetes-native Lösung zum Definieren, Planen und Verwalten von Arbeitsabläufen als gerichtete azyklische Graphen (DAGs) bereitstellt.

Das zeichnet Kontroler aus:

1. Gitops DAG-Management mit YAML

Kontroler ermöglicht Ihnen die Definition Ihres gesamten Workflows – einschließlich Aufgaben, Abhängigkeiten, Wiederholungslogik und bedingter Ausführung – mithilfe unkomplizierter YAML-Dateien. Dieser Ansatz sorgt dafür, dass Ihre Arbeitsabläufe deklarativ und versioniert sind und problemlos zwischen Teams geteilt werden können.

Packen Sie sie in ein Helm-Diagramm ein und verwenden Sie ein automatisiertes Bereitstellungssystem wie ArgoCD oder FluxCD, und Sie haben Ihre DAGs innerhalb eines GitOps-Workflows verwaltet.

2. Unterstützt ereignisgesteuerte und geplante Arbeitsabläufe

Ganz gleich, ob Sie Workflows benötigen, die nach einem regelmäßigen Zeitplan ausgeführt werden müssen (wie CronJobs) oder auf Echtzeitauslöser reagieren müssen (z. B. eine Nachricht aus einer Warteschlange), Kontroler hat alles für Sie. Es integriert beide Planungsparadigmen nahtlos und ist somit vielseitig für eine Vielzahl von Anwendungsfällen geeignet.

Kontroler arbeitet mit DagRuns (einer benutzerdefinierten Ressourcendefinition oder CRD, die Kontroler überwachen kann). Um einen DAG-Lauf auszuführen, erstellen Sie einfach einen DagRun und Kontroler verwaltet die Ausführung. Durch die Bereitstellung dieser Funktionalität außerhalb des Controllers ermöglicht Kontroler eine nahtlose Integration mit externen Systemen. Unten sehen Sie ein Beispiel für einen DagRun:

apiVersion: kontroler.greedykomodo/v1alpha1
kind: DagRun
metadata:
  labels:
    app.kubernetes.io/name: dagrun
    app.kubernetes.io/instance: dagrun-sample
  name: dagrun-sample
spec:
  dagName: dag-sample
  parameters:
    - name: first
      fromSecret: secret-name-new
    - name: second
      value: value_new
Nach dem Login kopieren

Sie geben einfach den Namen der DAG an, optional einschließlich aller Parameter. Parameter verwenden ihre Standardwerte, wenn keine angegeben sind.

3. Nahtlose Integration mit Containern

Als Kubernetes-native Anwendung nutzt Kontroler die Vorteile der Plattform. Von einfachen Skripten bis hin zu komplexen Anwendungen stellt das Container-First-Design von Kontroler sicher, dass jede Arbeitslast problemlos in eine DAG integriert werden kann.

Um Doppelarbeit weiter zu reduzieren, fügen wir Unterstützung für Aufgaben als CRDs hinzu.

4. Bietet optionale Benutzeroberfläche für bessere Sichtbarkeit

Während sich YAML hervorragend für Infrastructure-as-Code eignet, kann die Visualisierung von Arbeitsabläufen und die Verfolgung ihrer Ausführung das Debuggen und Optimieren erheblich vereinfachen. Kontroler bietet eine optionale webbasierte Benutzeroberfläche zum Erstellen und Überwachen von DAGs und bietet Teams eine intuitive Möglichkeit, Arbeitsabläufe zu verwalten.

Introducing Kontroler: A Kubernetes Scheduling Engine for DAGs

Im Screenshot oben sehen Sie Folgendes:

  • Verbindungen zwischen Aufgaben
  • In einem DagRun wird der Status angezeigt
  • Pod-Ergebnisse, wenn Sie auf das Netzwerk klicken

Unter der Haube wird diese Funktionalität von vis-network unterstützt, einem Open-Source-Projekt zum Erstellen von Diagrammen. Ihr GitHub-Repository finden Sie hier. Ursprünglich haben wir unser eigenes Grafiktool entwickelt, fanden es jedoch schwierig zu skalieren und schwierig, komplexe Grafiken lesbar zu machen. Aus diesem Grund haben wir diese Open-Source-Lösung übernommen.

5. Flexible Pod-Vorlagen für erweiterte Konfigurationen

Mit den Pod-Vorlagen von Kontroler können Sie Ihre Aufgaben mit erweiterten Kubernetes-Funktionen wie Geheimnissen, PVCs, Knotenaffinität, Sicherheitskontexten und mehr anpassen. Dadurch erhalten Sie eine detaillierte Kontrolle darüber, wie Aufgaben ausgeführt werden, und stellen so die Kompatibilität mit den spezifischen Anforderungen Ihres Clusters sicher.

Flexibilität von Datenspeichern

Eine der größten Herausforderungen bei der Verwaltung von Arbeitsabläufen besteht darin, sicherzustellen, dass die zugrunde liegende Infrastruktur mit Ihren Anforderungen skaliert werden kann. Kontroler bietet flexible Datenbankunterstützung und Protokollierungsfunktionen, um Teams die Verwaltung von DAGs und die Erfassung detaillierter Ausführungsprotokolle zu erleichtern. Egal, ob Sie mit einem schlanken Setup oder einer robusteren Produktionsumgebung arbeiten, Kontroler bietet Optionen, die Ihren Anforderungen gerecht werden.

SQLite (Standard kleiner Maßstab)

Für kleinere Setups oder während der Entwicklung ist SQLite die von Kontroler verwendete Standarddatenbank. Es ist einfach, leichtgewichtig und erfordert nicht viel Konfiguration. Wenn Sie gerade erst anfangen oder Kontroler zu Testzwecken ausführen, ist SQLite eine praktische Wahl, da es ohne zusätzliche Datenbankeinrichtung „out-of-the-box“ funktioniert.

Wenn Sie lieber SQLite verwenden möchten, müssen Sie keine zusätzlichen Änderungen an der Bereitstellung vornehmen. Befolgen Sie einfach die Installationsanweisungen und Kontroler kümmert sich um den Rest.

PostgreSQL (für Produktion/großen Maßstab)

Für größere Bereitstellungen in Produktionsqualität ist PostgreSQL die empfohlene Datenbank zum Speichern von DAGs und DagRuns. Kontroler nutzt PostgreSQL, um eine höhere Leistung, Skalierbarkeit und Zuverlässigkeit zu bieten, die für die Verarbeitung großer Mengen an Workflow-Daten erforderlich sind. Kontroler ist mit PostgreSQL 16 und höher kompatibel

Protokollsammlung

Für viele Kubernetes-Benutzer ist die zentrale Protokollspeicherung eine entscheidende Voraussetzung für die Beobachtbarkeit und Fehlerbehebung. Kontroler lässt sich für die Protokollspeicherung nahtlos in Amazon S3 integrieren und erleichtert so das Sammeln, Speichern und Analysieren von Protokollen von DAG-Ausführungen. Diese Integration stellt sicher, dass Sie detaillierte Protokolle erfassen, sie für die Prüfung langfristig aufbewahren und sie für die Post-Mortem-Analyse verwenden können, wenn etwas schief geht.

Wir testen mit MinIO, um Kosten zu vermeiden, aber unter der Haube nutzt es die AWS S3-API und sollte in der Lage sein, Ihre IAM-Attribute zu erkennen, um Zugriff auf Ihre S3-Buckets zu gewähren.

Abschließende Bemerkungen

Wir hoffen, dass Sie Kontroler ausprobieren werden! Sie finden es hier: https://github.com/GreedyKomodoDragon/Kontroler.

Obwohl sich Kontroler noch in der Alpha-Phase befindet, bietet es erhebliches Potenzial für Teams, die ihre Kubernetes-Abläufe optimieren möchten. Mit seiner Weiterentwicklung zielt Kontroler darauf ab, ein leistungsstarkes Tool für die Orchestrierung von Arbeitsabläufen in Kubernetes zu werden und Teams die Zuverlässigkeit und Skalierbarkeit zu bieten, die sie zur einfachen Automatisierung komplexer Prozesse benötigen.

Kontroler wird ständig verbessert, also halten Sie Ausschau nach zukünftigen Updates! Wenn Sie zum Projekt beitragen möchten, freuen wir uns über jede Form von Beiträgen.

Das obige ist der detaillierte Inhalt vonWir stellen Kontroler vor: Eine Kubernetes-Planungs-Engine für DAGs. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage