Renforcer le contrôleur Ingress Apache APISIX avec Litmus Chaos

Aperçu

L'ingénierie du chaos joue un rôle crucial dans l'évaluation et l'amélioration de la résilience et de la fiabilité des systèmes logiciels. En simulant des événements perturbateurs, les organisations peuvent identifier les vulnérabilités et améliorer la conception et l'architecture du système. Dans cet article, nous discuterons de l'importance de l'ingénierie du chaos et de son application spécifique dans la conception d'expériences de chaos pour les contrôleurs Ingress.

Pourquoi avons-nous besoin de l'ingénierie du chaos ?

L'ingénierie du chaos est le processus d'évaluation des systèmes logiciels en simulant des événements destructeurs, tels que des pannes de réseau de serveurs ou une limitation d'API. En introduisant du chaos ou des défauts dans le système, nous pouvons tester la résilience et la fiabilité du système dans des conditions instables et inattendues.

L'ingénierie du chaos aide les équipes à identifier les risques cachés, à surveiller les vulnérabilités et à identifier les goulots d'étranglement de performance dans les systèmes distribués en simulant des scénarios réels dans un environnement de contrôle sécurisé. Cette approche prévient efficacement les temps d'arrêt du système ou les interruptions de production.

L'approche de Netflix pour gérer les systèmes nous a inspirés à adopter une approche plus scientifique, ce qui a conduit à la naissance et au développement de l'ingénierie du chaos.

1. Introduction d'événements perturbateurs

L'ingénierie du chaos implique l'introduction d'événements perturbateurs, tels que des partitions de réseau, une dégradation de service et des contraintes de ressources, pour simuler des scénarios réels et tester la capacité du système à gérer des conditions inattendues. L'objectif est d'identifier les vulnérabilités ou les faiblesses et d'améliorer la conception et l'architecture du système pour le rendre plus robuste et résilient.

2. Tester la résilience du système

Dans le paysage technologique en constante évolution et rapide d'aujourd'hui, tester la résilience du système est crucial pour s'assurer que les systèmes sont robustes, évolutifs et capables de gérer des défis et des conditions inattendus. L'ingénierie du chaos est un moyen efficace d'y parvenir en introduisant des événements perturbateurs pour observer la réponse du système et mesurer sa capacité à gérer des conditions inattendues.

Les organisations peuvent surveiller les journaux système, les métriques de performance et l'expérience utilisateur pour mesurer l'impact des événements perturbateurs sur la résilience du système. Le suivi de ces métriques permet une meilleure compréhension du comportement du système, permettant aux organisations d'identifier les domaines à améliorer.

3. Découvrir des problèmes cachés

Les systèmes distribués sont sujets à des problèmes cachés, tels que la perte de données, les goulots d'étranglement de performance et les erreurs de communication, qui peuvent être difficiles à détecter, car ils ne deviennent visibles que lorsque le système est sous pression. L'ingénierie du chaos peut aider à découvrir ces problèmes cachés en introduisant des événements perturbateurs. Ces informations peuvent ensuite être utilisées pour améliorer la conception et l'architecture du système, le rendant plus résilient et fiable.

L'identification et la résolution proactive de ces problèmes améliorent la fiabilité et la performance des systèmes, préviennent les temps d'arrêt, réduisent le risque de perte de données et assurent un fonctionnement fluide du système.

4. Ce que cela vaut et pourquoi en avons-nous besoin ?

Les systèmes distribués sont complexes et intrinsèquement chaotiques, ce qui peut entraîner des échecs. L'utilisation de l'architecture cloud et des microservices offre de nombreux avantages mais s'accompagne également de complexité et de chaos. Les ingénieurs sont responsables de rendre le système aussi fiable que possible.

Sans tests, il n'y a pas de confiance pour utiliser le projet en environnement de production. En plus des tests unitaires conventionnels et des tests de bout en bout, l'introduction de tests de chaos rend le système plus robuste.

Lorsqu'une erreur se produit, la réparer prend du temps et peut causer des pertes inestimables, avec des effets à long terme dans le futur. Pendant le processus de réparation, divers facteurs doivent être pris en compte, y compris la complexité du système, le type d'erreur et les nouveaux problèmes possibles, pour assurer une réparation finale efficace.

