Abonnez-vous au flux

La demande d'exécution de systèmes complexes avec des dizaines, voire des centaines de microservices à très grande échelle a fortement augmenté. Les utilisateurs finaux s'attendent à une disponibilité continue des services dont ils dépendent et veulent éviter les temps d'arrêt, même s'ils ne durent que quelques minutes. Une approche proactive de l'ingénierie du chaos aide à répondre aux attentes des utilisateurs en identifiant les goulets d'étranglement et en sécurisant les services avant qu'un temps d'arrêt ne survienne dans l'environnement de production. L'ingénierie du chaos est donc essentielle pour éviter de perdre la confiance des utilisateurs finaux.

Pour répondre à la nécessité d'une plateforme Kubernetes résiliente et améliorer l'expérience des utilisateurs, Red Hat collabore avec la communauté Open Source et les utilisateurs finaux dans le but de créer des outils Open Source et des frameworks d'ingénierie du chaos comme Krkn, ainsi que d'en assurer le bon fonctionnement. Pour avoir une idée des capacités de Krkn, consultez ces ressources supplémentaires contenant des informations et des résultats de tests effectués dans le cadre de l'ingénierie du chaos.

Avec l'augmentation de l'adoption de Krkn pour un grand nombre de produits par la communauté et notre clientèle, nous avons été confrontés à des défis liés à l'utilisation de l'intelligence artificielle (IA) :

  • Ajout et mise à jour de scénarios de test à mesure de la mise à disposition de nouvelles fonctions et de correctifs de produits
  • Réalisation continue de tests pour plusieurs produits, impliquant un suivi rigoureux
  • Exécution de centaines de scénarios de test, au lieu de se limiter à ceux dont la probabilité de perturbation semble élevée

Les équipes d'ingénierie du chaos de Red Hat et d'IBM Research collaborent pour intégrer l'intelligence artificielle à Krkn afin d'améliorer et d'automatiser la réalisation de tests applicables à différents produits qui exécutent divers nœuds, modèles de trafic et architectures.

Intégration de l'IA au cas d'utilisation de Krkn

Avec l'adoption croissante de Krkn pour tester divers produits et configurations, il est devenu difficile de créer des scénarios de test exhaustifs. Prenons l'exemple d'une pile d'applications avec de nombreux déploiements et des pods qui doivent se coordonner pour répondre aux demandes des utilisateurs. Pour effectuer un test dans le cadre de l'ingénierie du chaos, il faut comprendre l'architecture et concevoir des scénarios de test en fonction de la nature du service (modèles de dépendances d'un microservice à un ou plusieurs autres services, utilisation intensive des ressources/du processeur, mémoire, opérations d'entrée/de sortie par seconde, modèles de réseau ou de trafic, etc.).

Il faudrait exécuter des centaines d'itérations de scénarios de test, ce qui implique un nombre considérable d'heures de travail et des coûts liés au cloud. Même si cela était possible, une surveillance constante serait nécessaire pour rechercher les cas limites oubliés et adapter les tests en fonction de l'évolution de la pile d'applications (en cas d'ajout de fonctions ou de changements dans l'architecture par exemple). Il est difficile de prédire les combinaisons de scénarios lorsqu'ils sont exécutés sur plusieurs pods, ce qui peut entraîner des objectifs de niveau de service oubliés et une dégradation des performances, avec des répercussions sur les services.

Pour effectuer cette tâche pour de nombreux produits et applications, il est possible d'utiliser Chaos AI dans Krkn. Cet exemple illustre bien comment l'IA permet d'accroître les capacités et de résoudre des problèmes complexes.

Le framework Chaos AI-Krkn déployé doit détecter et exécuter automatiquement les scénarios qui affectent le service, et utiliser l'apprentissage automatique par renforcement pour s'adapter aux changements apportés à la pile de produits.

chaos-testing-with-ai-fr

Krkn

Krkn est un moteur de chaos qui cible les API cloud, Kubernetes et OpenShift pour injecter des conditions de défaillance et suivre la récupération du composant ciblé, l'intégrité globale du cluster et les objectifs de niveau de service liés aux performances.

Chaos-recommander

À partir de pointeurs vers un service, chaos-recommender décrit chaque pod à l'aide de Prometheus afin de déterminer s'il nécessite des capacités de réseau élevées, s'il est lié au processeur, à la mémoire ou aux E/S, et suggère des scénarios Krkn qui présentent le risque de perturbation le plus élevé.

Krkn Telemetry

Lorsqu'il est activé, l'outil Krkn Telemetry recueille et stocke des informations telles que des mesures, des alertes, des paramètres de chaos, les résultats de réussite/d'échec et les journaux des tests, ainsi que les détails de l'environnement comme l'échelle (nombre de nœuds, pods, routes, etc.), l'architecture (AMD, ARM, X86_64), le plug-in de réseau (SDN, OVN). Ces données sont utilisées pour entraîner le modèle d'IA/AA afin d'identifier les composants qui présentent des défaillances régulières et de les tester davantage.

Workflow de Chaos AI

Ce framework de bout en bout prend les scénarios Krkn et les objectifs de niveau de service en entrée puis, avec chaos-recommender et Krkn-telemetry, attribue une pondération aux composants nécessitant des tests et exécute différentes combinaisons de scénarios sur la pile d'applications.

Voici un exemple de workflow pour Etcd et ApiServer :

Étape 1

Un utilisateur indique les espaces de noms Etcd et ApiServer comme cibles ainsi que les objectifs de niveau de service de sorte que l'IA vérifie et récompense ceux oubliés. Par exemple :

  • openshift-etcd et openshift-apiserver sont les entrées de l'espace de noms.
  • La latence du serveur d'API est de 99 % < 1 s.
  • Les objectifs de niveau de service indiquent des élections de chef < 0 pour Etcd

