'n Reeks plasings op Istio Service Mesh

Ons begin 'n reeks plasings wat sommige van die vele kenmerke van die Istio Service Mesh in kombinasie met Red Hat OpenShift en Kubernetes demonstreer.

'n Reeks plasings op Istio Service Mesh

Deel een vandag:

  • Kom ons verduidelik die konsep van Kubernetes-syspanhouers en formuleer die leitmotief van hierdie reeks plasings: "jy hoef niks in jou kode te verander nie".
  • Kom ons stel ons die fundamentele ding van Istio voor - roetereëls. Alle ander Istio-kenmerke is daarop gebou, aangesien dit die reëls is wat jou toelaat om verkeer na mikrodienste te lei deur YAML-lêers buite die dienskode te gebruik. Ons oorweeg ook die Kanariese Ontplooiing-ontplooiingskema. Nuwejaarsbonus - 10 Interaktiewe Istio-lesse


Deel twee, wat binnekort uitkom, sal jou vertel:

  • Hoe Istio Pool Ejection implementeer in samewerking met Circuit Breaker en demonstreer hoe Istio jou toelaat om 'n ledige of swak presterende peul uit die balansskema te verwyder.
  • Ons sal ook kyk na die Circuit Breaker-onderwerp vanaf die eerste pos oor hoe Istio hier gebruik kan word. Ons sal wys hoe om verkeer te stuur en netwerkfoute te hanteer sonder die geringste verandering in die dienskode deur YAML-konfigurasielêers en terminale opdragte te gebruik.

Deel drie:

  • 'n Storie oor opsporing en monitering wat reeds ingebou is of maklik by Istio gevoeg is. Ons sal jou wys hoe om gereedskap soos Prometheus, Jaeger en Grafana te gebruik in samewerking met OpenShift-skaal om jou mikrodiensargitektuur moeiteloos te bestuur.
  • Ons beweeg van monitering en hantering van foute na om dit doelbewus in die stelsel in te voer. Met ander woorde, ons leer om foutinspuiting te doen sonder om die bronkode te verander, wat baie belangrik is vanuit die oogpunt van toetsing - want as jy die kode self hiervoor verander, dan is daar 'n risiko om bykomende foute in te voer.

Ten slotte, in die finale pos op Istio Service Mesh:

  • Kom ons gaan na die Donker Kant. Meer presies, ons sal leer om die Dark Launch-skema te gebruik wanneer die kode direk op produksiedata ontplooi en getoets word, maar op geen manier die werking van die stelsel beïnvloed nie. Dit is hier waar Istio se vermoë om verkeer te verdeel handig te pas kom. En die vermoë om toetse op lewendige produksiedata uit te voer sonder om die werking van die gevegstelsel op enige manier te beïnvloed, is die mees oortuigende manier om na te gaan.
  • Gebou op Dark Launch, sal ons jou wys hoe om die Canary-ontplooiingsmodel te gebruik om risiko te verminder en dit makliker te maak om nuwe kode te ontplooi. Canary Deployment self is nie nuut nie, maar Istio laat jou toe om hierdie skema te implementeer met net eenvoudige YAML-lêers.
  • Ten slotte sal ons wys hoe om Istio Egress te gebruik om toegang tot dienste te gee aan diegene wat buite jou groepe is om die vermoëns van Istio te gebruik wanneer hulle met die internet werk.

So, ons gaan...

Istio monitering en bestuur gereedskapstel - alles wat jy nodig het om mikrodienste in 'n diensnetwerk te koördineer diensmaas.

Wat is Istio Service Mesh

