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. Kompilieren Sie Chaos Mesh:

    UI=1 make image
    Tipp

    UI=1 bedeutet, dass die Benutzeroberfläche des Chaos Dashboards kompiliert wird. Falls nicht benötigt, kann diese Umgebungsvariable weggelassen werden.

    Tipp

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

    Nach erfolgreicher Kompilierung sollten folgende Container-Images verfügbar 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. Installieren Sie Chaos Mesh und aktivieren Sie Remote-Debugging:

    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 hohe Verfügbarkeit aktiviert Chaos Mesh standardmäßig die leader-election-Funktion und erstellt 3 Replikas für den chaos-controller-manager. Mit controllerManager.leaderElection.enabled=false stellen wir sicher, dass nur eine Instanz des chaos-controller-manager erstellt wird, was das Debugging vereinfacht.

    Weitere Details finden Sie unter Installation von Chaos Mesh in verschiedenen Umgebungen.

  4. Port-Forwarding einrichten und IDE für die Verbindung mit dem Remote-Debugger konfigurieren:

    Wir können kubectl port-forward verwenden, um den Delve-Debugging-Server auf einen lokalen Port weiterzuleiten.

    Beispiel: Um chaos-controller-manger zu debuggen, führen Sie folgenden Befehl aus:

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

    Anschließend können Sie auf den Remote-Delve-Debugger-Server über 127.0.0.1:58000 zugreifen.

    Hinweis

    Im Pod verwenden wir standardmäßig Port 8000 für den Delve-Debug-Server. Diese Konvention ist in den Helm-Template-Dateien festgelegt.

    Konfigurieren Sie nun Ihre IDE für die Verbindung mit dem Remote-Debugger. Beispiele:

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.