De plus, lorsqu'un projet open source apporte des défauts graves aux utilisateurs en environnement de production, de nombreux utilisateurs peuvent passer à d'autres produits.

Comment concevoir des expériences de chaos pour un contrôleur Ingress ?

1. Qu'est-ce qu'Ingress ?

Ingress est un objet de ressource Kubernetes qui contient des règles sur la manière dont les clients externes peuvent accéder aux services au sein du cluster. Ces règles dictent quels clients peuvent accéder à quels services, comment les demandes des clients sont acheminées vers les services appropriés et comment les demandes des clients sont traitées.

2. Qu'est-ce qu'un contrôleur Ingress ?

Une ressource Ingress nécessite un contrôleur Ingress pour la traiter. Le contrôleur traduit les règles Ingress en configurations sur un proxy, permettant aux clients externes d'accéder aux services au sein du cluster. Dans un environnement de production, les contrôleurs Ingress doivent avoir des capacités complexes, telles que la limitation des sources d'accès et des méthodes de demande, l'authentification et l'autorisation. La plupart des contrôleurs Ingress étendent la sémantique d'Ingress via des annotations dans la ressource Ingress.

3. Qu'est-ce qu'Apache APISIX Ingress Controller ?

Apache APISIX Ingress Controller est un type spécialisé d'équilibreur de charge qui aide les administrateurs à gérer et à contrôler le trafic Ingress. Il utilise APISIX comme plan de données pour fournir aux utilisateurs des fonctionnalités telles que le routage dynamique, l'équilibrage de charge, la mise à l'échelle élastique, les politiques de sécurité et d'autres fonctionnalités pour améliorer le contrôle du réseau et assurer une disponibilité et une sécurité plus élevées pour leur entreprise. APISIX Ingress Controller prend en charge trois modes de configuration : Kubernetes Ingress, les ressources personnalisées et l'API Gateway.

APISIX-Ingress

4. Qu'est-ce que Litmus Chaos ?

Litmus Chaos est un framework d'ingénierie du chaos open source qui fournit un cadre expérimental d'infrastructure pour valider la stabilité des contrôleurs et des architectures de microservices. Il peut simuler divers environnements, tels que des environnements au niveau des conteneurs et des applications, des catastrophes naturelles, des pannes et des mises à niveau, pour comprendre comment le système réagit à ces changements. Le framework peut également explorer les changements de comportement entre les contrôleurs et les applications, et comment les contrôleurs répondent aux défis dans des états spécifiques. Litmus Chaos offre des capacités d'intégration d'observabilité pratiques et est hautement extensible.

5. Comment concevoir des expériences de chaos ?

Voici une procédure générale pour concevoir des expériences de chaos dans n'importe quel scénario :

  • Définir le système sous test : Identifier les composants spécifiques du système sur lesquels vous souhaitez expérimenter et développer des objectifs clairs et mesurables pour l'expérience. Cela inclut la création d'une liste complète des composants, tels que le matériel et les logiciels, qui seront testés, ainsi que la définition de la portée de l'expérience et des résultats attendus.

under-test

kube-apiserver : si une exception se produit, l'écriture de la ressource Ingress a échoué. Ingress-controller : Interruption réseau, Crash, Podfaults, I/O data-plane : Interruption réseau, Crash, Podfaults, I/O

  • Choisir la bonne expérience : Sélectionner une expérience qui correspond aux objectifs que vous avez fixés et qui imite de près un scénario réel. Cela aidera à s'assurer que l'expérience produit des résultats significatifs et reflète fidèlement le comportement du système.
  • Établir une hypothèse : Établir une hypothèse sur la manière dont le système se comportera pendant l'expérience et les résultats que vous anticipez. Cela devrait être basé sur l'expérience ou la recherche, et cela devrait être raisonnable et testable.
  • Exécuter l'expérience : Exécuter l'expérience dans un environnement contrôlé, tel qu'un environnement de staging, pour limiter le potentiel de dommages au système de production. Collecter toutes les données pertinentes pendant l'expérience et les stocker en toute sécurité. Il peut y avoir des opinions divergentes sur la question de savoir si l'expérience devrait avoir lieu directement dans l'environnement de production. Cependant, pour la plupart des scénarios, nous devons nous assurer que l'objectif de niveau de service (SLO) du système est respecté.
  • Évaluer les résultats : Évaluer les résultats de l'expérience et les comparer à votre hypothèse. Analyser les données collectées et documenter toute observation ou découverte. Cela inclut l'identification de tout résultat inattendu ou de toute divergence et la détermination de la manière dont ils pourraient affecter le système. De plus, considérer comment les résultats de l'expérience peuvent être utilisés pour améliorer le système.

