Configurer l'environnement de développement
Cette page a été traduite par PageTurner AI (bêta). Non approuvée officiellement par le projet. Vous avez trouvé une erreur ? Signaler un problème →
Ce document explique comment configurer un environnement de développement local pour Chaos Mesh.
La plupart des composants de Chaos Mesh sont uniquement conçus pour Linux. Nous vous recommandons donc de configurer votre environnement de développement sous Linux, par exemple en utilisant une machine virtuelle ou WSL 2, avec VSCode Remote comme éditeur.
Ce document suppose que vous utilisez Linux, sans restrictions liées à des distributions spécifiques. Si vous insistez pour utiliser Windows/MacOS, vous devrez probablement trouver des astuces pour le faire fonctionner (par exemple, certaines cibles make peuvent échouer selon l'environnement).
Configuration requise
Avant la configuration, il est recommandé d'installer les outils de développement suivants, dont la plupart sont peut-être déjà présents dans votre environnement :
Optionnel :
Compiler Chaos Mesh
Après l'installation, suivez les étapes ci-dessous pour compiler Chaos Mesh.
-
Clonez le dépôt Chaos Mesh sur votre serveur local :
git clone https://github.com/chaos-mesh/chaos-mesh.git
cd chaos-mesh -
Vérifiez que Docker est installé et en cours d'exécution.
infoChaos Mesh utilise Docker pour construire les images conteneurs afin d'assurer la cohérence avec l'environnement de production.
-
Compilez Chaos Mesh :
UI=1 make imageastuceUI=1indique que nous compilerons l'interface utilisateur de Chaos Dashboard. Si vous n'en avez pas besoin, vous pouvez omettre cette variable d'environnement.astucePour spécifier le tag de l'image, utilisez
UI=1 make IMAGE_TAG=dev image.Après la compilation, vous devriez obtenir les images conteneurs suivantes :
ghcr.io/chaos-mesh/chaos-dashboard:latestghcr.io/chaos-mesh/chaos-mesh:latestghcr.io/chaos-mesh/chaos-daemon:latest
Exécuter Chaos Mesh dans un cluster Kubernetes local minkube
Vous pouvez maintenant exécuter Chaos Mesh dans un cluster Kubernetes local après la compilation.
-
Démarrez un cluster Kubernetes local avec minkube :
minikube start -
Chargez les images conteneurs dans 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 -
Installez Chaos Mesh avec Helm :
helm upgrade --install chaos-mesh-debug ./helm/chaos-mesh -n=chaos-mesh-debug --create-namespace
La commande minikube image load peut prendre beaucoup de temps. Voici une astuce pour éviter de recharger les images constamment pendant le développement : utilisez Docker directement depuis le nœud minikube plutôt que celui de l'hôte :
minikube start --mount --mount-string "$(pwd):$(pwd)"
eval $(minikube -p minikube docker-env)
UI=1 make image
Déboguer Chaos Mesh en local
Vous pouvez utiliser delve avec le débogage à distance pour déboguer Chaos Mesh dans votre environnement local.
-
Compilez Chaos Mesh avec
DEBUGGER=1:UI=1 DEBUGGER=1 make image -
Chargez les images conteneur dans 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 -
Installez Chaos Mesh et activez le débogage à distance :
helm upgrade --install chaos-mesh-debug ./helm/chaos-mesh -n=chaos-mesh-debug --create-namespace --set chaosDlv.enable=true --set controllerManager.leaderElection.enabled=falsenotePour garantir la haute disponibilité, Chaos Mesh active par défaut l'élection de leader (
leader-election) et crée 3 réplicas pourchaos-controller-manager. L'optioncontrollerManager.leaderElection.enabled=falsegarantit que Chaos Mesh ne crée qu'une seule instance dechaos-controller-managerpour faciliter le débogage.Pour plus de détails, consultez Installer Chaos Mesh dans différents environnements.
-
Configurez le transfert de port et votre IDE pour vous connecter au débogueur distant :
Utilisez
kubectl port-forwardpour rediriger le serveur de débogage delve vers un port local.Par exemple, pour déboguer
chaos-controller-manger, exécutez :kubectl -n chaos-mesh-debug port-forward chaos-controller-manager-766dc8488d-7n5bq 58000:8000Vous pourrez alors accéder au serveur de débogage distant via
127.0.0.1:58000.infoLe port
8000est systématiquement utilisé dans le pod pour le serveur delve, conformément à notre convention. Vous pouvez le vérifier dans les fichiers de templates Helm.Configurez ensuite votre IDE préféré pour vous connecter au débogueur distant. Exemples :
- Pour Goland : Attacher aux processus Go en cours d'exécution#Machine distante
- Pour VSCode : vscode-go - Débogage#Débogage distant
Pour plus de détails, consultez le README.md de l'image conteneur chaos-dlv.
Étapes suivantes
Après ces préparatifs, vous pouvez essayer d'Ajouter un nouveau type d'expérience de chaos.
FAQ
Échec de make avec error obtaining VCS status: exit status 128 sous macOS
Cette erreur est liée à https://github.blog/2022-04-12-git-security-vulnerability-announced/. Nous vous recommandons de consulter cet article en premier lieu.
Chaos Mesh démarrera le conteneur (dev-env ou build-env) avec l'utilisateur actuel (lorsque vous appelez make). Vous pouvez trouver l'option --user appropriée dans get_env_shell.py#L81C10-L81C10. Ainsi, lorsque Git recherche un répertoire .git racine, il s'arrêtera si sa traversée de répertoire modifie la propriété par rapport à l'utilisateur actuel.
Une solution temporaire pour le moment consiste à commenter la ligne contenant --user.