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.gitcd 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.
-
Chaos Mesh kompilieren:
UI=1 make imageTippUI=1bedeutet, dass wir die Benutzeroberfläche des Chaos Dashboards kompilieren. Falls nicht benötigt, kann diese Umgebungsvariable entfallen.TippUm 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: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:latestminikube image load ghcr.io/chaos-mesh/chaos-mesh:latestminikube 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:latestminikube image load ghcr.io/chaos-mesh/chaos-daemon:latestminikube image load ghcr.io/chaos-mesh/chaos-dashboard:latest -
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=falseHinweisFür Hochverfügbarkeit aktiviert Chaos Mesh standardmäßig
leader-electionund erstellt 3 Replikate fürchaos-controller-manager. MitcontrollerManager.leaderElection.enabled=falsestellen wir sicher, dass Chaos Mesh nur eine Instanz vonchaos-controller-managererstellt, um das Debugging zu vereinfachen.Details unter Chaos Mesh in verschiedenen Umgebungen installieren.
-
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-mangerdebuggen möchten, können Sie den folgenden Befehl ausführen:kubectl -n chaos-mesh-debug port-forward chaos-controller-manager-766dc8488d-7n5bq 58000:8000Der Remote-Debugger ist nun unter
127.0.0.1:58000erreichbar.HinweisIn Pods wird standardmäßig Port
8000für den Delve-Debug-Server verwendet (siehe Helm-Templates).Konfigurieren Sie Ihre IDE für die Verbindung:
- Goland: An laufenden Prozess auf Remote-Maschine anhängen
- VSCode: Remote Debugging
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.