Aller au contenu principal

Lancez votre première expérience de chaos en 10 minutes

· 7 minutes de lecture
Cwen Yin
Maintainer of Chaos Mesh
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 →

Lancez votre première expérience de chaos en 10 minutes
Lancez votre première expérience de chaos en 10 minutes

Le Chaos Engineering permet de tester la robustesse d'un système logiciel en production en simulant des conditions inhabituelles ou perturbatrices. Cependant, pour beaucoup, le passage de l'apprentissage à la pratique sur leurs propres systèmes semble intimidant. Cela ressemble à l'une de ces grandes idées nécessitant une équipe complète pour planifier à l'avance. Pourtant, ce n'est pas forcément le cas. Pour vous lancer dans l'expérimentation du chaos, il vous suffit peut-être simplement d'une plateforme adaptée.

Chaos Mesh est une plateforme de Chaos Engineering simple d'utilisation, open source et cloud-native qui orchestre le chaos dans les environnements Kubernetes. Ce tutoriel de 10 minutes vous aidera à démarrer rapidement avec le Chaos Engineering et à lancer votre première expérience de chaos avec Chaos Mesh.

Pour plus d'informations sur Chaos Mesh, consultez notre article précédent ou le projet chaos-mesh sur GitHub.

Aperçu de notre petite expérience

Les expériences de chaos ressemblent aux expériences que nous faisons en cours de sciences. Il est parfaitement acceptable de provoquer des situations turbulentes dans un environnement contrôlé. Ici, nous simulerons un chaos réseau sur une petite application web appelée web-show. Pour visualiser l'effet du chaos, web-show enregistre la latence entre son pod et le pod kube-controller (dans le namespace kube-system) toutes les 10 secondes.

La séquence suivante montre le processus d'installation de Chaos Mesh, de déploiement de web-show et de création de l'expérience de chaos en quelques commandes :

Le processus complet de l'expérience de chaos
Le processus complet de l'expérience de chaos

À vous de jouer ! Il est temps de vous salir les mains.

Commençons !

Pour notre expérience simple, nous utilisons Kubernetes dans Docker (Kind) pour le développement Kubernetes. Vous pouvez librement utiliser Minikube ou tout cluster Kubernetes existant pour suivre ce guide.

Préparer l'environnement

Avant de continuer, assurez-vous d'avoir Git et Docker installés sur votre ordinateur local, avec Docker en cours d'exécution. Pour macOS, il est recommandé d'allouer au moins 6 cœurs CPU à Docker. Pour plus de détails, consultez la configuration Docker pour Mac.

  1. Récupérez Chaos Mesh :

    git clone https://github.com/chaos-mesh/chaos-mesh.git
    cd chaos-mesh/
  2. Installez Chaos Mesh avec le script install.sh :

    ./install.sh --local kind

    install.sh est un script shell automatisé qui vérifie votre environnement, installe Kind, lance des clusters Kubernetes localement et déploie Chaos Mesh. Pour voir la description détaillée de install.sh, vous pouvez ajouter l'option --help.

    Remarque :

    Si votre ordinateur local ne peut pas récupérer les images depuis docker.io ou gcr.io, utilisez le miroir local gcr.io et exécutez ./install.sh --local kind --docker-mirror.

  3. Configurez la variable d'environnement système :

    source ~/.bash_profile

Remarque :

  • Selon votre réseau, ces étapes peuvent prendre quelques minutes.

  • Si vous voyez un message d'erreur comme celui-ci :

    ERROR: failed to create cluster: failed to generate kubeadm config content: failed to get kubernetes version from node: failed to get file: command "docker exec --privileged kind-control-plane cat /kind/version" failed with error: exit status 1

    augmentez les ressources disponibles pour Docker sur votre ordinateur local et exécutez la commande suivante :

    ./install.sh --local kind --force-local-kube

Lorsque le processus est terminé, vous verrez un message confirmant l'installation réussie de Chaos Mesh.

Déployer l'application

L'étape suivante consiste à déployer l'application de test. Nous choisissons web-show car il permet d'observer directement les effets du chaos réseau. Vous pouvez également déployer votre propre application pour les tests.

  1. Déployez web-show avec le script deploy.sh :

    # Make sure you are in the Chaos Mesh directory
    cd examples/web-show &&
    ./deploy.sh

    Remarque :

    Si votre ordinateur ne peut pas récupérer les images depuis docker.io, utilisez le miroir local gcr.io et exécutez ./deploy.sh --docker-mirror.

  2. Accédez à l'application web-show. Depuis votre navigateur, rendez-vous à l'adresse http://localhost:8081.

