Zum Hauptinhalt springen

Chaos Mesh 2.0: Auf dem Weg zu einer Chaos-Engineering-Ökologie

· 5 Minuten Lesezeit
Chaos Mesh Authors
All maintainers of Chaos Mesh
Inoffizielle Beta-Übersetzung

Diese Seite wurde von PageTurner AI übersetzt (Beta). Nicht offiziell vom Projekt unterstützt. Fehler gefunden? Problem melden →

Chaos Mesh 2.0: Auf dem Weg zu einer Chaos-Engineering-Ökologie
Chaos Mesh 2.0: Auf dem Weg zu einer Chaos-Engineering-Ökologie

Am 23. Juli 2021 ist Chaos Mesh 2.0 allgemein verfügbar geworden! Dieses Release markiert einen wichtigen Meilenstein auf unserem Weg zur angestrebten Chaos-Engineering-Ökologie.

Die Vereinfachung von Chaos Engineering war stets das unerschütterliche Ziel von Chaos Mesh, und dieses Release ist ein entscheidender Schritt. Nach fast einem Jahr kontinuierlicher Arbeit haben wir in drei Hauptbereichen wesentliche Verbesserungen erzielt: Benutzerfreundlichkeit, native Orchestrierung und Planung von Experimenten sowie die Vielfalt der Fehlerinjektionstypen.

Benutzerfreundlichkeit

Wir arbeiten kontinuierlich an der Verbesserung der Usability von Chaos Mesh. Ein zentraler Ansatz hierfür ist das Chaos Dashboard – eine Weboberfläche zur Orchestrierung von Chaos-Experimenten. In Chaos Mesh 2.0 haben wir das Dashboard in folgenden Punkten optimiert, um die Komplexität von Chaos-Experimenten weiter zu reduzieren:

  • Es unterstützt nun Erstellung, Anzeige und Aktualisierung von AWSChaos und GCPChaos, sodass Chaos-Experimente in Cloud-Umgebungen konsistent zur Kubernetes-Erfahrung ablaufen;

  • Detailliertere Aufzeichnungen pro Experiment verbessern die Transparenz.

Chaos Mesh 2.0 - Planung von Experimenten
Chaos Mesh 2.0 - Planung von Experimenten

Native Orchestrierung und Planung von Experimenten

Bei Chaos-Experimenten reicht oft ein einzelner Test nicht aus, um vollständige Szenarien abzubilden. Manuelles Starten oder Stoppen wäre dabei mühsam und riskant. Zuvor kombinierten wir Argo mit Chaos Mesh zur automatisierten Fehlerinjektion in Workflows. Wir erkannten jedoch, dass Argo Workflows nicht ideal zur Beschreibung deklarativer Chaos-Experimente sind und entwickelten daher eine eigene Workflow-Engine. Chaos Mesh 2.0 führt native Workflows zur Experiment-Orchestrierung ein: Sie können mehrere Experimente seriell oder parallel ausführen und sogar Benachrichtigungen oder Health-Checks einbinden, um komplexe Testszenarien zu simulieren.

Chaos Mesh 2.0 - Arbeitsablauf
Chaos Mesh 2.0 - Arbeitsablauf

In früheren Versionen definierten wir periodische Chaos-Experimente über cron- und duration-Felder. Diese Beschreibungsweise erwies sich jedoch als unzureichend – etwa wenn eine Ausführung länger dauerte als der Zyklus selbst. Obwohl funktional, fehlte eine passende Beschreibung für das Monitoring erwarteter Verhaltensmuster. Inspiriert von CronJob führten wir daher Schedule als neues Custom Object in Chaos Mesh ein. Es erweitert periodische Tasks um explizite Eigenschaften, etwa ob parallele Experimentausführungen erlaubt sind, und schränkt so das Verhalten ein.

Chaos Mesh 2.0 - Zeitplan
Chaos Mesh 2.0 - Zeitplan

Vielfältigere Fehlerinjektionstypen

Chaos Mesh unterstützt bereits systemweite Fehlerinjektionen sowie Cloud-Umgebungen wie AWSChaos und GCPChaos. Ab Version 2.0 ermöglichen wir mit JVMChaos und HTTPChaos nun auch Chaos-Injektionen auf Anwendungsebene.

JVMChaos

In der Industrie sind JVM-Sprachen wie Java und Kotlin weit verbreitet. Ein JVMChaos lässt sich einfach durch Methoden wie JVM-Bytecode-Erweiterung und Java Agent simulieren. Derzeit nutzt JVMChaos chaosblade-exec-jvm und unterstützt das Injizieren verschiedener Anwendungsfehler wie Methodenverzögerung, spezifische Rückgabewerte, OOM und benutzerdefinierte Exceptions. Weitere Informationen finden Sie in der Dokumentation: Simulieren von JVM-Anwendungsfehlern.

HTTPChaos

HTTPChaos ist ein völlig neuer Chaos-Typ in Version 2.0. Es kann HTTP-Serviceanfragen und -antworten serverseitig abfangen sowie Verbindungen unterbrechen, Verzögerungen einfügen oder Header/Body modifizieren. Es eignet sich für alle Szenarien mit HTTP-Kommunikationsprotokoll. Details unter Simulieren von HTTP-Fehlern.

Chaosd: Ein Fehlerinjektionswerkzeug für physische Knoten

Chaos Mesh ist für Kubernetes konzipiert. Für physische Maschinenumgebungen stellen wir Chaosd bereit. Es entwickelte sich aus chaos-daemon, einer Kernkomponente von Chaos Mesh, und wir haben spezifische Chaos-Experimente für physische Maschinen hinzugefügt. Derzeit unterstützt Chaosd Prozessbeendigung, Netzwerk-, JVM-, Ressourcen-, Festplatten- und weitere Fehlertypen auf physischen Maschinen.

Ausblick

Chaos Mesh wird aktiv weiterentwickelt, und wir arbeiten an leistungsfähigeren Funktionen:

  • JVMChaos-Runtime-Injektion zur Senkung der Kosten und Verbesserung der Benutzerfreundlichkeit.

  • Ein Plug-in-Mechanismus für benutzerdefinierte Chaos-Experimente bei voller Aufrechterhaltung der Scheduling-Funktionalität.

Zudem haben wir bemerkt, dass Chaos-Experimente in vielen Szenarien wiederverwendbar sind. Daher planen wir eine Plattform zur Erstellung wiederverwendbarer Vorlagen, die nicht nur einzelne Experimente, sondern auch Workflows für verschiedene Szenarien teilen lässt.

Probieren Sie es aus!

Hinweis

2022-10-24: Aufgrund von https://www.oreilly.com/online-learning/leveraging-katacoda-technology.html und Bezugnahme auf #356 ist das interaktive Tutorial vorübergehend nicht verfügbar.

Testen Sie die Chaos Mesh 2.0 interactive scenarios direkt im Browser! Keine Installation nötig – die komplette Entwicklungsumgebung ist vorkonfiguriert. Alternativ finden Sie weitere Informationen in der Chaos Mesh-Dokumentation.

Ein herzliches Dankeschön

Dank an alle Chaos Mesh-Mitwirkenden – ohne Ihre Mithilfe wäre der Weg von 1.0 zu 2.0 nicht möglich gewesen!

Falls Sie Chaos Mesh spannend finden und uns verbessern möchten, treten Sie gerne unserem Slack-Kanal bei oder reichen Sie Pull Requests/Issues in unserem GitHub-Repository ein. Wir freuen uns auf Ihre Teilnahme und Ihr Feedback!