Principaux scénarios d'utilisation du contrôleur Ingress

La capacité la plus importante d'un contrôleur Ingress est de proxyer le trafic, et toutes les autres fonctions sont basées sur cette fonction centrale. Par conséquent, lors de la réalisation de l'ingénierie du chaos, le proxyage normal du trafic est la métrique clé.

Pour définir le système sous test pour APISIX Ingress Controller, les utilisateurs doivent créer des configurations de route, telles que Ingress, Gateway API ou CRD, et les appliquer au cluster Kubernetes via Kubectl. Ce processus passe par kube-apiserver pour l'authentification, l'autorisation, l'admission et d'autres procédures connexes, puis est stocké dans etcd.

Le contrôleur APISIX Ingress surveille en permanence les changements dans les ressources Kubernetes. Ces configurations sont ensuite converties en configurations sur le plan de données. Lorsqu'un client demande le plan de données, il accède au service en amont selon les règles de routage.

Si kube-apiserver a une exception, cela empêchera la création de la configuration, ou le contrôleur Ingress d'obtenir la configuration correcte. De même, s'il y a une exception dans le plan de données, telle qu'une interruption réseau ou un Pod tué, il ne pourra pas non plus faire de proxyage normal du trafic.

La portée de notre expérience est principalement l'impact sur la disponibilité du système si le contrôleur Ingress a une exception.

1. Étapes opérationnelles détaillées

  • Choisir la bonne expérience : Nous pouvons couvrir de nombreux scénarios de configuration incorrecte grâce à des tests de bout en bout. Principalement grâce à l'ingénierie du chaos, nous pouvons vérifier si le plan de données peut encore proxyer le trafic normalement lorsque le contrôleur Ingress rencontre une exception, telle que des erreurs DNS, des interruptions réseau ou un Pod tué.
  • Établir une hypothèse : Pour chaque scénario, nous pouvons créer une hypothèse telle que "Lorsque le Pod Ingress-controller obtient X?, la demande du client peut toujours obtenir une réponse normale."
  • Exécuter l'expérience : L'expérience et les variables ont été déterminées, donc tout ce qui reste est d'expérimenter.
    Litmus Chaos fournit diverses façons de mener des expériences. Nous pouvons le faire via le portail Litmus. Pour ce faire, nous devons créer un scénario de chaos, sélectionner l'application à expérimenter, et ces étapes sont relativement simples. Cependant, nous devons faire attention au fait que Litmus Chaos inclut une ressource Probes.

Les Probes sont des vérifications enfichables qui peuvent être définies dans le ChaosEngine pour toute expérience de chaos. Les pods d'expérience exécutent ces vérifications en fonction du mode dans lequel elles sont définies et considèrent leur succès comme des conditions nécessaires pour déterminer le verdict de l'expérience, en plus des vérifications intégrées standard. En même temps, nous pouvons également planifier des expériences, ce qui est une fonction très précieuse.

De plus, Litmus Chaos prend également en charge l'exécution d'expériences en soumettant des manifestes YAML.

chaos-center-portal

  • Évaluer les résultats : Litmus Chaos a des rapports statistiques intégrés, et il peut être intégré à Prometheus et Grafana pour fournir un tableau de bord unifié pour l'intégration.

statistics-report

2. Avantages et avenir

Grâce à des tests de bout en bout rigoureux et à la puissance de l'ingénierie du chaos, nous sommes confiants dans la stabilité et la fiabilité du contrôleur APISIX Ingress Controller livré. L'ingénierie du chaos nous a également aidés à identifier et à corriger des bugs. Nous travaillons constamment à améliorer et à faire évoluer ce projet incroyable, et nous vous invitons à rejoindre notre communauté.

Share article link