{"id":54208,"date":"2019-12-20T00:00:00","date_gmt":"2019-12-19T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/seriya-postov-po-istio-service-mesh"},"modified":"2020-02-18T14:02:12","modified_gmt":"2020-02-18T11:02:12","slug":"seriya-postov-po-istio-service-mesh","status":"publish","type":"post","link":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/seriya-postov-po-istio-service-mesh","title":{"rendered":"S\u00e9rie de publications sur Istio Service Mesh","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Nous entamons une s\u00e9rie de posts o\u00f9 nous d\u00e9montrerons certaines des nombreuses fonctionnalit\u00e9s de la grille de services Istio Service Mesh en combinaison avec Red Hat OpenShift et Kubernetes.<\/p>\n<p><img decoding=\"async\" alt=\"S\u00e9rie de publications sur Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/b7cc06e1451763db78fdf84764af4b69.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPartie une, aujourd'hui : <\/p>\n<ul>\n<li>Nous expliquerons le concept des conteneurs sidecar de Kubernetes et formulerons le leitmotiv de cette s\u00e9rie de posts : <b>\u00ab vous n'avez rien \u00e0 changer dans votre code \u00bb<\/b>.<\/li>\n<li>Pr\u00e9sentons un \u00e9l\u00e9ment fondamental d'Istio \u2013 les r\u00e8gles de routage. Toutes les autres fonctionnalit\u00e9s d'Istio reposent sur ces r\u00e8gles, car ce sont elles qui permettent d'acheminer le trafic vers les microservices en utilisant des fichiers YAML externes au code des services. Nous examinerons \u00e9galement le sch\u00e9ma de d\u00e9ploiement de Canary Deployment. Bonus de fin d'ann\u00e9e \u2013 10 sessions interactives sur Istio.<\/li>\n<\/ul>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nPartie deux, qui sortira bient\u00f4t, vous expliquera : <\/p>\n<ul>\n<li>Comment Istio met en \u0153uvre l'\u00e9jection de pool en combinaison avec le Circuit Breaker et d\u00e9montrera comment Istio permet de retirer du sch\u00e9ma d'\u00e9quilibrage un pod d\u00e9faillant ou mal fonctionnant.<\/li>\n<li>Nous examinerons \u00e9galement le sujet du Circuit Breaker du premier post concernant comment Istio peut \u00eatre utilis\u00e9 ici. Nous montrerons comment router le trafic et traiter les erreurs r\u00e9seau sans le moindre changement dans le code des services, en utilisant des fichiers de configuration YAML et des commandes terminal.<\/li>\n<\/ul>\n<p>\nPartie trois : <\/p>\n<ul>\n<li>R\u00e9cit sur la tra\u00e7abilit\u00e9 et la surveillance, qui sont d\u00e9j\u00e0 int\u00e9gr\u00e9es ou facilement ajout\u00e9es \u00e0 Istio. Nous montrerons comment utiliser des outils comme Prometheus, Jaeger et Grafana en combinaison avec le scaling d'OpenShift pour g\u00e9rer sans effort l'architecture des microservices.<\/li>\n<li>Nous passons de la surveillance et du traitement des erreurs \u00e0 l'injection intentionnelle de celles-ci dans le syst\u00e8me. En d'autres termes, nous apprenons \u00e0 effectuer l'injection de d\u00e9fauts sans modifier le code source, ce qui est tr\u00e8s important du point de vue des tests \u2014 car si l'on modifie le code pour cela, il y a un risque d'introduire d'autres erreurs.<\/li>\n<\/ul>\n<p>\nEnfin, dans le post final sur Istio Service Mesh :<\/p>\n<ul>\n<li>Nous passerons du c\u00f4t\u00e9 Obscur. Plus pr\u00e9cis\u00e9ment, nous apprendrons \u00e0 utiliser le sch\u00e9ma de Dark Launch, lorsque le code est d\u00e9ploy\u00e9 et test\u00e9 directement sur des donn\u00e9es de production, sans affecter le fonctionnement du syst\u00e8me. Ici, la capacit\u00e9 d'Istio \u00e0 s\u00e9parer le trafic est tr\u00e8s utile. La possibilit\u00e9 de tester sur de vraies donn\u00e9es de production, sans impacter le fonctionnement du syst\u00e8me en production, est le moyen le plus convaincant de v\u00e9rification.<\/li>\n<li>En partant du Dark Launch, montrons comment utiliser le mod\u00e8le de Canary Deployment pour r\u00e9duire les risques et simplifier le d\u00e9ploiement de nouveau code. Le Canary Deployment en soi n'est pas une nouveaut\u00e9, mais Istio permet de mettre en \u0153uvre ce sch\u00e9ma simplement avec des fichiers YAML peu complexes.<\/li>\n<li>En conclusion, nous verrons comment donner acc\u00e8s aux services \u00e0 ceux qui se trouvent en dehors de vos clusters avec Istio Egress, afin de tirer parti des fonctionnalit\u00e9s d'Istio lors de l'utilisation d'Internet.<\/li>\n<\/ul>\n<p>\nAlors, c'est parti\u2026<\/p>\n<p><b>L'outil de surveillance et de gestion d'Istio \u2013 tout ce qu'il faut pour coordonner les microservices dans la service mesh. <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/service-mesh\/\">service mesh<\/a><\/noindex>.<\/b><\/p>\n<h3>Qu'est-ce que la service mesh Istio ?<\/h3>\n<p>\nLa service mesh impl\u00e9mente pour un groupe de services des fonctions telles que la surveillance du trafic, le contr\u00f4le d'acc\u00e8s, la d\u00e9couverte, la s\u00e9curit\u00e9, la r\u00e9silience et d'autres fonctionnalit\u00e9s utiles. Istio permet de faire tout cela sans aucune modification du code des services eux-m\u00eames. Quel est le secret de cette magie ? Istio attache \u00e0 chaque service son proxy sous la forme d'un conteneur sidecar, apr\u00e8s quoi tout le trafic vers ce service passe par le proxy, qui, en suivant les politiques d\u00e9finies, d\u00e9cide comment, quand et si ce trafic doit vraiment atteindre le service. Istio permet \u00e9galement de mettre en \u0153uvre des techniques DevOps avanc\u00e9es, telles que les d\u00e9ploiements canary, les disjoncteurs, l'injection de fautes, et bien d'autres.<\/p>\n<h3>Comment Istio fonctionne avec les conteneurs et Kubernetes.<\/h3>\n<p>\nLa service mesh Istio est une mise en \u0153uvre sidecar de tout ce qui est n\u00e9cessaire pour cr\u00e9er et g\u00e9rer des microservices : surveillance, tra\u00e7age, disjoncteurs, routage, \u00e9quilibrage de charge, injection de fautes, r\u00e9p\u00e9titions, time-outs, mirroring, contr\u00f4le d'acc\u00e8s, limitation de d\u00e9bit et bien plus encore. Et bien qu'il existe aujourd'hui de nombreuses biblioth\u00e8ques pour mettre en \u0153uvre ces fonctionnalit\u00e9s directement dans le code, avec Istio, vous pouvez obtenir tout cela sans modifier votre code.<\/p>\n<p>Selon le mod\u00e8le sidecar, Istio s'ex\u00e9cute dans un conteneur Linux qui est situ\u00e9 dans le m\u00eame <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/kubernetes\/\">Kubernetes<\/a><\/noindex>-pod que le service contr\u00f4l\u00e9 et injecte (inject) et extrait (extract) des fonctionnalit\u00e9s et des informations selon la configuration d\u00e9finie. Soulignons que c'est votre propre configuration, et elle vit en dehors de votre code. Ainsi, le code devient beaucoup plus simple et plus concis.<\/p>\n<p>Il est \u00e9galement important de noter que l'aspect op\u00e9rationnel des microservices n'est pas du tout li\u00e9 au code lui-m\u00eame, ce qui signifie que leur exploitation peut \u00eatre tranquillement confi\u00e9e aux sp\u00e9cialistes IT. En effet, pourquoi un d\u00e9veloppeur devrait-il \u00eatre responsable des circuit breakers et de l'injection de pannes ? R\u00e9agir \u2013 oui, mais les g\u00e9rer et les cr\u00e9er ? En retirant tout cela du code, les programmeurs pourront se concentrer enti\u00e8rement sur la fonctionnalit\u00e9 applicative. De plus, le code lui-m\u00eame deviendra plus court et plus simple.<\/p>\n<h3>Maillage de services<\/h3>\n<p>\nIstio, qui impl\u00e9mente des fonctions de gestion des microservices en dehors de leur code \u2013 c'est ce qu'on appelle le concept de maillage de services Service Mesh. Autrement dit, c'est un groupe coordonn\u00e9 d'un ou plusieurs binaires qui forment un maillage de fonctions r\u00e9seau.<\/p>\n<h3>Comment Istio fonctionne avec les microservices<\/h3>\n<p>\nVoici \u00e0 quoi ressemble le fonctionnement des conteneurs sidecar en liaison avec <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/kubernetes\/\">Kubernetes<\/a><\/noindex> et <noindex><a rel=\"nofollow\" href=\"https:\/\/www.openshift.org\/minishift\/\">Minishift<\/a><\/noindex> vues d'ensemble : vous lancez une instance de Minishift, cr\u00e9ez un projet pour Istio (appelons-le \u00ab istio-system \u00bb), installez et d\u00e9marrez tous les composants associ\u00e9s \u00e0 Istio. Ensuite, au fur et \u00e0 mesure que vous cr\u00e9ez des projets et des pods, vous ajoutez des informations de configuration \u00e0 vos d\u00e9ploiements, et vos pods commencent \u00e0 utiliser Istio. Simplifi\u00e9e, le diagramme ressemble \u00e0 ceci :<\/p>\n<p><img decoding=\"async\" alt=\"S\u00e9rie de publications sur Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/feb36ba35442307a8136c395ccae4fd2.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Vous pouvez maintenant modifier les param\u00e8tres d'Istio pour, par exemple, organiser des injections de pannes, le support <noindex><a rel=\"nofollow\" href=\"https:\/\/istio.io\/blog\/2017\/0.1-canary.html\">D\u00e9ploiement Canary<\/a><\/noindex> ou d'autres fonctionnalit\u00e9s d'Istio \u2013 et tout cela sans toucher au code des applications elles-m\u00eames. Supposons que vous souhaitiez rediriger tout le trafic web de votre plus grand client (Foo Corporation) vers une nouvelle version du site. Pour ce faire, il suffit de cr\u00e9er une r\u00e8gle de routage Istio qui recherchera @foocorporation.com dans l'identifiant utilisateur et effectuera la redirection correspondante. Pour tous les autres utilisateurs, rien ne changera. Et pendant ce temps, vous pourrez tranquillement tester la nouvelle version du site. Et notez qu'il n'est pas n\u00e9cessaire d'impliquer les d\u00e9veloppeurs pour cela.<\/p>\n<h3>Et cela va co\u00fbter cher ?<\/h3>\n<p>\nPas du tout. Istio fonctionne assez rapidement, il est \u00e9crit en <noindex><a rel=\"nofollow\" href=\"https:\/\/golang.org\/\">Go<\/a><\/noindex> et cr\u00e9e peu de surcharge. De plus, la perte potentielle en performance en ligne est compens\u00e9e par l\u2019augmentation de la productivit\u00e9 des d\u00e9veloppeurs. Du moins en th\u00e9orie : n\u2019oubliez pas que le temps des d\u00e9veloppeurs co\u00fbte cher. En ce qui concerne les frais de logiciel, Istio est un logiciel open source, vous pouvez donc l'obtenir et l'utiliser gratuitement.<\/p>\n<h3>Ma\u00eetrisez par vous-m\u00eame<\/h3>\n<p>\nL'\u00e9quipe Red Hat Developer Experience a d\u00e9velopp\u00e9 une formation pratique approfondie <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/redhat-developer-demos\/istio-tutorial\">guide<\/a><\/noindex> sur Istio (en anglais). Elle fonctionne sur Linux, MacOS et Windows, et le code est disponible en versions Java et Node.js.<\/p>\n<h3>10 sessions interactives sur Istio<\/h3>\n<p><\/p>\n<h4>Bloc 1 \u2014 Pour les d\u00e9butants<\/h4>\n<p>\n<b>Introduction \u00e0 Istio<\/b><br \/>\n30 minutes <br \/>\nFamiliarisez-vous avec Service Mesh, apprenez \u00e0 installer Istio dans un cluster Kubernetes OpenShift.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/istio-introduction\/\">Commencer<\/a><\/noindex> <\/p>\n<p><b>D\u00e9ploiement de microservices dans Istio<\/b><br \/>\n30 minutes<br \/>\nUtilisons Istio pour d\u00e9ployer trois microservices avec Spring Boot et Vert.x.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/deploy-microservices\/\">Commencer<\/a><\/noindex> <\/p>\n<h4>Bloc 2 \u2013 Niveau interm\u00e9diaire <\/h4>\n<p>\n<b>Surveillance et tra\u00e7age dans Istio<\/b><br \/>\n60 minutes <br \/>\nNous d\u00e9couvrons les outils de surveillance int\u00e9gr\u00e9s d'Istio, les m\u00e9triques configurables, ainsi qu'OpenTracing via Prometheus et Grafana.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/monitoring-tracing\/\">Commencer<\/a><\/noindex> <\/p>\n<p><b>Routage simple dans Istio<\/b><br \/>\n60 minutes <br \/>\nApprenons \u00e0 g\u00e9rer le routage dans Istio avec des r\u00e8gles simples.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/simple-route-rules\/\">Commencer <\/a><\/noindex><\/p>\n<p><b>R\u00e8gles de routage avanc\u00e9es<\/b><br \/>\n60 minutes <br \/>\nFamiliarisez-vous avec le routage intelligent dans Istio, la gestion d'acc\u00e8s, l'\u00e9quilibrage de charge et la limitation de d\u00e9bit.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/advanced-routerules\/\">Commencer<\/a><\/noindex> <\/p>\n<h4>Bloc 3 \u2013 Utilisateur avanc\u00e9<\/h4>\n<p>\n<b>Injection de pannes dans Istio<\/b><br \/>\n60 minutes <br \/>\nNous explorons les sc\u00e9narios de gestion des pannes dans les applications distribu\u00e9es, cr\u00e9ant des erreurs HTTP et des latences r\u00e9seau, et apprenons \u00e0 appliquer le chaos engineering pour restaurer l'environnement.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/fault-injection\/\">Commencer<\/a><\/noindex> <\/p>\n<p><b>Circuit Breaker dans Istio<\/b><br \/>\n30 minutes <br \/>\nNous installons Siege pour le test de charge des sites et apprenons \u00e0 assurer la r\u00e9silience du backend avec des r\u00e9p\u00e9titions, un circuit breaker et l\u2019\u00e9jection de pool.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/circuit-breaker\/\">Commencer<\/a><\/noindex> <\/p>\n<p><b>Egress et Istio<\/b><br \/>\n10 minutes <br \/>\nNous utilisons les routes Egress pour cr\u00e9er des r\u00e8gles d'interaction entre les services internes et les API externes.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/egress\/\">Commencer<\/a><\/noindex> <\/p>\n<p><b>Istio et Kiali<\/b><br \/>\n15 minutes <br \/>\nApprenons \u00e0 utiliser Kiali pour obtenir une vue d'ensemble de la service mesh et \u00e9tudier les flux de requ\u00eates et de donn\u00e9es.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/observe-kiali\/\">Commencer<\/a><\/noindex> <\/p>\n<p>Mutual TLS dans Istio<br \/>\n15 minutes <br \/>\nCr\u00e9ons un Istio Gateway et un VirtualService, puis examinons en d\u00e9tail le mutual TLS (mTLS) et ses configurations.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/mtls\/\">Commencer<\/a><\/noindex> <\/p>\n<h4>Bloc 3.1 \u2014 Plong\u00e9e approfondie : Istio Service Mesh pour microservices<\/h4>\n<p>\n<img decoding=\"async\" alt=\"S\u00e9rie de publications sur Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/1a2bb62b0bbd46fa9b42be1ccbfddfa6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n\u00c0 propos de quoi porte le livre :<\/p>\n<ul>\n<li>Qu'est-ce qu'une service mesh.<\/li>\n<li>Le syst\u00e8me Istio et son r\u00f4le dans l'architecture microservices.<\/li>\n<li>L'utilisation d'Istio pour r\u00e9soudre les probl\u00e8mes suivants :\n<ul>\n<li>R\u00e9silience ;<\/li>\n<li>Routage ;<\/li>\n<li>Test de chaos ;<\/li>\n<li>S\u00e9curit\u00e9 ;<\/li>\n<li>Collecte de t\u00e9l\u00e9m\u00e9trie \u00e0 l'aide de tra\u00e7age, de m\u00e9triques et de Grafana.<\/li>\n<\/ul>\n<p>\n <\/li>\n<\/ul>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/books\/introducing-istio-service-mesh-microservices\/\">T\u00e9l\u00e9charger le livre<\/a><\/noindex><\/p>\n<h3>S\u00e9rie d'articles sur les maillages de services et Istio<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/blog\/2018\/03\/13\/istio-route-rules-service-requests\/\">R\u00e8gles de routage d'Istio : diriger les requ\u00eates de service l\u00e0 o\u00f9 il faut<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/blog\/2018\/03\/20\/istio-circuit-breaker-pool-ejection\/\">Les Circuit Breakers dans Istio : g\u00e9rer l'\u00e9jection de pools<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/blog\/2018\/03\/27\/istio-circuit-breaker-when-failure-is-an-option\/\">Circuit Breaker dans Istio : quand l'\u00e9chec est une option<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/blog\/2018\/04\/03\/istio-tracing-monitoring\/\">Tra\u00e7age et surveillance dans Istio : vers o\u00f9 tout se dirige et \u00e0 quelle vitesse<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/blog\/2018\/04\/10\/istio-chaos-engineering\/\">Ing\u00e9nierie du chaos dans Istio : c'\u00e9tait l'id\u00e9e originale<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/blog\/2018\/04\/17\/istio-dark-launch-secret-services\/\">Lancement secret dans Istio : services secrets<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/blog\/2018\/04\/24\/istio-smart-canary-launch\/\">Canary Deployment dans Istio : simplification du d\u00e9ploiement<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/blog\/2018\/05\/01\/istio-egress-exit-through-the-gift-shop\/\">Istio Egress : sortie par la boutique de souvenirs<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<h3>Essayez par vous-m\u00eame<\/h3>\n<p>\nCette s\u00e9rie de posts n'a pas pour but d'assurer une immersion profonde dans le monde d'Istio. Nous voulons simplement vous pr\u00e9senter le concept et, peut-\u00eatre, vous inspirer \u00e0 essayer Istio par vous-m\u00eame. Vous pouvez le faire compl\u00e8tement gratuitement, et Red Hat fournit tous les outils n\u00e9cessaires pour commencer \u00e0 apprendre OpenShift, Kubernetes, les conteneurs Linux et Istio, \u00e0 savoir : <noindex><a rel=\"nofollow\" href=\"https:\/\/www.openshift.com\/products\/container-platform\/trial\/\">Red Hat Developer OpenShift Container Platform<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/redhat-developer-demos\/istio-tutorial\">notre guide sur Istio<\/a><\/noindex> et d'autres ressources sur notre <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/service-mesh\/\">microsite d\u00e9di\u00e9 au Service Mesh<\/a><\/noindex>. Ne tardez pas, commencez d\u00e8s aujourd'hui !<\/p>\n<h3>R\u00e8gles de routage d'Istio : diriger les requ\u00eates de service l\u00e0 o\u00f9 il faut<\/h3>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/products\/openshift\/overview\/\">OpenShift<\/a><\/noindex> et <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/kubernetes\/\">Kubernetes<\/a><\/noindex> s'occupent parfaitement de la fa\u00e7on dont les appels aux <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/microservices\/\">microservices<\/a><\/noindex> sont rout\u00e9s vers les bons pods. C'est l'un des objectifs de Kubernetes : le routage et l'\u00e9quilibrage des charges. Et si vous avez besoin d'un routage plus pr\u00e9cis et sophistiqu\u00e9 ? Par exemple, pour utiliser simultan\u00e9ment deux versions d'un microservice. Comment les r\u00e8gles de routage d'Istio peuvent-elles aider ici ?<\/p>\n<p>Les r\u00e8gles de routage sont celles qui d\u00e9finissent le choix du chemin. Quel que soit le niveau de complexit\u00e9 du syst\u00e8me, le principe de base de ces r\u00e8gles reste simple : les requ\u00eates sont rout\u00e9es en fonction de param\u00e8tres sp\u00e9cifiques et de valeurs d'en-t\u00eate HTTP. <br \/>\nExaminons quelques exemples : <\/p>\n<h3>Kubernetes par d\u00e9faut : trivial \u00ab 50-50 \u00bb<\/h3>\n<p>\nDans notre exemple, nous allons montrer comment utiliser simultan\u00e9ment deux versions d'un microservice dans OpenShift, que nous appellerons v1 et v2. Chaque version s'ex\u00e9cute dans son propre pod Kubernetes, et par d\u00e9faut, un routage \u00e9quilibr\u00e9 uniforme est appliqu\u00e9. Chaque pod re\u00e7oit sa part de requ\u00eates en fonction de son nombre d'instances de microservice, c'est-\u00e0-dire de r\u00e9pliques. Istio permet de modifier cet \u00e9quilibre manuellement.<\/p>\n<p>Supposons que nous avons d\u00e9ploy\u00e9 sur OpenShift deux versions de notre service de recommandation, recommendation-v1 et recommendation-v2.<br \/>\nComme le montre la figure 1, lorsque chaque service est repr\u00e9sent\u00e9 par une seule instance, les requ\u00eates alternent uniform\u00e9ment entre elles : 1-2-1-2-\u2026 C'est ainsi que le routage de Kubernetes fonctionne par d\u00e9faut :<\/p>\n<p><img decoding=\"async\" alt=\"S\u00e9rie de publications sur Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/93b00e4845ba930ca4d718b59629377e.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>R\u00e9partition pond\u00e9r\u00e9e entre les versions<\/h3>\n<p>\nLa figure 2 montre ce qui se passe si le nombre de r\u00e9plicas du service v2 est augment\u00e9 d'un \u00e0 deux (cela se fait avec la commande oc scale \u2014replicas=2 deployment\/recommendation-v2). Comme nous pouvons le voir, les requ\u00eates entre v1 et v2 sont d\u00e9sormais r\u00e9parties dans un ratio de \u00ab un pour trois \u00bb : 1-2-2-1-2-2-\u2026 :<\/p>\n<p><img decoding=\"async\" alt=\"S\u00e9rie de publications sur Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/a432b1cea0e297c99b041137d33fc107.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Ignorer la version avec Istio<\/h3>\n<p>\nIstio permet de modifier facilement la r\u00e9partition des requ\u00eates selon nos besoins. Par exemple, envoyer tout le trafic uniquement vers recommendation-v1 avec le fichier yaml Istio suivant :<\/p>\n<p><img decoding=\"async\" alt=\"S\u00e9rie de publications sur Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/db4190d495fb6dcc7c50cb8d28a7ef58.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Il convient de noter ici que les pods sont s\u00e9lectionn\u00e9s en fonction des labels. Dans notre exemple, le label v1 est utilis\u00e9. Le param\u00e8tre \u00ab weight: 100 \u00bb signifie que 100 % du trafic sera achemin\u00e9 vers tous les pods du service qui ont le label v1.<\/p>\n<h3>R\u00e9partition directive entre les versions (Canary Deployment)<\/h3>\n<p>\nEnsuite, en utilisant le param\u00e8tre weight, il est possible de diriger le trafic vers les deux pods, en ignorant le nombre d'instances de microservices en cours d'ex\u00e9cution dans chacun d'eux. Par exemple, ici, nous dirigeons 90 % du trafic vers v1 et 10 % vers v2 :<\/p>\n<p><img decoding=\"async\" alt=\"S\u00e9rie de publications sur Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/1a28e76ea7d8306fbefecefaad34c931.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Routage s\u00e9par\u00e9 des utilisateurs mobiles<\/h3>\n<p>\nEnfin, montrons comment forcer le routage du trafic des utilisateurs mobiles vers le service v2, tandis que tous les autres iront vers v1. Pour ce faire, nous analysons la valeur de l'user-agent dans l'en-t\u00eate de la requ\u00eate \u00e0 l'aide d'expressions r\u00e9guli\u00e8res :<\/p>\n<p><img decoding=\"async\" alt=\"S\u00e9rie de publications sur Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/efab7f92a1bcfc7e23ae279de57c738e.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Maintenant, c'est votre tour<\/h3>\n<p>\nL'exemple avec les expressions r\u00e9guli\u00e8res pour analyser les en-t\u00eates devrait vous inciter \u00e0 rechercher vos propres variantes d'application des r\u00e8gles de routage Istio. D'autant plus que les possibilit\u00e9s offertes sont tr\u00e8s vastes, car les valeurs des en-t\u00eates peuvent \u00eatre form\u00e9es dans le code source des applications.<\/p>\n<h3>Et n'oubliez pas que c'est Ops, et non Dev<\/h3>\n<p>\nTout ce que nous avons montr\u00e9 dans les exemples ci-dessus se fait sans le moindre changement dans le code source, except\u00e9 dans les cas o\u00f9 il est n\u00e9cessaire de former des en-t\u00eates de requ\u00eates sp\u00e9ciaux. Istio sera utile tant pour les d\u00e9veloppeurs, qui pourront par exemple l'utiliser lors de la phase de test, que pour les professionnels de l'exploitation des syst\u00e8mes IT, qui en tireront un grand b\u00e9n\u00e9fice en production.<\/p>\n<p>Donc, rappelons le leitmotiv de cette s\u00e9rie de publications : <b>vous n'avez rien \u00e0 changer dans votre code<\/b>. Pas besoin de rassembler de nouvelles images ou de lancer de nouveaux conteneurs. Tout cela se fait en dehors du code.<\/p>\n<h3>Laissez libre cours \u00e0 votre imagination<\/h3>\n<p>\nImaginez seulement les perspectives ouvertes par l'analyse des en-t\u00eates \u00e0 l'aide d'expressions r\u00e9guli\u00e8res. Vous voulez rediriger votre plus grand client vers une version sp\u00e9ciale de vos <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/microservices\/\">microservices<\/a><\/noindex>? \u041b\u0435\u0433\u043a\u043e! \u041d\u0443\u0436\u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0434\u043b\u044f \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 Chrome? \u041d\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430! \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0440\u0430\u0444\u0438\u043a \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e \u043b\u044e\u0431\u043e\u0439 \u0435\u0433\u043e \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0435.<\/p>\n<h3>Essayez par vous-m\u00eame<\/h3>\n<p>\nLire sur Istio, Kubernetes et OpenShift, c'est une chose, mais pourquoi ne pas tout toucher vous-m\u00eame ? L'\u00e9quipe <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/\">Red Hat Developer Program<\/a><\/noindex> a pr\u00e9par\u00e9 un guide d\u00e9taill\u00e9 (en anglais) qui vous aidera \u00e0 ma\u00eetriser ces technologies aussi rapidement que possible. Le guide est \u00e9galement 100% open source, il est donc disponible publiquement. Le fichier fonctionne sur macOS, Linux et Windows, et le code source est disponible en versions Java et node.js (d'autres versions arrivent bient\u00f4t). Ouvrez simplement le d\u00e9p\u00f4t git correspondant dans votre navigateur. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/redhat-developer-demos\/istio-tutorial\">Red Hat Developer Demo<\/a><\/noindex>.<\/p>\n<h3>Dans le prochain post : nous travaillons sur les probl\u00e8mes avec \u00e9l\u00e9gance<\/h3>\n<p>\nAujourd'hui, vous avez vu de quoi sont capables les r\u00e8gles de routage d'Istio. Maintenant, imaginez la m\u00eame chose, mais appliqu\u00e9e \u00e0 la gestion des erreurs. C'est exactement ce dont nous parlerons dans le prochain post.<br \/>\n<br \/>Source : <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/redhatrussia\/blog\/481182\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041c\u044b \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0441\u0435\u0440\u0438\u044e \u043f\u043e\u0441\u0442\u043e\u0432, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0439 \u0441\u0435\u0442\u043a\u0438 Istio Service Mesh \u0432 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0438 \u0441 Red Hat OpenShift \u0438 Kubernetes. \u0427\u0430\u0441\u0442\u044c \u043f\u0435\u0440\u0432\u0430\u044f, \u0441\u0435\u0433\u043e\u0434\u043d\u044f\u0448\u043d\u044f\u044f: \u041e\u0431\u044a\u044f\u0441\u043d\u0438\u043c \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044e sidecar-\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 Kubernetes \u0438 \u0441\u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u0443\u0435\u043c \u043b\u0435\u0439\u0442\u043c\u043e\u0442\u0438\u0432 \u044d\u0442\u043e\u0439 \u0441\u0435\u0440\u0438\u0438 \u043f\u043e\u0441\u0442\u043e\u0432: \u00ab\u0432\u0430\u043c \u043d\u0435 \u043d\u0430\u0434\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043c\u0435\u043d\u044f\u0442\u044c \u0432 \u0441\u0432\u043e\u0435\u043c \u043a\u043e\u0434\u0435\u00bb. \u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043c \u043e\u0441\u043d\u043e\u0432\u043e\u043f\u043e\u043b\u0430\u0433\u0430\u044e\u0449\u0443\u044e \u0432\u0435\u0449\u044c Istio \u2013 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438. \u041d\u0430 \u043d\u0438\u0445 \u0441\u0442\u0440\u043e\u044f\u0442\u0441\u044f [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-54208","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041c\u044b \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0441\u0435\u0440\u0438\u044e \u043f\u043e\u0441\u0442\u043e\u0432, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0439 \u0441\u0435\u0442\u043a\u0438 Istio Service Mesh \u0432 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0438 \u0441 Red Hat OpenShift \u0438 Kubernetes.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/seriya-postov-po-istio-service-mesh\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"fr_FR\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0421\u0435\u0440\u0438\u044f \u043f\u043e\u0441\u0442\u043e\u0432 \u043f\u043e Istio Service Mesh | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041c\u044b \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0441\u0435\u0440\u0438\u044e \u043f\u043e\u0441\u0442\u043e\u0432, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0439 \u0441\u0435\u0442\u043a\u0438 Istio Service Mesh \u0432 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0438 \u0441 Red Hat OpenShift \u0438 Kubernetes.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/seriya-postov-po-istio-service-mesh\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-12-19T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:02:12+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47S\u00e9rie de posts sur Istio Service Mesh | ProHoster","description":"Nous entamons une s\u00e9rie de posts o\u00f9 nous d\u00e9montrerons certaines des nombreuses fonctionnalit\u00e9s de la grille de services Istio Service Mesh en combinaison avec Red Hat OpenShift et Kubernetes.","canonical_url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/seriya-postov-po-istio-service-mesh","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"fr_FR","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0421\u0435\u0440\u0438\u044f \u043f\u043e\u0441\u0442\u043e\u0432 \u043f\u043e Istio Service Mesh | ProHoster","og:description":"\u041c\u044b \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0441\u0435\u0440\u0438\u044e \u043f\u043e\u0441\u0442\u043e\u0432, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0439 \u0441\u0435\u0442\u043a\u0438 Istio Service Mesh \u0432 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0438 \u0441 Red Hat OpenShift \u0438 Kubernetes.","og:url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/seriya-postov-po-istio-service-mesh","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-12-19T21:00:00+00:00","article:modified_time":"2020-02-18T11:02:12+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"54208","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-24 10:27:27","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 20:10:32","updated":"2026-01-24 10:27:27","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/54208","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/comments?post=54208"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/54208\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=54208"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=54208"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=54208"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}