Aller au contenu principal
Version : 2.6.7

Configurer l'environnement de développement

Traduction Bêta Non Officielle

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 :

  • nodejs et pnpm, pour développer Chaos Dashboard

Compiler Chaos Mesh

Après l'installation, suivez les étapes ci-dessous pour compiler Chaos Mesh.

  1. Clonez le dépôt Chaos Mesh sur votre serveur local :

    git clone https://github.com/chaos-mesh/chaos-mesh.git
    cd chaos-mesh
  2. Vérifiez que Docker est installé et en cours d'exécution.

    info

    Chaos Mesh utilise Docker pour construire les images conteneurs afin d'assurer la cohérence avec l'environnement de production.

  3. Compilez Chaos Mesh :

    UI=1 make image
    astuce

    UI=1 indique que nous compilerons l'interface utilisateur de Chaos Dashboard. Si vous n'en avez pas besoin, vous pouvez omettre cette variable d'environnement.

    astuce

    Pour 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:latest
    • ghcr.io/chaos-mesh/chaos-mesh:latest
    • ghcr.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.

  1. Démarrez un cluster Kubernetes local avec minkube :

    minikube start
  2. 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
  3. Installez Chaos Mesh avec Helm :

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

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.

  1. Compilez Chaos Mesh avec DEBUGGER=1 :

    UI=1 DEBUGGER=1 make image
  2. 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
  3. 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=false
    note

    Pour garantir la haute disponibilité, Chaos Mesh active par défaut l'élection de leader (leader-election) et crée 3 réplicas pour chaos-controller-manager. L'option controllerManager.leaderElection.enabled=false garantit que Chaos Mesh ne crée qu'une seule instance de chaos-controller-manager pour faciliter le débogage.

    Pour plus de détails, consultez Installer Chaos Mesh dans différents environnements.

  4. Configurez le transfert de port et votre IDE pour vous connecter au débogueur distant :

    Utilisez kubectl port-forward pour 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:8000

    Vous pourrez alors accéder au serveur de débogage distant via 127.0.0.1:58000.

    info

    Le port 8000 est 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 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.