{"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\/da\/blog\/administrirovanie\/seriya-postov-po-istio-service-mesh","title":{"rendered":"Serie af indl\u00e6g om Istio Service Mesh","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Vi begynder en r\u00e6kke indl\u00e6g, hvor vi vil demonstrere nogle af de mange muligheder ved Istio Service Mesh i kombination med Red Hat OpenShift og Kubernetes.<\/p>\n<p><img decoding=\"async\" alt=\"Serie af indl\u00e6g om Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/b7cc06e1451763db78fdf84764af4b69.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDel et, dagens: <\/p>\n<ul>\n<li>Vi forklarer konceptet med sidecar-containere i Kubernetes og formulerer temaet for denne serie af indl\u00e6g: <b>\u00abdu beh\u00f8ver ikke at \u00e6ndre noget i din kode\u00bb<\/b>.<\/li>\n<li>Lad os pr\u00e6sentere den grundl\u00e6ggende ting ved Istio \u2013 routingreglerne. Alle andre muligheder ved Istio bygger p\u00e5 dem, da det netop er reglerne, der g\u00f8r det muligt at styre trafikken til mikrotjenester ved hj\u00e6lp af YAML-filer, der er eksterne i forhold til koden. Vi ser ogs\u00e5 p\u00e5 Canary Deployment skemaet. Nyt\u00e5rs bonus \u2013 10 interaktive lektioner om Istio.<\/li>\n<\/ul>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nDel to, som snart kommer ud, vil fort\u00e6lle dig: <\/p>\n<ul>\n<li>Hvordan Istio implementerer Pool Ejection i kombination med Circuit Breaker og demonstrerer, hvordan Istio kan fjerne en ikke fungerende eller d\u00e5rligt fungerende pod fra load balancing skemaet.<\/li>\n<li>Vi vil ogs\u00e5 unders\u00f8ge emnet Circuit Breaker fra det f\u00f8rste indl\u00e6g med hensyn til, hvordan man kan anvende Istio her. Vi viser, hvordan man kan styre trafikken og h\u00e5ndtere netv\u00e6rksfejl uden nogen \u00e6ndringer i servicekoden ved hj\u00e6lp af YAML-konfigurationsfiler og terminalkommandoer.<\/li>\n<\/ul>\n<p>\nDel tre: <\/p>\n<ul>\n<li>En fort\u00e6lling om sporing og overv\u00e5gning, der allerede er indbygget eller let kan tilf\u00f8jes i Istio. Vi viser, hvordan man bruger v\u00e6rkt\u00f8jer som Prometheus, Jaeger og Grafana i kombination med OpenShift-skalering for at styre mikrotjenestearkitekturen uden besv\u00e6r.<\/li>\n<li>Vi g\u00e5r fra overv\u00e5gning og fejlh\u00e5ndtering til at indf\u00f8re fejl i systemet med vilje. Med andre ord, vi l\u00e6rer at udf\u00f8re fejlindspr\u00f8jtning uden at \u00e6ndre kildekoden, hvilket er meget vigtigt i forhold til testning \u2013 da der er risiko for at introducere yderligere fejl, hvis man \u00e6ndrer selve koden.<\/li>\n<\/ul>\n<p>\nEndelig, i det sidste indl\u00e6g om Istio Service Mesh:<\/p>\n<ul>\n<li>Vi bev\u00e6ger os til Den M\u00f8rke Side. Mere pr\u00e6cist, vi vil l\u00e6re at bruge Dark Launch-schemaet, hvor koden implementeres og testes direkte p\u00e5 produktionsdata, men ikke p\u00e5virker systemets drift. Her kommer Istios evne til at dele trafik godt med. Muligheden for at teste p\u00e5 rigtige produktionsdata uden at p\u00e5virke driften af produktsystemet er den mest overbevisende m\u00e5de at verificere p\u00e5.<\/li>\n<li>Med udgangspunkt i Dark Launch vil vi vise, hvordan man bruger Canary Deployment-modellen til at reducere risici og forenkle implementeringen af ny kode. Canary Deployment i sig selv er ikke en ny id\u00e9, men Istio g\u00f8r det muligt at implementere denne tilgang blot ved hj\u00e6lp af enkle YAML-filer.<\/li>\n<li>Afslutningsvis vil vi vise, hvordan man med Istio Egress kan give adgang til tjenester til dem, der befinder sig uden for dine klynger, for at udnytte Istios muligheder i arbejdet med internettet.<\/li>\n<\/ul>\n<p>\nS\u00e5 lad os komme i gang...<\/p>\n<p><b>Istios overv\u00e5gnings- og administrationsv\u00e6rkt\u00f8jer \u2013 alt hvad der er n\u00f8dvendigt for at koordinere mikrotjenester i servicenetv\u00e6rket <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/service-mesh\/\">service mesh<\/a><\/noindex>.<\/b><\/p>\n<h3>Hvad er Istio servicenetv\u00e6rk<\/h3>\n<p>\nServicenetv\u00e6rket tilbyder en gruppe tjenester funktioner som trafikoverv\u00e5gning, adgangskontrol, opdagelse, sikkerhed, fejltolerance og andre nyttige funktioner. Istio g\u00f8r det muligt at g\u00f8re alt dette uden nogen \u00e6ndringer i selve tjenesternes kode. Hvad er hemmeligheden bag magien? Istio tilf\u00f8jer sin egen proxy i form af en sidecar-container til hver tjeneste, hvorefter al trafik til den p\u00e5g\u00e6ldende tjeneste g\u00e5r gennem proxyen, som i henhold til de angivne politikker bestemmer, hvordan, hvorn\u00e5r og om denne trafik overhovedet skal n\u00e5 tjenesten. Istio giver ogs\u00e5 mulighed for at implementere avancerede DevOps-teknikker som canary deployments, circuit breakers, fault injection og mange flere.<\/p>\n<h3>Hvordan Istio arbejder med containere og Kubernetes<\/h3>\n<p>\nIstio-servicenetv\u00e6rket er en sidecar-implementering af alt, hvad der kr\u00e6ves for at oprette og administrere mikrotjenester: overv\u00e5gning, sporing, circuit breakers, routing, belastningsbalancering, fault injection, gentagelser, timeouts, spejling, adgangskontrol, hastighedsbegr\u00e6nsning og meget mere. Og selvom der i dag findes mange biblioteker til at implementere disse funktioner direkte i koden, kan du med Istio f\u00e5 alt det samme uden at \u00e6ndre noget i din kode.<\/p>\n<p>I henhold til sidecar-modellen k\u00f8rer Istio i en Linux-container, der er placeret i samme <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/kubernetes\/\">Kubernetes<\/a><\/noindex>-pod som den kontrollerede tjeneste og injicerer (inject) og udtr\u00e6kker (extract) funktionalitet og information i henhold til den angivne konfiguration. Det skal understreges, at det er din egen konfiguration, og den lever uden for din kode. Derfor bliver koden meget enklere og kortere.<\/p>\n<p>Det er ogs\u00e5 vigtigt, at den operationelle del af mikrotjenesterne ikke er knyttet til selve koden, hvilket betyder, at deres drift kan overdrages til it-specialister. Men hvorfor skal udvikleren s\u00e5 v\u00e6re ansvarlig for circuit breakers og fault injection? At reagere \u2013 ja, men at h\u00e5ndtere dem og skabe dem? Hvis man fjerner alt dette fra koden, kan programm\u00f8rer fokusere helt p\u00e5 den applikationsspecifikke funktionalitet. Koden vil ogs\u00e5 blive kortere og simplere.<\/p>\n<h3>Service mesh<\/h3>\n<p>\nIstio, der implementerer funktioner til at administrere mikrotjenester uden for deres kode \u2013 er netop konceptet service mesh. Med andre ord, det er en koordineret gruppe af en eller flere bin\u00e6re filer, der danner et netv\u00e6rk af netv\u00e6rksfunktioner.<\/p>\n<h3>Hvordan Istio arbejder med mikrotjenester<\/h3>\n<p>\nS\u00e5dan fungerer sidecar-containere i forbindelse med <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/kubernetes\/\">Kubernetes<\/a><\/noindex> og <noindex><a rel=\"nofollow\" href=\"https:\/\/www.openshift.org\/minishift\/\">Minishift<\/a><\/noindex> set fra fugleperspektiv: du starter en instans af Minishift, opretter et projekt for Istio (lad os kalde det \"istio-system\"), installer og starter alle relaterede komponenter. Derefter, som du opretter projekter og pods, tilf\u00f8jer du konfigurationsoplysninger til dine deployment, og dine pods begynder at bruge Istio. En forenklet diagram ser s\u00e5ledes ud:<\/p>\n<p><img decoding=\"async\" alt=\"Serie af indl\u00e6g om Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/feb36ba35442307a8136c395ccae4fd2.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Nu kan du \u00e6ndre Istios indstillinger for eksempel for at organisere fault injection, underst\u00f8ttelse <noindex><a rel=\"nofollow\" href=\"https:\/\/istio.io\/blog\/2017\/0.1-canary.html\">Canary Deployment<\/a><\/noindex> eller andre muligheder i Istio \u2013 og alt dette uden at ber\u00f8re selve applikationskoden. Antag, at du vil omdirigere al webtrafik fra brugerne af din st\u00f8rste kunde (Foo Corporation) til den nye version af sitet. For at g\u00f8re dette skal du blot oprette en Istio-routingregel, der skal finde @foocorporation.com i brugerens ID og udf\u00f8re den relevante omdirigering. For alle andre brugere vil der ikke \u00e6ndre sig noget. Og du kan samtidigt teste den nye version af sitet. Og bem\u00e6rk, at dette slet ikke kr\u00e6ver involvering af udviklerne.<\/p>\n<h3>Og vil det koste meget?<\/h3>\n<p>\nSlet ikke. Istio fungerer ret hurtigt, det er skrevet i <noindex><a rel=\"nofollow\" href=\"https:\/\/golang.org\/\">Go<\/a><\/noindex> og skaber en meget lille overhead. Desuden kompenseres det mulige tab i online-ydeevne af produktivitetstilv\u00e6ksten hos udviklerne. I det mindste i teorien: glem ikke, at udviklernes tid koster penge. Hvad ang\u00e5r udgifter til software, er Istio en open source-l\u00f8sning, s\u00e5 det kan hentes og bruges gratis.<\/p>\n<h3>L\u00e6r selv<\/h3>\n<p>\nRed Hat Developer Experience Team har udviklet en dybdeg\u00e5ende praktisk <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/redhat-developer-demos\/istio-tutorial\">vejledning<\/a><\/noindex> guide til Istio (p\u00e5 engelsk). Den fungerer p\u00e5 Linux, MacOS og Windows, og koden findes i versioner p\u00e5 Java og Node.js.<\/p>\n<h3>10 interaktive lektioner om Istio<\/h3>\n<p><\/p>\n<h4>Blok 1 \u2014 For begyndere<\/h4>\n<p>\n<b>Introduktion til Istio<\/b><br \/>\n30 minutter <br \/>\nVi bliver bekendt med Service Mesh, l\u00e6rer at installere Istio i et Kubernetes-klynge p\u00e5 OpenShift.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/istio-introduction\/\">Start<\/a><\/noindex> <\/p>\n<p><b>Udrulning af mikrotjenester i Istio<\/b><br \/>\n30 minutter<br \/>\nVi bruger Istio til at udrulle tre mikrotjenester med Spring Boot og Vert.x.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/deploy-microservices\/\">Start<\/a><\/noindex> <\/p>\n<h4>Blok 2 \u2013 Mellemniveau <\/h4>\n<p>\n<b>Overv\u00e5gning og sporing i Istio<\/b><br \/>\n60 minutter <br \/>\nVi studerer de indbyggede overv\u00e5gningsv\u00e6rkt\u00f8jer i Istio, konfigurerbare metrics samt OpenTracing via Prometheus og Grafana.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/monitoring-tracing\/\">Start<\/a><\/noindex> <\/p>\n<p><b>Enkel routing i Istio<\/b><br \/>\n60 minutter <br \/>\nVi l\u00e6rer at styre routing i Istio med enkle regler.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/simple-route-rules\/\">Start <\/a><\/noindex><\/p>\n<p><b>Avancerede routingregler<\/b><br \/>\n60 minutter <br \/>\nVi bliver bekendt med smart routing i Istio, adgangskontrol, load balancing og hastighedsbegr\u00e6nsning.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/advanced-routerules\/\">Start<\/a><\/noindex> <\/p>\n<h4>Blok 3 \u2013 Erfarne brugere<\/h4>\n<p>\n<b>Fejlindspr\u00f8jtning i Istio<\/b><br \/>\n60 minutter <br \/>\nVi studerer scenarier til fejlbehandling i distribuerede applikationer, skaber HTTP-fejl og netv\u00e6rksforsinkelser, l\u00e6rer at anvende chaos engineering til at genskabe milj\u00f8et.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/fault-injection\/\">Start<\/a><\/noindex> <\/p>\n<p><b>Circuit Breaker i Istio<\/b><br \/>\n30 minutter <br \/>\nVi installerer Siege til stresstest af hjemmesider og l\u00e6rer at sikre backendens fejltolerance ved hj\u00e6lp af retries, circuit breakers og pool-ejection.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/circuit-breaker\/\">Start<\/a><\/noindex> <\/p>\n<p><b>Egress og Istio<\/b><br \/>\n10 minutter <br \/>\nVi bruger Egress-ruter til at oprette regler for samspillet mellem interne tjenester og eksterne API'er og tjenester.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/egress\/\">Start<\/a><\/noindex> <\/p>\n<p><b>Istio og Kiali<\/b><br \/>\n15 minutter <br \/>\nVi l\u00e6rer at bruge Kiali til at f\u00e5 et overblik over service-mesh og unders\u00f8ge foresp\u00f8rgsels- og datastr\u00f8mme.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/observe-kiali\/\">Start<\/a><\/noindex> <\/p>\n<p>Mutual TLS i Istio<br \/>\n15 minutter <br \/>\nVi opretter Istio Gateway og VirtualService, hvorefter vi g\u00e5r i dybden med mutual TLS (mTLS) og dets indstillinger.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/mtls\/\">Start<\/a><\/noindex> <\/p>\n<h4>Blok 3.1 \u2014 Dybdeg\u00e5ende: Istio Service Mesh til mikrotjenester<\/h4>\n<p>\n<img decoding=\"async\" alt=\"Serie af indl\u00e6g om Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/1a2bb62b0bbd46fa9b42be1ccbfddfa6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nHvad bogen handler om:<\/p>\n<ul>\n<li>Hvad er en service mesh.<\/li>\n<li>Systemet Istio og dets rolle i mikrotjenestearkitekturen.<\/li>\n<li>Brug af Istio til at l\u00f8se f\u00f8lgende opgaver:\n<ul>\n<li>Fejltolerance;<\/li>\n<li>Routing;<\/li>\n<li>Chaos-testning;<\/li>\n<li>Sikkerhed;<\/li>\n<li>Indsamling af telemetri ved hj\u00e6lp af sporing, metrics og 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 the book<\/a><\/noindex><\/p>\n<h3>Series of articles on service meshes and 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\/\">Istio Routing Rules: directing service requests where needed<\/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: handling Pool Ejection<\/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: when failure is an option<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/blog\/2018\/04\/03\/istio-tracing-monitoring\/\">Tracing and monitoring in Istio: where everything is heading and how fast<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/blog\/2018\/04\/10\/istio-chaos-engineering\/\">Chaos engineering i Istio: det var hele id\u00e9en.<\/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 i Istio: hemmelige tjenester<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/blog\/2018\/04\/24\/istio-smart-canary-launch\/\">Canary Deployment i Istio: forenkler implementeringen<\/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: udgangen gennem gavebutikken<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<h3>Pr\u00f8v selv<\/h3>\n<p>\nThis series of posts does not aim to provide a deep dive into the world of Istio. We simply want to introduce you to the concept itself and maybe inspire you to try Istio. You can do this completely for free, and Red Hat provides all the necessary tools to start exploring OpenShift, Kubernetes, Linux containers, and Istio, namely: <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\">our guide to Istio<\/a><\/noindex> and other resources on our <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/service-mesh\/\">micro-site for Service Mesh<\/a><\/noindex>. Don't delay, start today!<\/p>\n<h3>Istio Routing Rules: directing service requests where needed<\/h3>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/products\/openshift\/overview\/\">Mandag den 1. juni 12:00-14:00<\/a><\/noindex> og <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/kubernetes\/\">Kubernetes<\/a><\/noindex> are great at ensuring requests to <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/microservices\/\">microservices<\/a><\/noindex> are routed to the right pods. This is one of the goals of Kubernetes \u2013 routing and load balancing. What if you need more nuanced and sophisticated routing? For instance, to use two versions of a microservice simultaneously? How will Istio Route Rules help here?<\/p>\n<p>Routing rules are the rules that determine the route selection. Regardless of the complexity level of the system, the general principle of how these rules work remains simple: requests are routed based on certain parameters and HTTP header values. <br \/>\nLet's look at some examples: <\/p>\n<h3>Kubernetes default: trivial '50-50'<\/h3>\n<p>\nIn our example, we will show how to simultaneously use two versions of a microservice in OpenShift, which we will call v1 and v2. Each version runs in its own Kubernetes pod, and by default, there is evenly balanced round-robin routing in place. Each pod receives its share of requests based on the number of its microservice instances, in other words, replicas. Istio allows you to manually change this balance.<\/p>\n<p>Let's say we deployed two versions of our recommendation service on OpenShift, recommendation-v1 and recommendation-v2.<br \/>\nIn Fig. 1, you can see that when each service is represented by 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 af indl\u00e6g om 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>\nI fig. 2 vises, hvad der vil ske, hvis antallet af replikaer af v2-tjenesten \u00f8ges fra \u00e9n til to (dette g\u00f8res med kommandoen oc scale \u2014replicas=2 deployment\/recommendation-v2). Som vi kan se, deles anmodningerne mellem v1 og v2 nu i forholdet \"\u00e9n til tre\": 1-2-2-1-2-2-\u2026:<\/p>\n<p><img decoding=\"async\" alt=\"Serie af indl\u00e6g om Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/a432b1cea0e297c99b041137d33fc107.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Ignorer versionen med Istio<\/h3>\n<p>\nIstio g\u00f8r det nemt at \u00e6ndre fordelingen af anmodninger, som vi \u00f8nsker. For eksempel kan vi sende al trafik kun til recommendation-v1 ved hj\u00e6lp af f\u00f8lgende yaml-fil fra Istio:<\/p>\n<p><img decoding=\"async\" alt=\"Serie af indl\u00e6g om Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/db4190d495fb6dcc7c50cb8d28a7ef58.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Her skal man v\u00e6re opm\u00e6rksom p\u00e5 f\u00f8lgende: pod\u2019erne v\u00e6lges i henhold til etiketter. I vores eksempel bruges etiketten v1. Parameteren \"weight: 100\" betyder, at 100% af trafikken vil blive dirigeret til alle pod\u2019erne i tjenesten, der har etiketten v1.<\/p>\n<h3>Direktiv fordeling mellem versioner (Canary Deployment)<\/h3>\n<p>\nDerudover, ved at bruge parameteren weight, kan vi dirigere trafik til begge pod\u2019er, uanset antallet af mikrotjenesteinstanser, der k\u00f8rer i hver af dem. For eksempel her dirigerer vi 90% af trafikken til v1 og 10% til v2:<\/p>\n<p><img decoding=\"async\" alt=\"Serie af indl\u00e6g om Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/1a28e76ea7d8306fbefecefaad34c931.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Separat routing for mobile brugere<\/h3>\n<p>\nAfslutningsvis vil vi vise, hvordan man tvinger trafik fra mobile brugere til tjenesten v2, mens alle andre sendes til v1. For dette form\u00e5l analyserer vi v\u00e6rdien af user-agent i anmodningsheaderen ved hj\u00e6lp af regul\u00e6re udtryk:<\/p>\n<p><img decoding=\"async\" alt=\"Serie af indl\u00e6g om Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/efab7f92a1bcfc7e23ae279de57c738e.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Nu er det din tur<\/h3>\n<p>\nEksemplet med regul\u00e6re udtryk til analyse af headers skal motivere dig til at finde dine egne m\u00e5der at anvende routingreglerne fra Istio. Is\u00e6r fordi mulighederne her er meget omfattende, da header-v\u00e6rdierne kan formes i applikationskoden.<\/p>\n<h3>Og husk, at Ops, ikke Dev<\/h3>\n<p>\nAlt, hvad vi har vist i ovenst\u00e5ende eksempler, g\u00f8res uden de mindste \u00e6ndringer i kildekoden, bortset fra de tilf\u00e6lde, hvor det er n\u00f8dvendigt at danne s\u00e6rlige anmodningsheaders. Istio vil v\u00e6re nyttigt for udviklere, der for eksempel kan anvende det i testfase, s\u00e5vel som for IT-systemdriftere, der vil have stor hj\u00e6lp til produktion.<\/p>\n<p>S\u00e5 lad os gentage hovedpointen i denne serie indl\u00e6g: <b>du skal ikke \u00e6ndre noget i din kode<\/b>. Der er ikke behov for at samle nye billeder eller starte nye containere. Alt dette implementeres uden for koden.<\/p>\n<h3>S\u00e6t din fantasi i gang<\/h3>\n<p>\nForestill dig de perspektiver, som analyse af overskrifter med regul\u00e6re udtryk \u00e5bner. Vil du omdirigere din st\u00f8rste kunde til en specialversion af dine <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/microservices\/\">mikrotjenester<\/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>Pr\u00f8v selv<\/h3>\n<p>\nAt l\u00e6se om Istio, Kubernetes og OpenShift er \u00e9n ting, men hvorfor ikke r\u00f8re ved det hele med h\u00e6nderne? Teamet <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/\">Red Hat Developer Program<\/a><\/noindex> har forberedt en detaljeret vejledning (p\u00e5 engelsk), der hj\u00e6lper dig med hurtigt at mestre disse teknologier. Vejledningen er ogs\u00e5 100% open source, s\u00e5 den er tilg\u00e6ngelig offentligt. Filen fungerer p\u00e5 macOS, Linux og Windows, og kildekoden findes i versioner p\u00e5 Java og node.js (snart vil der ogs\u00e5 v\u00e6re versioner p\u00e5 andre sprog). Bare \u00e5bn det relevante git-repositorium i din browser <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/redhat-developer-demos\/istio-tutorial\">Red Hat Developer Demo<\/a><\/noindex>.<\/p>\n<h3>I det n\u00e6ste indl\u00e6g: vi l\u00f8ser problemer smukt<\/h3>\n<p>\nI dag har du set, hvad Istio routing-regler kan. Forestil dig nu det samme, men anvendt p\u00e5 fejlh\u00e5ndtering. Det er netop, hvad vi vil tale om i det n\u00e6ste indl\u00e6g.<br \/>\n<br \/>Kilde: <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\/da\/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=\"da_DK\" \/>\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\/da\/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 af indl\u00e6g om Istio Service Mesh | ProHoster","description":"Vi begynder en r\u00e6kke indl\u00e6g, hvor vi vil demonstrere nogle af de mange muligheder ved Istio Service Mesh i kombination med Red Hat OpenShift og Kubernetes.","canonical_url":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/seriya-postov-po-istio-service-mesh","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"da_DK","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\/da\/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\/da\/wp-json\/wp\/v2\/posts\/54208","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/comments?post=54208"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/54208\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=54208"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=54208"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=54208"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}