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 entraînez des échecs 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.

Prérequis

Limites

  • Vous pouvez utiliser des erreurs Chaos Mesh avec des clusters privés en configurant l’injection de réseau virtuel 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 du 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 fonctionnalité d’appel de commande AKS.
  • Les défauts AKS Chaos Mesh sont uniquement pris en charge sur les pools de nœuds Linux.
  • Actuellement, les erreurs Chaos Mesh ne fonctionnent pas si le cluster AKS a des comptes locaux désactivés.
  • 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 ChaosStudioservice avec l’API Découverte des balises de service ou les fichiers JSON téléchargeables.

Configurer Chaos Mesh sur votre cluster AKS

Avant de pouvoir exécuter des erreurs Chaos Mesh dans Chaos Studio, vous devez installer Chaos Mesh sur votre cluster AKS.

  1. 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 $RESOURCE_GROUP et $CLUSTER_NAME par le groupe de ressources et le nom de votre ressource de cluster.

    az aks get-credentials -g $RESOURCE_GROUP -n $CLUSTER_NAME
    
    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
    
  2. Vérifiez que les pods Chaos Mesh sont installés en exécutant la commande suivante :

    kubectl get po -n chaos-testing
    

    Vous devez voir la sortie similaire à l’exemple suivant (un chaos-controller-manager et un ou plusieurs chaos-daemons) :

    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.

Activer Chaos Studio sur votre cluster AKS

Chaos Studio ne peut pas injecter d’erreurs sur une ressource, sauf si cette ressource est ajoutée à Chaos Studio en premier. Vous ajoutez une ressource à Chaos Studio en créant 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. Un type cible 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.

  1. Ouvrez le portail Azure.

  2. Recherchez Chaos Studio dans la barre de recherche.

  3. Sélectionnez Cibles et accédez à votre cluster AKS.

    Screenshot that shows the Targets view in the Azure portal.

  4. Sélectionnez la case activée box en regard de votre cluster AKS. Sélectionnez Activer les cibles , puis activez les cibles directes du service dans le menu déroulant.

    Screenshot that shows enabling targets in the Azure portal.

  5. Assurez-vous que la ressource souhaitée est répertoriée. Sélectionnez Vérifier + Activer, puis Activer.

  6. Une notification s’affiche indiquant que les ressources que vous avez sélectionnées ont été correctement activées.

    Screenshot that shows the notification showing that the target was successfully enabled.

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 en regard d’une ressource pour afficher les fonctionnalités activées pour cette ressource.

Créer une expérience

Vous pouvez maintenant créer votre expérience. Une expérience de chaos définit les actions que vous souhaitez entreprendre sur les ressources cibles. Les actions sont organisées et exécutées en étapes séquentielles. L’expérience chaos définit également les actions que vous souhaitez entreprendre sur les branches, qui s’exécutent en parallèle.

  1. 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.

    Screenshot that shows the Experiments view in the Azure portal.

  2. 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.

    Screenshot that shows adding basic experiment details.

  3. Vous êtes maintenant dans le concepteur d’expériences Chaos Studio. Le concepteur d’expérience vous permet de créer votre expérience en ajoutant des étapes, des branches et des erreurs. Attribuez un nom convivial à votre étape et à votre branche, puis sélectionnez Ajouter une erreur d’action >.

    Screenshot that shows the experiment designer.

  4. Sélectionnez AKS Chaos Mesh Pod Chaos dans la liste déroulante. Renseignez la durée avec le nombre de minutes que vous souhaitez que l’échec soit le dernier et jsonSpec avec les informations suivantes :

    Pour formuler votre maillage jsonSpecchaos :

    1. Consultez la documentation Chaos Mesh pour un type d’erreur, par exemple, le type PodChaos.

    2. 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
      
    3. Supprimez n’importe quel YAML en dehors du (y compris le nom de spec la propriété de spécification) et supprimez la mise en retrait des détails des spécifications. Le duration paramètre 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
      
    4. 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"]}}
      
    5. Collez le code JSON réduit dans le champ jsonSpec du portail.

  5. Sélectionnez Suivant : ressources cibles.

    Screenshot that shows fault properties.

  6. Sélectionnez votre cluster AKS, puis sélectionnez Suivant.

    Screenshot that shows adding a target.

  7. Vérifiez que votre expérience semble correcte et sélectionnez Vérifier + créer>.

    Screenshot that shows reviewing and creating an experiment.

Accordez l’autorisation d’expérience à votre cluster AKS

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.

  1. Accédez à votre cluster AKS et sélectionnez Contrôle d’accès (IAM) .

    Screenshot that shows the AKS Overview page.

  2. Sélectionnez Ajouter>Ajouter une attribution de rôle.

    Screenshot that shows the Access control (IAM) overview.

  3. Recherchez le rôle Administrateur de cluster Azure Kubernetes Service et sélectionnez le rôle. Cliquez sur Suivant.

    Screenshot that shows assigning the AKS Cluster Admin role.

  4. 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 portant le même nom, votre nom d’expérience est tronqué avec des caractères aléatoires ajoutés.

    Screenshot that shows adding an experiment to a role.

  5. Sélectionnez Vérifier + affecter la révision + attribuer>.

Exécuter votre expérience

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 à Recommandations dans un onglet de navigateur distinct. Les données actives pour le nombre de pods actifs affichent l’effet de l’exécution de votre expérience.

  1. Dans la vue Expériences , sélectionnez votre expérience. Sélectionnez Démarrer>OK.

    Screenshot that shows starting an experiment.

  2. Lorsque l’état passe à l’exécution, sélectionnez Détails de la dernière exécution sous Historique pour afficher les détails de l’expérience en cours d’exécution.

Étapes suivantes

Maintenant que vous avez exécuté une expérience directe de service AKS Chaos Mesh, vous êtes prêt à :