Partager via


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.

Prérequis

Limites

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 MyManagedCluster et MyResourceGroup 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
    
  2. 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.

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

  1. Ouvrez le portail Azure.

  2. Recherchez Chaos Studio dans la barre de recherche.

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

    Capture d’écran montrant la vue Tous les appareils dans le Portail Azure.

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

    Capture d’écran montrant l’activation des cibles dans le portail Azure.

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

  6. Une notification apparaît pour indiquer que les ressources que vous avez sélectionnées ont été activées.

    Capture d’écran montrant la notification qui indique que la cible a été activée.

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.

Créer une expérience

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.

  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.

    Capture d’écran montrant la vue Expériences dans le portail Azure.

  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.

    Capture d’écran montrant l’ajout de détails de base sur l’expérience.

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

    Capture d’écran montrant le concepteur d’expérience.

  4. 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 :

    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 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ètre duration 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.

    Capture d’écran montrant les propriétés de l’erreur.

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

    Capture d’écran montrant l’ajout d’une cible.

  7. Vérifiez que votre expérience est correcte, puis sélectionnez Vérifier + créer>Créer.

    Capture d’écran montrant la vérification et la création d’une expérience.

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, puis sélectionnez Contrôle d’accès (IAM).

    Capture d’écran montrant la page Vue d’ensemble d’AKS.

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

    Capture d’écran montrant la vue d’ensemble du contrôle d’accès (IAM).

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

    Capture d’écran montrant l’attribution du rôle d’administrateur de cluster AKS.

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

    Capture d’écran montrant l’ajout d’une expérience à un rôle.

  5. Sélectionnez Vérifier + attribuer>Vérifier + 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 à 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.

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

    Capture d’écran montrant le démarrage d’une expérience.

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

Étapes suivantes

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