Kestra Dashboard - ScreenshotKestra - Orchestrierungs-Tool zur Optimierung von Workflows
Veröffentlicht:Automatisierung und zuverlässige Datenprozesse sind für datengetriebene Geschäftsmodelle von entscheidender Bedeutung. Datenpipelines müssen nicht nur robust und skalierbar sein, sondern auch einfach zu verwalten und zu warten. Genau hier setzt Kestra an – ein Orchestrierungs-Tool, das die Erstellung und Verwaltung von Workflows vereinfacht. Kestra nutzt YAML zur Workflow-Definition und macht damit die Orchestrierung besonders zugänglich und leistungsfähig. Besonders erwähnenswert: Kestra kann kostenlos als Self-Hosting Lösung eingesetzt werden. Das ist für mich extrem wichtig da die Orchestrierungslösung in der Regel zugriff auf eine Vielzahl von Systemen hat und in meinem Fall sogar den Privatekey zu Servern besitzt. Diese Daten möchte ich nur ungern in Fremde Hände geben.
Dieser Beitrag gibt einen Überblick über die Funktionen und Vorteile von Kestra und zeigt, wie Teams damit ihre Prozesse optimieren und schneller Ergebnisse erzielen können.
1. Workflow-Definition in YAML
Kestra ermöglicht es, Workflows deklarativ mit der Auszeichnungssprache YAML oder alternativ über einen Workflow Designer zu definieren.

