Créer une expérience de chaos qui utilise une erreur Chaos Mesh pour tuer des pods AKS avec le portail Azure
Vous pouvez utiliser une expérience de chaos pour vérifier que votre application résiste aux défaillances en les provoquant dans un environnement contrôlé. Dans cet article, vous provoquez des pannes périodiques de pod Azure Kubernetes Service (AKS) sur un espace de noms à l’aide d’une expérience de chaos et d’Azure Chaos Studio. L’exécution de cette expérience peut vous aider à vous défendre contre l’indisponibilité du service en cas de défaillances sporadiques.
Chaos Studio utilise Chaos Mesh, une plateforme d’ingénierie de chaos open source gratuite pour Kubernetes, pour injecter des erreurs dans un cluster AKS. Les erreurs Chaos Mesh sont des erreurs de service-direct qui nécessitent l’installation de Chaos Mesh sur le cluster AKS. Vous pouvez utiliser ces mêmes étapes pour configurer et exécuter une expérience pour toute erreur AKS Chaos Mesh.
- Un abonnement Azure. Si vous n’avez pas d’abonnement Azure, créez un compte gratuit Azure avant de commencer.
- Un cluster AKS avec un pool de nœuds Linux. Si vous ne disposez pas de cluster AKS, consultez le guide de démarrage rapide AKS qui utilise Azure CLI, Azure PowerShell ou le Portail Microsoft Azure.
- Vous pouvez utiliser les erreurs Chaos Mesh avec des clusters privés en configurant l'injection de VNet dans Chaos Studio. Toutes les commandes émises sur le cluster privé, y compris les étapes décrites dans cet article pour configurer Chaos Mesh, doivent suivre les instructions de cluster privé. Les méthodes recommandées incluent la connexion à partir d’une machine virtuelle dans le même réseau virtuel ou l’utilisation de la commande AKS appelle fonctionnalité.
- Les défauts AKS Chaos Mesh sont uniquement pris en charge sur les pools de nœuds Linux.
- Si votre cluster AKS est configuré pour autoriser uniquement les plages d’adresses IP autorisées, vous devez autoriser les plages d’adresses IP de Chaos Studio. Vous pouvez les trouver en interrogeant l’étiquette de service
ChaosStudio
avec l’API de découverte d’étiquettes de service ou des fichiers JSON téléchargeables.
Avant de pouvoir exécuter des erreurs Chaos Mesh dans Chaos Studio, vous devez installer Chaos Mesh sur votre cluster AKS.
Exécutez les commandes suivantes dans une fenêtre Azure Cloud Shell dans laquelle l’abonnement actif est défini comme étant l’abonnement dans lequel votre cluster AKS est déployé. Remplacez
MyManagedCluster
etMyResourceGroup
par le nom de votre cluster et le nom de votre groupe de ressources.az aks get-credentials --admin --name MyManagedCluster --resource-group MyResourceGroup
helm repo add chaos-mesh https://charts.chaos-mesh.org helm repo update kubectl create ns chaos-testing helm install chaos-mesh chaos-mesh/chaos-mesh --namespace=chaos-testing --set chaosDaemon.runtime=containerd --set chaosDaemon.socketPath=/run/containerd/containerd.sock
Vérifiez que les pods Chaos Mesh sont installés en exécutant la commande suivante :
kubectl get po -n chaos-testing
Vous devriez voir un résultat similaire à l'exemple suivant (un gestionnaire de contrôleur de chaos et un ou plusieurs démons de chaos) :
NAME READY STATUS RESTARTS AGE chaos-controller-manager-69fd5c46c8-xlqpc 1/1 Running 0 2d5h chaos-daemon-jb8xh 1/1 Running 0 2d5h chaos-dashboard-98c4c5f97-tx5ds 1/1 Running 0 2d5h
Vous pouvez également utiliser les instructions d’installation sur le site Web de Chaos Mesh.
Chaos Studio ne peut pas injecter d’erreurs sur une ressource, sauf si cette ressource est ajoutée à Chaos Studio en premier. Pour ajouter une ressource à Chaos Studio, vous créez une cible et des fonctionnalités sur la ressource. Les clusters AKS n’ont qu’un seul type cible (service direct), mais d’autres ressources peuvent avoir jusqu’à deux types cibles. L’un des types cibles est destiné aux erreurs directes de service. Un autre type cible est destiné aux erreurs basées sur l’agent. Chaque type d’erreur Chaos Mesh est représenté sous la forme d’une fonctionnalité telle que PodChaos, NetworkChaos et IOChaos.
Ouvrez le portail Azure.
Recherchez Chaos Studio dans la barre de recherche.
Sélectionnez Cibles et accédez à votre cluster AKS.
Cochez la case en regard de votre cluster AKS. Sélectionnez Activer les cibles, puis Activer des cibles service-direct dans le menu déroulant.
Assurez-vous que la ressource souhaitée est répertoriée. Sélectionnez Vérifier + Activer, puis Activer.
Une notification apparaît pour indiquer que les ressources que vous avez sélectionnées ont été activées.
Vous avez maintenant ajouté votre cluster AKS à Chaos Studio. Dans la vue Cibles, vous pouvez également gérer les fonctionnalités activées sur cette ressource. Sélectionnez le lien Gérer les actions à côté d’une ressource pour afficher les fonctionnalités activées pour cette ressource.
Vous pouvez maintenant créer votre expérience. Une expérience de chaos définit les actions à entreprendre sur les ressources cibles. Les actions sont organisées et exécutées en étapes séquentielles. L’expérience de chaos définit également les actions à entreprendre sur les branches, qui s’exécutent en parallèle.
Sélectionnez l’onglet Expériences dans Chaos Studio. Dans cette vue, vous pouvez voir et gérer toutes vos expériences de chaos. Sélectionnez Créer>Nouvelle expérience.
Renseignez les champs Abonnement, Groupe de ressourceset Emplacement, là où vous souhaitez déployer l’expérience de chaos. Donnez un nom à votre expérience. Sélectionnez Suivant : concepteur d’expériences.
Vous êtes maintenant dans le concepteur d’expérience Chaos Studio. Le concepteur d’expérience vous permet de créer votre expérience en ajoutant des étapes, des branches et des erreurs. Donnez un nom convivial à votre Étape et à votre Branche, puis sélectionnez Ajouter une action > Ajouter une erreur.
Sélectionnez Chaos de pod AKS Chaos Mesh dans la liste déroulante. Renseignez Durée avec le nombre de minutes correspondant à la durée de défaillance souhaitée et jsonSpec avec les informations suivantes :
Pour formuler votre
jsonSpec
Chaos Mesh :Consultez la documentation Chaos Mesh pour un type d’erreur, par exemple, le type PodChaos.
Formulez la configuration YAML pour ce type d’erreur à l’aide de la documentation Chaos Mesh.
apiVersion: chaos-mesh.org/v1alpha1 kind: PodChaos metadata: name: pod-failure-example namespace: chaos-testing spec: action: pod-failure mode: all duration: '600s' selector: namespaces: - default
Supprimez tout code YAML en dehors de
spec
(y compris le nom de la propriété spec) et supprimez la mise en retrait des détails de la spécification. Le paramètreduration
n’est pas nécessaire, mais est utilisé s’il est fourni. Dans ce cas, supprimez-le.action: pod-failure mode: all selector: namespaces: - default
Utilisez un convertisseur YAML vers JSON comme celui-ci pour convertir la configuration YAML de Chaos Mesh en JSON et la réduire.
{"action":"pod-failure","mode":"all","selector":{"namespaces":["default"]}}
Collez le code JSON réduit dans le champ jsonSpec du portail.
Sélectionnez Suivant : ressources cibles.
Sélectionnez votre cluster AKS, puis Suivant.
Vérifiez que votre expérience est correcte, puis sélectionnez Vérifier + créer>Créer.
Lorsque vous créez une expérience de chaos, Chaos Studio crée une identité managée affectée par le système qui exécute des erreurs sur vos ressources cibles. Cette identité doit avoir les autorisations appropriées sur la ressource cible pour que l’expérience s’exécute correctement.
Accédez à votre cluster AKS, puis sélectionnez Contrôle d’accès (IAM).
Sélectionnez Ajouter>Ajouter une attribution de rôle.
Recherchez le rôle Administrateur de cluster Azure Kubernetes Service et sélectionnez le rôle. Cliquez sur Suivant.
Choisissez Sélectionner des membres, puis recherchez le nom de votre expérience. Sélectionnez votre expérience, puis choisissez Sélectionner. S’il existe plusieurs expériences dans le même locataire avec le même nom, le nom de votre expérience est tronqué avec des caractères aléatoires ajoutés.
Sélectionnez Vérifier + attribuer>Vérifier + attribuer.
Vous êtes maintenant prêt à exécuter votre expérience. Pour voir l’effet, nous vous recommandons d’ouvrir votre vue d’ensemble du cluster AKS et d’accéder à Insights dans un onglet de navigateur distinct. Les données en direct pour le nombre de pods actifs montrent l'effet de l'exécution de votre expérience.
Dans la vue Expériences, sélectionnez votre expérience. Sélectionnez Démarrer>OK.
Lorsque l’État passe à En cours d’exécution, sélectionnez Détails pour la dernière exécution sous Historique afin de voir les détails de l’expérience en cours d’exécution.
Maintenant que vous avez exécuté une expérience directe de service AKS Chaos Mesh, vous êtes prêt à :