Entwicklungsumgebung konfigurieren
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:
Chaos Mesh kompilieren
Nach der Installation folgen Sie diesen Schritten, um Chaos Mesh zu kompilieren.
-
Klonen Sie das Chaos Mesh-Repository auf Ihren lokalen Server:
git clone https://github.com/chaos-mesh/chaos-mesh.git
cd chaos-mesh -
Stellen Sie sicher, dass Docker installiert und gestartet ist.
HinweisChaos Mesh nutzt Docker zum Erstellen von Container-Images, um Konsistenz mit der Produktionsumgebung zu gewährleisten.
-
Kompilieren Sie Chaos Mesh:
UI=1 make imageTippUI=1bedeutet, dass die Benutzeroberfläche des Chaos Dashboards kompiliert wird. Falls nicht benötigt, kann diese Umgebungsvariable weggelassen werden.TippUm 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:latestghcr.io/chaos-mesh/chaos-mesh:latestghcr.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.
-
Starten Sie einen lokalen Kubernetes-Cluster mit Minikube:
minikube start -
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 -
Installieren Sie Chaos Mesh mit Helm:
helm upgrade --install chaos-mesh-debug ./helm/chaos-mesh -n=chaos-mesh-debug --create-namespace
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.
-
Kompilieren Sie Chaos Mesh mit
DEBUGGER=1:UI=1 DEBUGGER=1 make image -
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 -
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=falseHinweisFür hohe Verfügbarkeit aktiviert Chaos Mesh standardmäßig die
leader-election-Funktion und erstellt 3 Replikas für denchaos-controller-manager. MitcontrollerManager.leaderElection.enabled=falsestellen wir sicher, dass nur eine Instanz deschaos-controller-managererstellt wird, was das Debugging vereinfacht.Weitere Details finden Sie unter Installation von Chaos Mesh in verschiedenen Umgebungen.
-
Port-Forwarding einrichten und IDE für die Verbindung mit dem Remote-Debugger konfigurieren:
Wir können
kubectl port-forwardverwenden, um den Delve-Debugging-Server auf einen lokalen Port weiterzuleiten.Beispiel: Um
chaos-controller-mangerzu debuggen, führen Sie folgenden Befehl aus:kubectl -n chaos-mesh-debug port-forward chaos-controller-manager-766dc8488d-7n5bq 58000:8000Anschließend können Sie auf den Remote-Delve-Debugger-Server über
127.0.0.1:58000zugreifen.HinweisIm Pod verwenden wir standardmäßig Port
8000fü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.