DOJO #6 - Introduction au Chaos Engineering (Basé sur le livre Learning Chaos Engineering: Discovering and Overcoming System Weaknesses Through Experimentation)
Avant de pouvoir se lancer dans vos premières expérimentations liées au Chaos Engineering via le Chaos Toolkit, il va falloir installer plusieurs choses.
Installer Python 3 et créer un environnement virtuel python
Installer Python 3
Si vous n'avez pas Python 3 d'installé sur votre machine il faut suivre les intrusctions suivante pour l'installer :
- sous Linux 🐧
sudo apt-get install python3 python3-venv
- sous macOS
brew install python3
Créer un environnement virtuel python
Afin de garder votre environnement python bien ordonné et éviter les conflits entre les modules de Python, c'est une bonne pratique de créer un environnement virtuel python qui sera dédiée au dojo #6.
Pour cela vous pouvez executer la commande suivante :
python3 -m venv ~/.venvs/chaostk
Après avoir créé l'environnement virtuel python nommé chaostk, il a besoin d'être activé à l'aide de la commande :
source ~/.venvs/chaostk/bin/activate
Pour vérifier que vous êtes bien sous l'environnement chaostk vous pouvez lister les libraires à l'aide de la commande :
pip list
Normalement vous devez avoir un retour similaire à celui ci (seulement 2 packages devraient être présents):
Package Version
---------- -------
pip x.y.z
setuptools x.y.z
Pour les expérimentations que vous allez mettre en place, vous utiliserez Kubernetes en local.
Installer Kubernetes en local au travers de Minikube
Kubernetes est un outil assez répendu (vous aurez peut-être l'occasion de le croiser en mission), en résumé c'est un système open-source qui vous permet d'automatiser le déploiement, le mise à l'échelle et la gestion d'applications conteneurisées.
Minikube permet de créer un cluster Kubernetes sur votre poste.
Pour intéragir avec Kubernetes au travers de la cli nous allons utiliser le binaire kubectl.
curl -LO https://dl.k8s.io/release/v1.23.0/bin/linux/amd64/kubectl
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
Afficher la version de kubectl à l'aide de la commande
kubectl version --client
curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.23.0/bin/darwin/amd64/kubectl
chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl
Afficher la version de kubectl à l'aide de la commande
kubectl version --client
Vous devriez avoir un retour dans la console similaire à celui ci :
Client Version: version.Info{Major:"1", Minor:"23", GitVersion:"v1.23.0", GitCommit:"ab69524f795c42094a6630298ff53f3c3ebab7f4", GitTreeState:"clean", BuildDate:"2021-12-07T18:16:20Z", GoVersion:"go1.17.3", Compiler:"gc", Platform:"darwin/amd64"}
snap install kubectx
brew install kubectx
Installer l'hyperviseur Hyperkit macOS
brew install hyperkit
Installer Minikube
Suivre les intructions de cette page : https://kubernetes.io/fr/docs/tasks/tools/install-minikube/#installer-un-hyperviseur
curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 \
&& chmod +x minikube
sudo mkdir -p /usr/local/bin/
sudo install minikube /usr/local/bin/
brew install minikube
Créer un cluster Kubernetes avec 3 noeuds (1 master / 2 worker)
Lancer la commande
minikube start --kubernetes-version v1.23.0 --nodes 3
minikube start --driver=hyperkit --kubernetes-version v1.23.0 --nodes 3
Cela déclenchera un prompt qui vous affichera les instructions en cours, ayant installé kubectx S'assurer que vous êtes dans le bon contexte celui de minikube dans le namespace default :
kubectl config get-contexts
L'étoile doit se situer au niveau de minikube :
CURRENT | NAME | CLUSTER | AUTHINFO | NAMESPACE |
---|---|---|---|---|
* | minikube | minikube | minikube | default |
Vous devez labéliser les nodes minikube-m02 et minikube-m03 avec le label role=worker
kubectl label nodes minikube-m02 minikube-m03 role=worker
Cela vous affichera le retour suivant :
node/minikube-m02 labeled
node/minikube-m03 labeled
Afin d'avoir la possibilité d'observer au travers d'une GUI se qu'il se passe sur notre cluster minikube vous devez installer ces addons metrics-server et dashboard avec la commande :
minikube addons enable metrics-server && minikube addons enable dashboard
Ouvrez une nouvelle fenêtre dans notre terminal et tapez la commande suivante elle ouvrira une page sur votre navigateur (si vous coupez cette commande vous n'aurait plus accès au dashboard) :
minikube dashboard
Vous devriez arriver sur cette page d'accueil :
Installer Chaos Toolkit
Il suffit d'éxecuter la commande suivante depuis votre environnement virtuel python chaostk (que vous avez précédemment):
pip install chaostoolkit
Pour vérifier qu'il est bien installé, il faut executer la commande :
chaos --help
Chaos Toolkit par défaut ne connaît rien à Kubernetes c'est pour cela qu'un driver a été développé, il suffit de l'installer toujours depuis l'environnement virtuel python chaostk à l'aide de la commande :
pip install chaostoolkit-kubernetes==0.26.2 kubernetes==21.7.0
👍 Si vous êtes arrivé à cette ligne c'est que tout est installé et vous allez pouvoir passer aux expérimentaions 🎉 Pour la première experimenation ouvrir le dossier experimentation1 Pour la seconde experimenation ouvrir le dossier experimentation2