{"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\/nl\/blog\/administrirovanie\/seriya-postov-po-istio-service-mesh","title":{"rendered":"Serie berichten over Istio Service Mesh","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>We beginnen een serie berichten waarin we enkele van de vele mogelijkheden van de Istio Service Mesh demonstreren in combinatie met Red Hat OpenShift en Kubernetes.<\/p>\n<p><img decoding=\"async\" alt=\"Serie berichten over Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/b7cc06e1451763db78fdf84764af4b69.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDeel \u00e9\u00e9n, vandaag: <\/p>\n<ul>\n<li>We leggen het concept van sidecar-containers in Kubernetes uit en formuleren het leitmotiv van deze serie berichten: <b>\u00abje hoeft niets aan je code te veranderen\u00bb<\/b>.<\/li>\n<li>We introduceren de fundamentele zaak van Istio \u2013 routeregels. Hierop zijn alle andere mogelijkheden van Istio gebaseerd, omdat deze regels het mogelijk maken om verkeer naar microservices te sturen met behulp van YAML-bestanden die extern aan de code zijn. Ook behandelen we het schema voor Canary Deployment. Nieuwjaarsbonus \u2013 10 interactieve sessies over Istio.<\/li>\n<\/ul>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nDeel twee, die binnenkort verschijnt, vertelt je: <\/p>\n<ul>\n<li>Hoe Istio Pool Ejection implementeert in combinatie met Circuit Breaker en demonstreert hoe Istio het mogelijk maakt om niet-functionele of slecht functionerende pods uit het load balancing-schema te verwijderen.<\/li>\n<li>Daarnaast bekijken we het onderwerp Circuit Breaker uit het eerste bericht om te zien hoe Istio hierbij kan worden ingezet. We laten zien hoe we verkeer kunnen routeren en netwerkfouten kunnen afhandelen zonder enige wijzigingen in de servicecode, met behulp van YAML-configuratiebestanden en terminalcommando's.<\/li>\n<\/ul>\n<p>\nDeel drie: <\/p>\n<ul>\n<li>Een verhaal over tracing en monitoring, die al zijn ingebouwd of gemakkelijk kunnen worden toegevoegd aan Istio. We laten zien hoe je tools zoals Prometheus, Jaeger en Grafana kunt gebruiken in combinatie met de schaalbaarheid van OpenShift, zodat je zonder veel moeite je microservices-architectuur kunt beheren.<\/li>\n<li>We gaan van monitoring en foutafhandeling naar het opzettelijk invoeren van fouten in het systeem. Met andere woorden, we leren hoe we fault injection kunnen doen zonder de broncode te wijzigen, wat heel belangrijk is vanuit het perspectief van testen \u2013 omdat als we de code hiervoor moeten wijzigen, we het risico lopen om extra fouten in te voeren.<\/li>\n<\/ul>\n<p>\nTen slotte, in het laatste bericht over de Istio Service Mesh:<\/p>\n<ul>\n<li>Gaan we naar de Donkere Kant. Sterker nog, we leren hoe we het Dark Launch-schema kunnen gebruiken, waarbij code wordt uitgerold en getest met echte productiegegevens, zonder de werking van het systeem te be\u00efnvloeden. Hier komt de vaardigheid van Istio om verkeer te splitsen goed van pas. De mogelijkheid om te testen met echte productiegegevens zonder invloed op de werking van het live systeem is de meest overtuigende manier om te valideren.<\/li>\n<li>Uitgaande van Dark Launch laten we zien hoe je het Canary Deployment-model kunt gebruiken om risico's te verkleinen en de implementatie van nieuwe code te vereenvoudigen. Canary Deployment zelf is niet nieuw, maar Istio maakt het mogelijk om dit schema te implementeren met slechts een paar eenvoudige YAML-bestanden.<\/li>\n<li>Tot slot laten we zien hoe je met Istio Egress toegang kunt geven tot services voor diegenen die zich buiten je clusters bevinden, zodat je de mogelijkheden van Istio kunt benutten tijdens het werken met het internet.<\/li>\n<\/ul>\n<p>\nDus, laten we beginnen \u2026<\/p>\n<p><b>De monitoring- en beheertools van Istio - alles wat je nodig hebt voor de co\u00f6rdinatie van microservices in een service mesh <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/service-mesh\/\">service mesh<\/a><\/noindex>.<\/b><\/p>\n<h3>Wat is de service mesh Istio<\/h3>\n<p>\nDe service mesh implementeert voor een groep diensten functies zoals verkeersmonitoring, toegangscontrole, ontdekking, beveiliging, fouttolerantie en andere nuttige zaken. Istio stelt je in staat om dit alles te doen zonder enige wijziging in de code van de diensten zelf. Wat is het geheim van deze magie? Istio koppelt een proxy in de vorm van een sidecar-container aan elke dienst, waarna al het verkeer naar deze dienst via de proxy gaat, die op basis van de ingestelde beleidsregels beslist hoe, wanneer en of dit verkeer de dienst \u00fcberhaupt bereikt. Istio biedt ook de mogelijkheid om geavanceerde DevOps-technieken te implementeren, zoals canary deployments, circuit breakers, foutinjectie en nog veel meer.<\/p>\n<h3>Hoe Istio werkt met containers en Kubernetes<\/h3>\n<p>\nDe service mesh Istio is een sidecar-implementatie van alles wat nodig is voor het cre\u00ebren en beheren van microservices: monitoring, tracing, circuit breakers, routering, laadbalancering, foutinjectie, herhalingen, time-outs, mirroren, toegangscontrole, snelheidsbeperkingen en nog veel meer. En hoewel er tegenwoordig veel bibliotheken zijn om deze functies rechtstreeks in de code te implementeren, kun je met Istio hetzelfde krijgen zonder iets in je code te veranderen.<\/p>\n<p>Volgens het sidecar-model draait Istio in een Linux-container die zich in dezelfde <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/kubernetes\/\">Kubernetes<\/a><\/noindex>-pod bevindt als de gecontroleerde dienst en injecteert (inject) en haalt (extract) functionaliteit en informatie op volgens de opgegeven configuratie. We benadrukken dat dit jouw eigen configuratie is, en deze leeft buiten jouw code. Hierdoor wordt de code veel eenvoudiger en korter.<\/p>\n<p>Wat ook belangrijk is, is dat de operationele component van microservices niets te maken heeft met de code zelf, wat betekent dat hun exploitatie zonder problemen aan IT-specialisten kan worden overgedragen. Inderdaad, waarom zou een ontwikkelaar verantwoordelijk moeten zijn voor circuit breakers en fault injection? Reageren \u2013 ja, maar ze behandelen en cre\u00ebren? Als we dit alles uit de code verwijderen, kunnen programmeurs zich volledig concentreren op de applicatiefuncties. Bovendien zal de code zelf korter en eenvoudiger worden.<\/p>\n<h3>Service Mesh<\/h3>\n<p>\nIstio, dat functies voor microservicesbeheer buiten hun code implementeert \u2013 dat is het concept van de Service Mesh. Met andere woorden, het is een geco\u00f6rdineerde groep van een of meerdere binaries die een netwerk van netwerkfuncties vormen.<\/p>\n<h3>Hoe Istio werkt met microservices<\/h3>\n<p>\nZo ziet de samenwerking van sidecar-containers eruit met <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/kubernetes\/\">Kubernetes<\/a><\/noindex> en <noindex><a rel=\"nofollow\" href=\"https:\/\/www.openshift.org\/minishift\/\">Minishift<\/a><\/noindex> vanuit vogelperspectief: je start een instantie van Minishift, maakt een project voor Istio aan (laten we het 'istio-system' noemen), installeert en start alle componenten die met Istio zijn verbonden. Vervolgens, terwijl je projecten en pods aanmaakt, voeg je configuratie-informatie toe aan je deployments, en beginnen je pods Istio te gebruiken. In vereenvoudigde vorm ziet het diagram eruit als volgt:<\/p>\n<p><img decoding=\"async\" alt=\"Serie berichten over Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/feb36ba35442307a8136c395ccae4fd2.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Nu kun je de instellingen van Istio aanpassen om bijvoorbeeld fault injection te organiseren, ondersteuning voor <noindex><a rel=\"nofollow\" href=\"https:\/\/istio.io\/blog\/2017\/0.1-canary.html\">Canary Deployment<\/a><\/noindex> of andere mogelijkheden van Istio \u2013 en dat allemaal zonder de code van de applicaties zelf aan te raken. Stel dat je al het webverkeer van gebruikers van je grootste klant (Foo Corporation) naar de nieuwe versie van de website wilt omleiden. Het enige wat je hoeft te doen is een Istio-routeringsregel aan te maken die zoekt naar @foocorporation.com in de gebruikers-ID en de overeenkomstige omleiding uitvoert. Voor alle andere gebruikers verandert er niets. En ondertussen kun je met een gerust hart de nieuwe versie van de website testen. En merk op dat je hiervoor helemaal geen ontwikkelaars hoeft in te schakelen.<\/p>\n<h3>En moet je daar veel voor betalen?<\/h3>\n<p>\nZeker niet. Istio werkt behoorlijk snel, het is geschreven in <noindex><a rel=\"nofollow\" href=\"https:\/\/golang.org\/\">Go<\/a><\/noindex> en cre\u00ebert een zeer kleine overhead. Bovendien wordt eventuele afname van de online prestaties gecompenseerd door de toename van de productiviteit van ontwikkelaars. Althans in theorie: vergeet niet dat de tijd van ontwikkelaars kostbaar is. Wat betreft de kosten voor de software, Istio is open-source, dus je kunt het gratis verkrijgen en gebruiken.<\/p>\n<h3>Leer zelf<\/h3>\n<p>\nHet team van Red Hat Developer Experience heeft een diepgaand praktisch <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/redhat-developer-demos\/istio-tutorial\">handboek<\/a><\/noindex> over Istio (in het Engels) ontwikkeld. Het werkt op Linux, MacOS en Windows, en de code is beschikbaar in versies voor Java en Node.js.<\/p>\n<h3>10 interactieve sessies over Istio<\/h3>\n<p><\/p>\n<h4>Blok 1 \u2013 Voor beginners<\/h4>\n<p>\n<b>Inleiding tot Istio<\/b><br \/>\n30 minuten <br \/>\nLeren over Service Mesh, we leren Istio te installeren in een Kubernetes-cluster op OpenShift.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/istio-introduction\/\">Starten<\/a><\/noindex> <\/p>\n<p><b>Microsystemen implementeren in Istio<\/b><br \/>\n30 minuten<br \/>\nWe gebruiken Istio om drie microsystemen met Spring Boot en Vert.x te implementeren.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/deploy-microservices\/\">Starten<\/a><\/noindex> <\/p>\n<h4>Blok 2 \u2013 Gemiddeld niveau <\/h4>\n<p>\n<b>Monitoring en tracing in Istio<\/b><br \/>\n60 minuten <br \/>\nWe verkennen de ingebouwde monitoringtools van Istio, configureerbare statistieken, en OpenTracing via Prometheus en Grafana.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/monitoring-tracing\/\">Starten<\/a><\/noindex> <\/p>\n<p><b>Eenvoudige routing in Istio<\/b><br \/>\n60 minuten <br \/>\nWe leren routing in Istio te beheren met eenvoudige regels.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/simple-route-rules\/\">Starten <\/a><\/noindex><\/p>\n<p><b>Geavanceerde routingregels<\/b><br \/>\n60 minuten <br \/>\nWe maken kennis met slimme routing in Istio, toegangsbeheer, load balancing en throttling.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/advanced-routerules\/\">Starten<\/a><\/noindex> <\/p>\n<h4>Blok 3 \u2013 Gevorderde gebruiker<\/h4>\n<p>\n<b>Fault Injection in Istio<\/b><br \/>\n60 minuten <br \/>\nWe bestuderen foutafhandelingsscenario's in gedistribueerde applicaties door HTTP-fouten en netwerklatency te cre\u00ebren en leren chaos engineering toe te passen voor herstellende omgevingen.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/fault-injection\/\">Starten<\/a><\/noindex> <\/p>\n<p><b>Circuit Breaker in Istio<\/b><br \/>\n30 minuten <br \/>\nWe installeren Siege voor stress-testing van websites en leren hoe we de veerkracht van de backend kunnen waarborgen met herhalingen, circuit breaker en pool ejection.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/circuit-breaker\/\">Starten<\/a><\/noindex> <\/p>\n<p><b>Egress en Istio<\/b><br \/>\n10 minuten <br \/>\nWe gebruiken Egress-routes om regels te cre\u00ebren voor de interactie van interne services met externe API's en services.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/egress\/\">Starten<\/a><\/noindex> <\/p>\n<p><b>Istio en Kiali<\/b><br \/>\n15 minuten <br \/>\nWe leren Kiali gebruiken voor een algemeen overzicht van de service mesh en het bestuderen van de stromen van verzoeken en gegevens.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/observe-kiali\/\">Starten<\/a><\/noindex> <\/p>\n<p>Mutual TLS in Istio<br \/>\n15 minuten <br \/>\nWe cre\u00ebren een Istio Gateway en VirtualService, en bestuderen vervolgens mutual TLS (mTLS) en de configuraties ervan.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/mtls\/\">Starten<\/a><\/noindex> <\/p>\n<h4>Blok 3.1 \u2013 Diepgaande: Istio Service Mesh voor microsystemen<\/h4>\n<p>\n<img decoding=\"async\" alt=\"Serie berichten over Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/1a2bb62b0bbd46fa9b42be1ccbfddfa6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nWaar gaat het boek over:<\/p>\n<ul>\n<li>Wat is een service mesh.<\/li>\n<li>Het systeem Istio en zijn rol in microservicesarchitecturen.<\/li>\n<li>Gebruik van Istio bij het aanpakken van de volgende uitdagingen:\n<ul>\n<li>Veerkracht;<\/li>\n<li>Routing;<\/li>\n<li>Chaos-testing;<\/li>\n<li>Beveiliging;<\/li>\n<li>Het verzamelen van telemetrie met behulp van tracing, metrics en 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\/\">Download het boek<\/a><\/noindex><\/p>\n<h3>Serie artikelen over service meshes en 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\/\">Routing regels van Istio: we sturen service-aanvragen naar de juiste plek<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/blog\/2018\/03\/20\/istio-circuit-breaker-pool-ejection\/\">Circuit Breakers in Istio: pool ejectie beheren<\/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 in Istio: wanneer een uitval een optie is<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/blog\/2018\/04\/03\/istio-tracing-monitoring\/\">Tracing en monitoring in Istio: waar alles naartoe gaat en hoe snel<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/blog\/2018\/04\/10\/istio-chaos-engineering\/\">Chaos-engineering in Istio: zoals het bedoeld was<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/blog\/2018\/04\/17\/istio-dark-launch-secret-services\/\">Dark Launch in Istio: geheime diensten<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/blog\/2018\/04\/24\/istio-smart-canary-launch\/\">Canary Deployment in Istio: vereenvoudiging van de invoering<\/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: de uitgang via een souvenirwinkel<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<h3>Probeer het zelf<\/h3>\n<p>\nDeze serie berichten heeft niet als doel een diepgaande duik in de wereld van Istio te bieden. We willen je gewoon kennis laten maken met het concept en misschien inspireren om zelf met Istio aan de slag te gaan. Dit kan volledig gratis, en Red Hat biedt alle benodigde tools om OpenShift, Kubernetes, Linux-containers en Istio te leren kennen, namelijk: <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\">ons gids voor Istio<\/a><\/noindex> en andere bronnen op onze <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/service-mesh\/\">minisite over Service Mesh<\/a><\/noindex>. Stel het niet uit, begin vandaag nog!<\/p>\n<h3>Routing regels van Istio: we sturen service-aanvragen naar de juiste plek<\/h3>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/products\/openshift\/overview\/\">OpenShift<\/a><\/noindex> en <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/kubernetes\/\">Kubernetes<\/a><\/noindex> maakt uitstekend mogelijk dat verzoeken naar <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/microservices\/\">microservices<\/a><\/noindex> worden gerouteerd naar de juiste pods. Dit is een van de doelen van Kubernetes \u2013 routing en load balancing. Maar wat als je fijnere en geavanceerdere routing nodig hebt? Bijvoorbeeld, om gelijktijdig twee versies van een microservice te gebruiken. Hoe kunnen de routingregels van Istio daarin helpen?<\/p>\n<p>Routingregels zijn regels die de routekeuze vaststellen. Ongeacht het niveau van systeemcomplexiteit blijft het algemene principe van deze regels eenvoudig: aanvragen worden gerouteerd op basis van bepaalde parameters en de waarden van HTTP-headers. <br \/>\nLaten we eens kijken naar voorbeelden: <\/p>\n<h3>Kubernetes standaard: triviale '50-50'<\/h3>\n<p>\nIn ons voorbeeld laten we zien hoe je twee versies van een microservice tegelijkertijd in OpenShift kunt gebruiken, noemen we ze v1 en v2. Elke versie draait in zijn eigen Kubernetes-pod, en standaard is hier een gelijkmatig gebalanceerde ronde-robin routing actief. Elke pod ontvangt zijn deel van de aanvragen op basis van het aantal instanties van zijn microservice, met andere woorden, replicas. Istio maakt het mogelijk om deze balans handmatig te wijzigen.<\/p>\n<p>Stel dat we twee versies van onze aanbevelingsdienst hebben uitgerold op OpenShift, recommendation-v1 en recommendation-v2.<br \/>\nIn fig. 1, it can be seen that when each service is presented as a single instance, requests alternate evenly between them: 1-2-1-2-\u2026 This is how Kubernetes routing works by default:<\/p>\n<p><img decoding=\"async\" alt=\"Serie berichten over Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/93b00e4845ba930ca4d718b59629377e.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Weighted distribution between versions<\/h3>\n<p>\nIn fig. 2 is shown what will happen if the number of replicas of service v2 is increased from one to two (this is done with the command oc scale \u2014replicas=2 deployment\/recommendation-v2). As we can see, requests between v1 and v2 are now divided in a \"one to three\" ratio: 1-2-2-1-2-2-\u2026:<\/p>\n<p><img decoding=\"async\" alt=\"Serie berichten over Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/a432b1cea0e297c99b041137d33fc107.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Ignoring version with Istio<\/h3>\n<p>\nIstio allows us to easily change the distribution of requests in the way we need. For example, we can send all traffic only to recommendation-v1 using the following Istio yaml file:<\/p>\n<p><img decoding=\"async\" alt=\"Serie berichten over Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/db4190d495fb6dcc7c50cb8d28a7ef58.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>It is important to note that pods are selected according to labels. In our example, the label v1 is used. The parameter 'weight: 100' means that 100% of the traffic will be routed to all pods of the service that have the label v1.<\/p>\n<h3>Directive distribution between versions (Canary Deployment)<\/h3>\n<p>\nNext, using the weight parameter, we can direct traffic to both pods, ignoring the number of instances of microservices running in each. For example, here we directive route 90% of the traffic to v1 and 10% to v2:<\/p>\n<p><img decoding=\"async\" alt=\"Serie berichten over Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/1a28e76ea7d8306fbefecefaad34c931.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Separate routing for mobile users<\/h3>\n<p>\nIn conclusion, we will demonstrate how to forcibly route mobile user traffic to service v2 while routing all others to v1. For this, we analyze the user-agent value in the request header using regular expressions:<\/p>\n<p><img decoding=\"async\" alt=\"Serie berichten over Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/efab7f92a1bcfc7e23ae279de57c738e.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Now it's your turn<\/h3>\n<p>\nAn example with regular expressions for analyzing headers should motivate you to search for your own ways to apply Istio routing rules. Moreover, the possibilities here are quite extensive, since header values can be formed in the source code of applications.<\/p>\n<h3>And remember, it's Ops, not Dev<\/h3>\n<p>\nEverything we've shown in the examples above can be done without making the slightest changes to the source code, except in cases where special request headers need to be formed. Istio will be useful for developers, who can apply it during the testing phase, as well as for IT operations specialists, who will find it very helpful in production.<\/p>\n<p>So let's repeat the leitmotif of this series of posts: <b>you don't need to change anything in your code<\/b>Je hoeft geen nieuwe afbeeldingen te verzamelen of nieuwe containers te starten. Dit wordt allemaal buiten de code gerealiseerd.<\/p>\n<h3>Laat je verbeelding de vrije loop<\/h3>\n<p>\nStel je voor welke mogelijkheden de analyse van koppen met behulp van reguliere expressies opent. Wil je jouw grootste klant doorverwijzen naar een speciale versie van zijn <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>Probeer het zelf<\/h3>\n<p>\nLezen over Istio, Kubernetes en OpenShift is \u00e9\u00e9n ding, maar waarom zou je het niet zelf uitproberen? Het team van <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/\">Red Hat Developer Program<\/a><\/noindex> heeft een gedetailleerde handleiding (in het Engels) voorbereid die je helpt deze technologie\u00ebn zo snel mogelijk te beheersen. De handleiding is ook 100% open source, dus deze is openbaar toegankelijk. Het bestand werkt op macOS, Linux en Windows, en de broncode is beschikbaar in Java en node.js (versies in andere talen komen binnenkort). Open simpelweg de bijbehorende git-repository in je browser <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/redhat-developer-demos\/istio-tutorial\">Red Hat Developer Demo<\/a><\/noindex>.<\/p>\n<h3>In de volgende post: we pakken de problemen mooi aan<\/h3>\n<p>\nVandaag heb je gezien wat de routeringsregels van Istio kunnen doen. En stel je nu hetzelfde voor, maar dan toepasbaar op foutafhandeling. Dit is waar we het in de volgende post over zullen hebben.<br \/>\n<br \/>Bron: <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.3 - 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\/nl\/blog\/administrirovanie\/seriya-postov-po-istio-service-mesh\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"nl_NL\" \/>\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\/nl\/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\udd47Serie posts over Istio Service Mesh | ProHoster","description":"We beginnen een serie berichten waarin we enkele van de vele mogelijkheden van de Istio Service Mesh demonstreren in combinatie met Red Hat OpenShift en Kubernetes.","canonical_url":"https:\/\/prohoster.info\/nl\/blog\/administrirovanie\/seriya-postov-po-istio-service-mesh","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nl_NL","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\/nl\/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\/nl\/wp-json\/wp\/v2\/posts\/54208","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/comments?post=54208"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/54208\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media?parent=54208"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/categories?post=54208"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/tags?post=54208"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}