Die diensnetwerk implementeer vir 'n groep dienste soos funksies soos verkeersmonitering, toegangsbeheer, ontdekking, sekuriteit, fouttoleransie en ander nuttige dinge. Istio laat jou toe om dit alles te doen sonder die geringste verandering in die kode van die dienste self. Wat is die geheim van magie? Istio heg sy eie gevolmagtigde aan elke diens in die vorm van 'n syspanhouer (syspan is 'n motorfietssyspan), waarna alle verkeer na hierdie diens deur die gevolmagtigde gaan, wat, gelei deur die gespesifiseerde beleide, besluit hoe, wanneer en of dit verkeer behoort enigsins die diens te bereik. Istio gee jou ook die vermoë om gevorderde DevOps-tegnieke te implementeer soos kanarie-ontplooiings, stroombrekers, foutinspuiting, en meer.

Hoe Istio met houers en Kubernetes werk

Die Istio-diensnetwerk is 'n syspan-implementering van alles wat jy nodig het om mikrodienste te skep en te bestuur: monitering, opsporing, stroombrekers, roetering, lasbalansering, foutinspuiting, herproberings, uitteltyd, weerspieëling, toegangsbeheer, koersbeperking, en meer. ander. En hoewel daar vandag tonne biblioteke is om hierdie kenmerke direk in kode te implementeer, kan jy met Istio presies dieselfde ding kry sonder om iets in jou kode te verander.

Volgens die syspanmodel loop Istio in 'n Linux-houer, wat in een geleë is Kubernetes-pod met 'n beheerde diens en implemente (inspuit) en onttrek (onttrek) funksionaliteit en inligting volgens die gegewe konfigurasie. Ons beklemtoon dat dit jou eie konfigurasie is, en dit leef buite jou kode. Daarom word die kode baie eenvoudiger en korter.

Belangriker nog, die operasionele komponent van mikrodienste is geensins met die kode self verbind nie, wat beteken dat hul werking veilig na IT-spesialiste oorgedra kan word. Inderdaad, hoekom moet 'n ontwikkelaar verantwoordelik wees vir stroombrekers en foutinspuiting? Reageer, ja, maar verwerk en skep dit? As jy dit alles uit die kode verwyder, kan programmeerders ten volle fokus op toepassingsfunksionaliteit. En die kode self sal korter en eenvoudiger word.

Diensrooster

Istio, wat die bestuursfunksies van mikrodienste buite hul kode implementeer - dit is die konsep van die Service Mesh. Met ander woorde, dit is 'n gekoördineerde groep van een of meer binaries wat 'n rooster van netwerkfunksies vorm.

Hoe Istio met mikrodienste werk

Dit is hoe syspanhouers werk in samewerking met Kubernetes и mini-skof voëlvlug: begin 'n Minishift-instansie, skep 'n Istio-projek (kom ons noem dit "istio-stelsel"), installeer en hardloop alle Istio-verwante komponente. Dan, terwyl jy projekte en peule skep, voeg konfigurasie-inligting by jou ontplooiings en jou peule begin Istio gebruik. 'n Vereenvoudigde diagram lyk soos volg:

'n Reeks plasings op Istio Service Mesh

Nou kan jy Istio-instellings verander om byvoorbeeld foutinspuiting, ondersteuning te organiseer Kanarie-ontplooiing of ander kenmerke van Istio - en dit alles sonder om die kode van die toepassings self te raak. Kom ons sê jy wil alle webverkeer van gebruikers van jou grootste klant (Foo Corporation) na 'n nuwe weergawe van jou werf herlei. Al wat u hoef te doen is om 'n Istio-roetereël te skep wat na @foocorporation.com in die gebruikers-ID soek en dienooreenkomstig herlei. Vir alle ander gebruikers sal niks verander nie. Intussen sal jy stilweg die nuwe weergawe van die webwerf toets. En let daarop dat dit absoluut nie nodig is om ontwikkelaars te betrek nie.

En hoeveel moet jy daarvoor betaal?

Glad nie. Istio is redelik vinnig, dit is ingeskryf Go en skep 'n baie klein oorhoofse koste. Boonop word 'n moontlike verlies in aanlynproduktiwiteit geneutraliseer deur 'n toename in ontwikkelaarproduktiwiteit. Ten minste in teorie: moenie vergeet dat ontwikkelaars se tyd waardevol is nie. Wat sagtewarekoste betref, is Istio oopbronsagteware, so dit is gratis om te kry en te gebruik.

Bemeester dit self

Die Red Hat Developer Experience-span het 'n in-diepte hands-on ontwikkel leierskap deur Istio (in Engels). Dit werk op Linux, MacOS en Windows, en die kode kom in Java- en Node.js-geure.

10 Interaktiewe Istio-lesse

Blok 1 - Vir beginners

Inleiding tot Istio
30 minute
Ons maak kennis met Service Mesh, leer hoe om Istio in die Kubernetes OpenShift-kluster te installeer.
Begin

Ontplooi mikrodienste in Istio
30 minute
Ons gebruik Istio om drie mikrodienste met Spring Boot en Vert.x te ontplooi.
Begin

Blok 2 - intermediêre vlak

Monitering en opsporing in Istio
60 minute
Verken Istio se ingeboude moniteringsinstrumente, pasgemaakte statistieke en OpenTracing via Prometheus en Grafana.
Begin

Eenvoudige roetering in Istio
60 minute
Leer hoe om roetering in Istio te beheer deur eenvoudige reëls te gebruik.
Begin

Gevorderde roetereëls
60 minute
Ons maak kennis met slim roetering in Istio, toegangsbeheer, lasbalansering en tariefbeperking.
Begin

Blok 3 - Gevorderde gebruiker

Foutinspuiting in Istio
60 minute
Ons bestudeer mislukkingshanteringscenario's in verspreide toepassings, skep HTTP-foute en netwerkvertragings, en leer hoe om chaos-ingenieurswese toe te pas om die omgewing te herstel.
Begin

Stroombreker in Istio
30 minute
Ons installeer Siege vir strestoets-webwerwe en leer hoe om backend-fouttoleransie te verseker deur herprobasies, stroombreker en swembad-uitwerping te gebruik.
Begin

Egress en Istio
10 minute
Ons gebruik Egress-roetes om reëls te skep vir die interaksie van interne dienste met eksterne API's en dienste.
Begin

Istio en Kiali
15 minute
Leer hoe om Kiali te gebruik om 'n groot prentjie van die diensnetwerk te kry en die vloei van versoeke en data te bestudeer.
Begin

Wedersydse TLS in Istio
15 minute
Ons skep Istio Gateway en VirtualService, en bestudeer dan wedersydse TLS (mTLS) en sy instellings in detail.
Begin

Box 3.1 - Deep Dive: Istio Service Mesh vir mikrodienste

'n Reeks plasings op Istio Service Mesh
Waaroor gaan die boek:

  • Wat is 'n diensnetwerk.
  • Istio-stelsel en sy rol in mikrodiensargitektuur.
  • Gebruik Istio vir die volgende take:
    • Fout verdraagsaamheid;
    • Roetering;
    • Chaostoetsing;
    • sekuriteit;
    • Versameling van telemetrie met behulp van opsporing, metrieke en Grafana.

Om 'n boek af te laai

Reeks artikels oor diensmaas en Istio

Probeer dit self

Hierdie reeks plasings is nie bedoel om 'n diep duik in die wêreld van Istio te gee nie. Ons wil jou net aan die konsep self bekendstel en jou dalk inspireer om Istio self te probeer. Dit is heeltemal gratis, en Red Hat bied al die gereedskap wat jy nodig het om met OpenShift, Kubernetes, Linux-houers en Istio te begin, insluitend: Red Hat Ontwikkelaar OpenShift Container Platform, ons gids tot Istio en ander hulpbronne op ons diensnetwerk mikro-webwerf. Moenie uitstel nie, begin vandag!

Istio-roetereëls: Rig diensversoeke na die regte plek

oopskuif и Kubernetes is uitstekend in die hantering van mikrodienste na die vereiste peule gestuur. Dit is een van die doelwitte van Kubernetes se bestaan ​​- roetering en lasbalansering. Maar wat as jy meer subtiele en gesofistikeerde roetes benodig? Byvoorbeeld, om twee weergawes van 'n mikrodiens op dieselfde tyd te gebruik. Hoe kan Istio-roetereëls hier help?

Roetereëls is die reëls wat in werklikheid die keuse van roete spesifiseer. Ongeag die kompleksiteit van die stelsel, bly die algemene beginsel agter hierdie reëls eenvoudig: versoeke word gestuur op grond van sekere parameters en HTTP-kopwaardes.
Kom ons kyk na voorbeelde:

Kubernetes verstek: triviale "50/50"

In ons voorbeeld sal ons wys hoe om twee weergawes van 'n mikrodiens in OpenShift op dieselfde tyd te gebruik, kom ons noem hulle v1 en v2. Elke weergawe loop in sy eie Kubernetes-peul, en eweredig gebalanseerde round robin-roetering werk by verstek hier. Elke peul ontvang sy deel van versoeke volgens die aantal mikrodiensgevalle, met ander woorde replikas. Istio laat jou toe om hierdie balans met die hand te verander.

Kom ons sê ons het twee weergawes van ons aanbevelingsdiens, aanbeveling-v1 en aanbeveling-v2, op OpenShift ontplooi.
Op fig. Figuur 1 wys dat wanneer elke diens in 'n enkele geval verteenwoordig word, versoeke eweredig tussen hulle vervleg word: 1-2-1-2-... Dit is hoe Kubernetes-roetering by verstek werk:

'n Reeks plasings op Istio Service Mesh

Geweegde verspreiding tussen weergawes

Op fig. Figuur 2 wys wat gebeur as jy die aantal v2 diens replikas van een na twee verhoog (dit word gedoen met die oc skaal --replicas=2 ontplooiing/aanbeveling-v2 opdrag). Soos jy kan sien, is versoeke tussen v1 en v2 nou verdeel in 'n een-tot-drie verhouding: 1-2-2-1-2-2-...:

'n Reeks plasings op Istio Service Mesh

Ignoreer weergawe met Istio

Istio maak dit maklik om die verspreiding van versoeke te verander op die manier wat ons nodig het. Stuur byvoorbeeld alle verkeer slegs na aanbeveling-v1 met die volgende Istio yaml-lêer:

'n Reeks plasings op Istio Service Mesh

Hier moet jy hieraan aandag gee: peule word volgens etikette gekies. In ons voorbeeld word die etiket v1 gebruik. Die "gewig: 100"-parameter beteken dat 100% van die verkeer na alle dienspeule gestuur sal word wat die v1-etiket het.

Direktiewe verspreiding tussen weergawes (Kanarie-ontplooiing)

Verder, deur die gewigsparameter te gebruik, kan jy verkeer na beide peule stuur, en ignoreer die aantal mikrodiensgevalle wat in elk van hulle loop. Byvoorbeeld, hier rig ons direk 90% van die verkeer na v1 en 10% na v2:

'n Reeks plasings op Istio Service Mesh

Afsonderlike mobiele gebruikersroetering

Ten slotte sal ons wys hoe om die verkeer van mobiele gebruikers te dwing om na die v2-diens te stuur, en alle ander gebruikers na v1. Om dit te doen, gebruik ons ​​gewone uitdrukkings om die gebruiker-agentwaarde in die versoekopskrif te ontleed:

'n Reeks plasings op Istio Service Mesh

Nou is dit jou beurt

Die regex-voorbeeld vir die ontleding van kopskrifte behoort jou te motiveer om jou eie maniere te verken om Istio se roetereëls toe te pas. Boonop is die moontlikhede hier baie uitgebreid, aangesien die kopwaardes in die bronkode van toepassings gevorm kan word.

En onthou dat Ops, nie Dev

Alles wat ons in die voorbeelde hierbo gewys het, word gedoen sonder die geringste verandering in die bronkode, wel, behalwe vir die gevalle waar dit nodig is om spesiale versoekopskrifte te vorm. Istio sal nuttig wees vir beide ontwikkelaars, wat dit byvoorbeeld in die toetsstadium sal kan gebruik, en vir IT-stelseloperateurs, wat dit baie in produksie sal help.

Laat ons dus die hoofnota van hierdie reeks plasings herhaal: jy hoef niks in jou kode te verander nie. Nie nodig om nuwe beelde te bou of nuwe houers te laat loop nie. Dit alles word buite die kode geïmplementeer.

sit jou verbeelding aan

Stel jou net die vooruitsigte voor om opskrifte met gereelde uitdrukkings te ontleed. Wil jy jou grootste kliënt herlei na 'n spesiale weergawe van jou mikrodienste? Maklik! Het u 'n aparte weergawe vir die Chrome-blaaier nodig? Geen probleem! Jy kan verkeer roeteer volgens byna enige van sy kenmerke.

Probeer dit self

Om oor Istio, Kubernetes en OpenShift te lees is een ding, maar hoekom raak dit nie alles self aan nie? Span Red Hat-ontwikkelaarprogram het 'n gedetailleerde gids (in Engels) voorberei wat jou sal help om hierdie tegnologieë so vinnig as moontlik te bemeester. Die gids is ook 100% oopbron, so dit is in die publieke domein. Die lêer werk op macOS, Linux en Windows, en die bronkode is beskikbaar in Java- en node.js-weergawes (meer tale kom binnekort). Maak net die toepaslike git-bewaarplek in jou blaaier oop Red Hat Ontwikkelaar Demo.

In die volgende plasing: werk probleme pragtig uit

Vandag het jy gesien wat Istio-roetereëls kan doen. Stel jou nou alles voor, maar net met betrekking tot fouthantering. Dit is presies wat ons in die volgende pos sal behandel.

Bron: will.com

Voeg 'n opmerking