YAML (Yet Another Markup Language) ist eine beliebte Datenserialisierungssprache, die sowohl von Menschen als auch von Maschinen leicht gelesen und verarbeitet werden kann. YAML bietet einige wesentliche Vorteile für die Workflow-Erstellung und -Verwaltung:
- Einfache Syntax: YAML ist eine übersichtliche und leicht zu erlernende Sprache. Das bedeutet, dass auch Teammitglieder ohne tiefe Programmierkenntnisse Workflows erstellen und verstehen können. Diese Einfachheit ermöglicht eine schnellere Zusammenarbeit und reduziert die Einstiegshürde, da weniger technisches Fachwissen notwendig ist.
- Menschliche Lesbarkeit: YAML ist bekannt für seine gute Lesbarkeit, was die Überprüfung, Zusammenarbeit und Fehlersuche erheblich erleichtert. Ein deklarativ definierter Workflow in YAML ist leicht verständlich, was die Wartung und Weiterentwicklung vereinfacht.
Hier ein einfaches Beispiel für einen YAML-Workflow in Kestra könnte wie folgt aussehen:
id: hello_world
namespace: dev
tasks:
- id: greeting
type: io.kestra.plugin.core.log.Log
message: Hello from a declarative workflow!
triggers:
- id: schedule
type: io.kestra.plugin.core.trigger.Schedule
cron: "@hourly"
Dieses (wenn auch praxisferne) Beispiel zeigt einen simplen Workflow, der eine Nachricht auf stündlicher Basis ausgibt. Durch die einfache Syntax kann jeder im Team diesen Workflow verstehen und, falls nötig, anpassen.
Ein etwas realistischeres und komplizierteres Beispiel:
id: add_systems_to_checkmk_monitoring
namespace: company.infrastructure
tasks:
- id: get_systems_information
type: io.kestra.plugin.core.http.Request
contentType: application/json
headers:
Authorization: "{{ secret('API_SYSTEMS_TOKEN') }}"
uri: https://api-systems.home.local/systems
- id: save
type: io.kestra.plugin.scripts.shell.Commands
commands:
- echo '{{ outputs.get_systems_information.body }}' >> data.json
- cat data.json
outputFiles:
- "data.json"
- id: create_ansible_playbook
type: io.kestra.plugin.scripts.python.Commands
beforeCommands:
- python -m venv venv
- . venv/bin/activate
commands:
- python create_ansible_playbook/main.py
inputFiles:
data.json: "{{ outputs.save[\"outputFiles\"][\"data.json\"] }}"
logLevel: INFO
namespaceFiles:
enabled: true
outputFiles:
- hosts.txt
targetOS: LINUX
taskRunner:
type: io.kestra.plugin.core.runner.Process
- id: trigger_ansible_updates
type: io.kestra.plugin.ansible.cli.AnsibleCLI
beforeCommands:
- apk update && apk add sshpass
- mkdir p -m 0700 ~/.ssh
- cp id_rsa ~/.ssh/id_rsa
- chmod 600 ~/.ssh/id_rsa
commands:
- cp ansible.cfg /etc/ansible/ansible.cfg
- ansible-playbook -i inventory.ini --limit onprem playbook.yml
inputFiles:
inventory.ini: "{{ outputs.create_ansible_playbook.outputFiles[\"hosts.txt\"] }}"
playbook.yml: "{{ read(\"ansible/playbooks/install_checkmk_agent.yml\") }}"
ansible.cfg: |
[defaults]
host_key_checking = false
id_rsa: "{{ secret('SSH_PRIVATE_KEY') }}"
taskRunner:
type: io.kestra.plugin.scripts.runner.docker.Docker
Dieser Workflow holt sich von einer API sämtliche Serversysteme und erstellt daraus für Ansible eine Hosts-Datei. Anschließend werden auf all diesen Systemen der CheckMK Agent über Ansible installiert, sofern dieser noch nicht vorhanden ist.
2. Verbesserte Fehlerminimierung und Zuverlässigkeit in der Produktion
Fehler in produktiven Workflows können schwerwiegende Folgen haben. Kestra bringt eine eingebaute Syntaxvalidierung mit, die sicherstellt, dass der YAML-Code vor der Ausführung fehlerfrei ist. Dieser Schritt reduziert die Wahrscheinlichkeit von Laufzeitfehlern und ermöglicht es Teams, Workflows mit größerem Vertrauen in Produktion zu bringen. Kestras Syntaxvalidierung hilft, kostspielige Fehler frühzeitig zu erkennen und zu beheben, bevor sie auf die Betriebsumgebung einwirken. Ebenso bringt Kestra Error Handling mit. Mit jedem Step der im Workflow fehlschlägt, kann das Error Handling eingreifen und entsprechend reagieren, und sei es nur eine Push Notification auf das Handy senden.
3. Plattformunabhängigkeit und unkomplizierte Wartung
Einer der zentralen Vorteile von Kestra liegt in der Trennung zwischen Orchestrierungslogik und Geschäftslogik. Dies bedeutet, dass die bestehenden Applikationen und Systeme keine Anpassungen benötigen, um orchestriert zu werden. Durch die Verwendung von YAML können Workflows unabhängig von der zugrunde liegenden Technologie definiert und verwaltet werden.
Falls Änderungen an einem Workflow erforderlich sind, muss lediglich die YAML-Datei bearbeitet werden. Es entfällt die Notwendigkeit für das erneute Bereitstellen von Code oder komplexe CI/CD-Pipelines. Diese Flexibilität reduziert den Wartungsaufwand erheblich und beschleunigt Entwicklungszyklen, da Updates an der Workflow-Logik jederzeit einfach umgesetzt werden können.
4. Einfache Versionierung und Rückverfolgbarkeit
Ein weiterer großer Vorteil der Verwendung von YAML zur Workflow-Definition ist die einfache Integration in Versionskontrollsysteme. Da Workflows in einer einzigen YAML-Datei beschrieben sind, lassen sich Änderungen einfach nachverfolgen und bei Bedarf rückgängig machen. Teams können in Pull-Request-Reviews gemeinsam an Workflows arbeiten und die Evolution der Arbeitsabläufe über die Zeit dokumentieren.
Dieses Merkmal ist besonders wertvoll für Teams, die in kollaborativen Umgebungen arbeiten. Es ermöglicht eine strukturierte Überprüfung von Änderungen, fördert die Transparenz und sorgt dafür, dass die gesamte Historie eines Workflows nachvollziehbar bleibt. Diese Eigenschaft ist nicht nur für technische Teams wertvoll, sondern auch für Fachbereiche, die einen Einblick in den Entwicklungsstand und die Historie der Datenprozesse erhalten möchten.
Workflows ich aktuell im Produktiv Einsatz habe
- Webhooks: Nach Code Änderungen in GitLab wird eine Webhook in meiner Kestra Instanz getriggert welche das GitLab Repository klont, und die darin enthaltene Dockerfile zu einem Docker Image buildet und das Image anschließend in meine Docker Registry hochlädt
- Tägliche und Stündliche Datenbank Sicherungen: Hetzner macht jede Nacht eine Datensicherung meiner MySQL Datenbanken und hebt diese 7 Tage auf. Ich möchte jedoch die Daten länger vorhalten, deshalb macht Kestra für mich die Datensicherung und legt die Datenbank Dumps in meinen S3 Storage ab.
- Gehaltsdokumente PDF Passwort Schutz entfernen und in Dokumentmanagement System ablegen: Ich bekomme von meinem Arbeitgeber meine Gehaltsabrechnung als Passwortgeschützte PDF Datei per E-Mail. Kestra überwacht meinen Posteingang, nimmt die entsprechende Gehaltsabrechnung, schickt die PDF an Stirling-PDF API um das Passwort zu entfernen, und leitet die PDF ohne Passwort dann an Paperless weiter damit die Gehaltsabrechnung archiviert wird.
- Kestra holt sich über die Proxmox API täglich sämtliche Virtuelle Maschinen und Synchronisiert den aktuellen Stand mit einer eigenen Systeme API. Diese API wird wiederum verwendet um ein Dashboard mit allen Servern und IP Adressen zu visualisieren.
- Alle Serversysteme Patchen: Die vorher genannte API Dient auch hier als Grundlage, Kestra ermittelt alle Server und Patcht diese mittels Ansible Playbook
- Kestra synchronsiert sätmliche Kunden-Arbeitszeiten aus Kimai in mein Kundenportal.
BERATUNG ZU KESTRA GEWÜNSCHT?
Gerne berate ich Sie in einem persönlichen Gespräch.
Meine Meinung
Kestra ist ein mächtiges Werkzeug für die Orchestrierung von Workflows, das insbesondere durch die einfache Nutzung von YAML als deklarative Sprache überzeugt. Komplexere Workflows benötigen jedoch Scripting Kenntnisse in Python oder Powershell. Kestra ermöglicht Teams, Workflows effizient zu definieren und zu verwalten, zu überwachen und im Fehlerfall benachrichtigt zu werden. Es reduziert die Komplexität und erhöht die Synergie zwischen diversenen Systemen und Schnitstellen. Die Plattform bietet zahlreiche Vorteile: von der verbesserten Fehlerminimierung und Versionskontrolle über die plattformunabhängige Nutzbarkeit bis hin zu schnelleren Entwicklungszyklen.
Durch den Einsatz von Kestra können Unternehmen ihre datengetriebenen Prozesse automatisieren und ihre Effizienz steigern – ein unverzichtbares Tool in der modernen datengetriebenen Welt.