Étape 2

Chaos-AI déclenche chaos-recommander. Il décrit les espaces de noms Etcd et ApiServer pour identifier les scénarios de chaos qui présentent une probabilité élevée de perturbations en fonction des mesures d'utilisation des ressources dans Prometheus.

Étape 3

Le modèle Chaos-AI est entraîné à l'aide de l'apprentissage par renforcement. Les données krkn-telemetry sur les composants Etcd et ApiServer sont recueillies pour déterminer les pods et les conteneurs qui échouent souvent.

Étape 4

Chaos-AI attribue une pondération en fonction des étapes 2 et 3, et exécute des scénarios Krkn. L'apprentissage par renforcement est basé sur un système où le framework se récompense lui-même des objectifs de niveau de service oubliés. Dans cet exemple, cette situation se produit lorsque la latence de l'API est supérieure à 1 seconde et qu'Etcd élit un chef.

Il exécute également d'autres domaines dont la perturbation est la moins risquée, mais qui présentent moins d'itérations. S'il trouvait un nouveau composant ou une combinaison de scénarios qui échoue souvent, les informations associées seraient enregistrées dans Krkn-telemetry et renvoyées au modèle à prendre en compte pour les itérations suivantes.

Étape 5

Les défaillances sont signalées pour qu'elles puissent être corrigées.

Il s'agit d'un processus continu qui s'adapte à mesure que le produit évolue et qui identifie les domaines à améliorer sans intervention humaine lorsque des cas limites sont potentiellement oubliés.

Cas d'utilisation

Au lieu d'identifier et d'ajouter manuellement des scénarios de test dans l'intégration continue de la version de produit, il est possible d'utiliser ce framework pour identifier et exécuter automatiquement des scénarios de test, voire ajuster les composants sur la cible ainsi que les nouveaux composants introduits de façon automatique.

Mieux encore, il permet d'ajouter, de mettre à l'échelle et d'étendre facilement le système de test non seulement pour Red Hat OpenShift, mais aussi pour l'ensemble de la gamme, y compris Red Hat OpenShift Service on AWS et Red Hat OpenShift AI.

Prochaines étapes

L'intégration de Chaos AI à Krkn permet d'améliorer le système de test. Elle renforce la confiance dans les produits et l'environnement et permet aux utilisateurs d'évoluer plus rapidement en augmentant le nombre de produits et de piles d'applications à tester.

Suivez-nous pour ne pas manquer les résultats de l'intégration et les conclusions dans les prochains articles de blog. Comme vous pouvez le constater, certains éléments, notamment Krkn, chaos-recommender et Krkn-telemetry, sont déjà disponibles en Open Source. Tirez-en parti pour tester et sécuriser votre environnement. Nous travaillons activement à la mise à disposition de l'ensemble du framework Chaos AI-Krkn en Open Source.

N'hésitez pas à donner votre avis ou votre contribution. Vous trouverez le code sur Github, où vous pouvez aussi échanger sur vos cas d'utilisation.


À propos des auteurs

Naga Ravi Chaitanya Elluri leads the Chaos Engineering efforts at Red Hat with a focus on improving the resilience, performance and scalability of Kubernetes and making sure the platform and the applications running on it perform well under turbulent conditions. His interest lies in the cloud and distributed computing space and he has contributed to various open source projects.

Read full bio

Mudit Verma is a Senior Research Engineer at Cloud Operations Dept., IBM Research. He possesses over 8 years of research experience. His areas of expertise and interest encompass Distributed Systems and Cloud. In recent years, he has been active in the area of intelligence-driven Cloud Operations and enabling self-* properties including Closed-Loop Management and assurance, AI based Chaos and effective Observability. He has also been a co-inventor of more than 20 United States patents (at various stages of filing), and been a co-author of multiple research papers accepted at top-tier conferences. Additionally, he has actively mentored multiple students and collaborated with professors of various eminent academic institutions such as Boston University, IISc, IITs, IIITs, etc. He is also an ACM Eminent Speaker. He holds bachelors and masters degree from BITS-Pilani and KTH Sweden respectively.

Read full bio

Sandeep Hans is working as a Research Scientist at IBM Research Lab – India. He has extensive experience in Distributed Systems and Artificial Intelligence. He is a co-inventor of multiple patents and co-author of more than 15 research papers in top tier conferences. He received his Ph.D. in Computer Science from Technion - Israel Institute of Technology under the guidance of Prof. Hagit Attiya.  Prior to joining IBM Research, he was a post-doc at Virginia Tech in USA and has also worked with Mindtree Consulting Ltd. in Bangalore. He is currently working on building dependable systems using adversarial AI testing.

Read full bio
UI_Icon-Red_Hat-Close-A-Black-RGB

Parcourir par canal

automation icon

Automatisation

Les dernières nouveautés en matière d'automatisation informatique pour les technologies, les équipes et les environnements

AI icon

Intelligence artificielle

Actualité sur les plateformes qui permettent aux clients d'exécuter des charges de travail d'IA sur tout type d'environnement

open hybrid cloud icon

Cloud hybride ouvert

Découvrez comment créer un avenir flexible grâce au cloud hybride

security icon

Sécurité

Les dernières actualités sur la façon dont nous réduisons les risques dans tous les environnements et technologies

edge icon

Edge computing

Actualité sur les plateformes qui simplifient les opérations en périphérie

Infrastructure icon

Infrastructure

Les dernières nouveautés sur la plateforme Linux d'entreprise leader au monde

application development icon

Applications

À l’intérieur de nos solutions aux défis d’application les plus difficiles

Original series icon

Programmes originaux

Histoires passionnantes de créateurs et de leaders de technologies d'entreprise