Zum Hauptinhalt springen
Version: Nächste

Entwicklungsumgebung konfigurieren

Inoffizielle Beta-Übersetzung

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

Dieses Dokument beschreibt, wie Sie eine lokale Entwicklungsumgebung für Chaos Mesh einrichten.

Die meisten Komponenten von Chaos Mesh sind ausschließlich für Linux konzipiert. Daher empfehlen wir, Ihre Entwicklungsumgebung ebenfalls unter Linux zu betreiben. Beispielsweise können Sie eine virtuelle Maschine oder WSL 2 nutzen und VSCode Remote als Editor verwenden.

Dieses Dokument setzt voraus, dass Sie Linux verwenden, ohne Einschränkungen auf bestimmte Distributionen. Falls Sie Windows/macOS nutzen möchten, sind möglicherweise Anpassungen erforderlich (beispielsweise könnten bestimmte Make-Ziele abhängig von der Umgebung fehlschlagen).

Voraussetzungen

Vor der Konfiguration sollten Sie die folgenden Entwicklungstools installieren, von denen viele möglicherweise bereits in Ihrer Umgebung vorhanden sind:

Optional:

  • nodejs und pnpm, für die Entwicklung des Chaos Dashboards

Chaos Mesh kompilieren

Nach der Installation folgen Sie diesen Schritten, um Chaos Mesh zu kompilieren.

  1. Klonen Sie das Chaos Mesh-Repository auf Ihren lokalen Server:

    git clone https://github.com/chaos-mesh/chaos-mesh.git
    cd chaos-mesh
  2. Stellen Sie sicher, dass Docker installiert und gestartet ist.

    Hinweis

    Chaos Mesh nutzt Docker zum Erstellen von Container-Images, um Konsistenz mit der Produktionsumgebung zu gewährleisten.

  3. Chaos Mesh kompilieren:

    UI=1 make image
    Tipp

    UI=1 bedeutet, dass wir die Benutzeroberfläche des Chaos Dashboards kompilieren. Falls nicht benötigt, kann diese Umgebungsvariable entfallen.

    Tipp

    Um einen spezifischen Image-Tag festzulegen, verwenden Sie UI=1 make IMAGE_TAG=dev image.

    Nach erfolgreicher Kompilierung sollten folgende Container-Images vorhanden sein:

    • ghcr.io/chaos-mesh/chaos-dashboard:latest
    • ghcr.io/chaos-mesh/chaos-mesh:latest
    • ghcr.io/chaos-mesh/chaos-daemon:latest

Chaos Mesh im lokalen Minikube-Kubernetes-Cluster ausführen

Nach der Kompilierung können Sie Chaos Mesh in einem lokalen Kubernetes-Cluster ausführen.

  1. Starten Sie einen lokalen Kubernetes-Cluster mit Minikube:

    minikube start
  2. Laden Sie die Container-Images in Minikube:

    minikube image load ghcr.io/chaos-mesh/chaos-dashboard:latest
    minikube image load ghcr.io/chaos-mesh/chaos-mesh:latest
    minikube image load ghcr.io/chaos-mesh/chaos-daemon:latest
  3. Installieren Sie Chaos Mesh mit Helm:

    helm upgrade --install chaos-mesh-debug ./helm/chaos-mesh -n=chaos-mesh-debug --create-namespace
Tipp

minikube image load kann viel Zeit in Anspruch nehmen. Hier ist ein Trick, um während der Entwicklung das wiederholte Laden von Images zu vermeiden: Nutzen Sie Docker vom Minikube-Knoten statt vom Host-Docker:

minikube start --mount --mount-string "$(pwd):$(pwd)"
eval $(minikube -p minikube docker-env)
UI=1 make image

Chaos Mesh in der lokalen Umgebung debuggen

Wir können delve mit Remote-Debugging verwenden, um Chaos Mesh in der lokalen Umgebung zu debuggen.

  1. Kompilieren Sie Chaos Mesh mit DEBUGGER=1:

    UI=1 DEBUGGER=1 make image
  2. Laden Sie die Container-Images in Minikube:

    minikube image load ghcr.io/chaos-mesh/chaos-mesh:latest
    minikube image load ghcr.io/chaos-mesh/chaos-daemon:latest
    minikube image load ghcr.io/chaos-mesh/chaos-dashboard:latest
  3. Chaos Mesh installieren und Remote-Debugging aktivieren:

    helm upgrade --install chaos-mesh-debug ./helm/chaos-mesh -n=chaos-mesh-debug --create-namespace --set chaosDlv.enable=true --set controllerManager.leaderElection.enabled=false
    Hinweis

    Für Hochverfügbarkeit aktiviert Chaos Mesh standardmäßig leader-election und erstellt 3 Replikate für chaos-controller-manager. Mit controllerManager.leaderElection.enabled=false stellen wir sicher, dass Chaos Mesh nur eine Instanz von chaos-controller-manager erstellt, um das Debugging zu vereinfachen.

    Details unter Chaos Mesh in verschiedenen Umgebungen installieren.

  4. Port-Forwarding einrichten und IDE für Remote-Debugger konfigurieren:

    Verwenden Sie kubectl port-forward, um den Delve-Debugging-Server auf einen lokalen Port weiterzuleiten.

    Wenn Sie beispielsweise chaos-controller-manger debuggen möchten, können Sie den folgenden Befehl ausführen:

    kubectl -n chaos-mesh-debug port-forward chaos-controller-manager-766dc8488d-7n5bq 58000:8000

    Der Remote-Debugger ist nun unter 127.0.0.1:58000 erreichbar.

    Hinweis

    In Pods wird standardmäßig Port 8000 für den Delve-Debug-Server verwendet (siehe Helm-Templates).

    Konfigurieren Sie Ihre IDE für die Verbindung:

Detaillierte Informationen finden Sie in der README.md für das Container-Image chaos-dlv.

Nächste Schritte

Nach Abschluss der Vorbereitungen können Sie versuchen, einen neuen Chaos-Experimenttyp hinzuzufügen.

Häufig gestellte Fragen

make schlägt auf MacOS mit error obtaining VCS status: exit status 128 fehl

Der Grund hängt mit https://github.blog/2022-04-12-git-security-vulnerability-announced/ zusammen. Es wird empfohlen, diesen Artikel zunächst zu lesen.

Chaos Mesh startet den Container (dev-env oder build-env) mit dem aktuellen Benutzer (wenn Sie make aufrufen). Sie finden das passende --user-Flag in get_env_shell.py#L81C10-L81C10. Wenn Git also nach einem übergeordneten .git-Verzeichnis sucht, bricht der Vorgang ab, falls der Besitzerwechsel während der Verzeichnistraversierung vom aktuellen Benutzer abweicht.

Eine vorübergehende Lösung besteht derzeit darin, die Zeile mit --user auszukommentieren.