Créer l'expérience de chaos

Maintenant que tout est prêt, il est temps de lancer votre expérience de chaos !

Chaos Mesh utilise les CustomResourceDefinitions (CRD) pour définir les expériences de chaos. Les objets CRD sont conçus spécifiquement selon les scénarios d'expérience, ce qui simplifie grandement leur définition. Actuellement, Chaos Mesh implémente les objets CRD suivants : PodChaos, NetworkChaos, IOChaos, TimeChaos et KernelChaos. D'autres types d'injection de fautes seront ajoutés ultérieurement.

Dans cette expérience, nous utilisons NetworkChaos pour l'expérience de chaos. Le fichier de configuration NetworkChaos, écrit en YAML, est présenté ci-dessous :

apiVersion: chaos-mesh.org/v1alpha1
kind: NetworkChaos
metadata:
name: network-delay-example
spec:
action: delay
mode: one
selector:
namespaces:
- default
labelSelectors:
"app": "web-show"
delay:
latency: "10ms"
correlation: "100"
jitter: "0ms"
duration: "30s"
scheduler:
cron: "@every 60s"

Pour une description détaillée des actions NetworkChaos, consultez le wiki Chaos Mesh. Ici, nous reformulons simplement la configuration comme suit :

  • cible : web-show

  • mission : injecter un délai réseau de 10ms toutes les 60s

  • durée d'attaque : 30s à chaque fois

Pour démarrer NetworkChaos, procédez comme suit :

  1. Exécutez network-delay.yaml :

    # Make sure you are in the chaos-mesh/examples/web-show directory
    kubectl apply -f network-delay.yaml
  2. Accédez à l'application web-show. Dans votre navigateur, rendez-vous à l'adresse http://localhost:8081.

    Le graphique linéaire montrera un délai réseau de 10 ms toutes les 60 secondes.

Utilisation de Chaos Mesh pour insérer des délais dans web-show
Utilisation de Chaos Mesh pour insérer des délais dans web-show

Félicitations ! Vous venez de semer un peu de chaos. Si cela vous intrigue et que vous souhaitez essayer d'autres expériences avec Chaos Mesh, consultez examples/web-show.

Supprimer l'expérience de chaos

Une fois vos tests terminés, mettez fin à l'expérience de chaos.

  1. Supprimez network-delay.yaml :

    # Make sure you are in the chaos-mesh/examples/web-show directory
    kubectl delete -f network-delay.yaml
  2. Accédez à l'application web-show. Depuis votre navigateur, rendez-vous à l'adresse http://localhost:8081.

Sur le graphique linéaire, vous constatez que le niveau de latence réseau est revenu à la normale.

Le niveau de latence réseau est revenu à la normale
Le niveau de latence réseau est revenu à la normale

Supprimer les clusters Kubernetes

Une fois votre expérience de chaos terminée, exécutez la commande suivante pour supprimer les clusters Kubernetes :

kind delete cluster --name=kind

Note :

Si vous rencontrez l'erreur kind: command not found, exécutez d'abord la commande source ~/.bash_profile avant de supprimer les clusters Kubernetes.

Bravo ! Et maintenant ?

Félicitations pour votre premier voyage réussi dans l'ingénierie du chaos ! Quelle impression ? L'ingénierie du chaos est simple, n'est-ce pas ? Mais peut-être trouvez-vous Chaos Mesh moins intuitif ? La ligne de commande semble peu pratique, la rédaction manuelle des fichiers YAML un peu fastidieuse, ou la vérification des résultats quelque peu maladroite ? Ne vous inquiétez pas : Chaos Dashboard arrive bientôt ! Exécuter des expériences de chaos via une interface web, cela promet ! Si vous souhaitez nous aider à établir des standards de test pour les plateformes cloud ou améliorer Chaos Mesh, nous serions ravis de vous entendre !

Si vous découvrez un bug ou estimez qu'une fonctionnalité manque, n'hésitez pas à ouvrir un ticket, proposer une pull request (PR) ou nous rejoindre sur le canal #project-chaos-mesh de l'espace Slack CNCF.

GitHub : https://github.com/chaos-mesh/chaos-mesh