In searje berjochten op Istio Service Mesh

Wy begjinne in searje berjochten dy't guon fan 'e protte mooglikheden fan' e Istio Service Mesh sjen litte yn kombinaasje mei Red Hat OpenShift en Kubernetes.

In searje berjochten op Istio Service Mesh

Diel ien, hjoed:

  • Litte wy it konsept fan Kubernetes-sidecar-konteners útlizze en it leitmotyf formulearje fan dizze searje berjochten: "Jo hoege neat te feroarjen yn jo koade".
  • Litte wy it fûnemintele ding fan Istio yntrodusearje - routingregels. Alle oare Istio-funksjes binne op har boud, om't it de regels binne dy't jo ferkear kinne rjochtsje op mikrotsjinsten, mei YAML-bestannen bûten de tsjinstkoade. Wy beskôgje ek it ynsetskema fan Canary Deployment. Nijjiersbonus - 10 ynteraktive lessen op Istio


Diel twa, dy't gau komt, sil jo fertelle:

  • Hoe Istio ymplemintearret Pool Ejection yn kombinaasje mei Circuit Breaker en sil demonstrearje hoe't Istio kinne jo fuortsmite in deade of min performing pod út de balancing circuit.
  • Wy sille ek sjen nei it Circuit Breaker-ûnderwerp fan 'e earste post om te sjen hoe't Istio hjir kin wurde brûkt. Wy sille jo sjen litte hoe't jo ferkear routerje en netwurkflaters behannelje mei YAML-konfiguraasjebestannen en terminalkommando's sûnder de minste feroaringen yn 'e tsjinstkoade.

Diel trije:

  • In ferhaal oer tracing en tafersjoch, dy't al ynboud binne of maklik tafoege oan Istio. Wy sille jo sjen litte hoe't jo ark brûke lykas Prometheus, Jaeger, en Grafana yn kombinaasje mei OpenShift-skaalfergrutting om mikroservice-arsjitektueren maklik te behearjen.
  • Wy geane fan it kontrolearjen en behanneljen fan flaters nei it mei opsetsin yntrodusearje yn it systeem. Mei oare wurden, wy learje hoe't jo in foutynjeksje kinne dwaan sûnder de boarnekoade te feroarjen, wat heul wichtich is út in testpunt - om't as jo de koade sels feroarje foar dit, is d'r in risiko dat ekstra flaters ynfierd wurde.

Uteinlik, yn 'e lêste post op Istio Service Mesh:

  • Litte wy nei de Dark Side gean. Mear krekter sille wy leare om it Dark Launch-skema te brûken, as de koade direkt wurdt ynset en hifke op produksjegegevens, mar hat gjin ynfloed op de wurking fan it systeem op ien of oare manier. Dit is wêr't Istio's fermogen om ferkear te splitsen fan pas komt. En de mooglikheid om te testen op live produksjegegevens sûnder de wurking fan it fjochtsysteem op ien of oare manier te beynfloedzjen is de meast oertsjûgjende metoade fan ferifikaasje.
  • Bouwe op Dark Launch, sille wy jo sjen litte hoe't jo it Canary Deployment-model kinne brûke om risiko te ferminderjen en it makliker te meitsjen om nije koade yn produksje te krijen. Canary Deployment sels is fier fan nij, mar Istio lit jo dit skema útfiere mei gewoan ienfâldige YAML-bestannen.
  • As lêste sille wy jo sjen litte hoe't jo Istio Egress brûke om tagong te jaan ta tsjinsten oan dyjingen dy't bûten jo klusters binne om de mooglikheden fan Istio te brûken by it wurkjen mei it ynternet.

Dus, hjir geane wy ​​...

Istio tafersjoch- en behear ark - alles wat jo nedich hawwe om mikrotsjinsten te orkestrearjen yn in tsjinstmesh tsjinst mesh.

Wat is Istio Service Mesh

In tsjinstmesh ymplementearret funksjes lykas ferkearsmonitoring, tagongskontrôle, ûntdekking, feiligens, fouttolerânsje en oare nuttige dingen foar in groep tsjinsten. Istio lit jo dit alles dwaan sûnder de minste feroarings oan 'e koade fan' e tsjinsten sels. Wat is it geheim fan magy? Istio hechtet in eigen proxy oan elke tsjinst yn 'e foarm fan in sidecar-container (sidecar is in motorfytssidecar), wêrnei't alle ferkear nei dizze tsjinst troch de proxy giet, dy't, begelaat troch spesifisearre belied, beslút hoe, wannear en oft dit ferkear moat de tsjinst hielendal berikke. Istio makket it ek mooglik om avansearre DevOps-techniken te ymplementearjen lykas kanaryske ynset, circuit breakers, foutynjeksje en in protte oaren.

Hoe Istio wurket mei konteners en Kubernetes

De Istio-tsjinstmesh is in sidecar-ymplemintaasje fan alles dat nedich is om mikrotsjinsten te meitsjen en te behearjen: monitoring, tracing, circuit breakers, routing, load balancing, foutynjeksje, opnij besykjen, time-outs, spegeljen, tagongskontrôle, taryfbeheining en folle mear. En hoewol d'r hjoed in ton biblioteken binne om dizze funksjes direkt yn koade út te fieren, mei Istio kinne jo allegear deselde dingen krije sûnder wat yn jo koade te feroarjen.

Neffens it sidecar-model rint Istio yn in Linux-kontener, dy't yn ien leit Kubernetes-pod mei in kontrolearre tsjinst en injects en extracts funksjonaliteit en ynformaasje neffens de opjûne konfiguraasje. Wy beklamje dat dit jo eigen konfiguraasje is, en it libbet bûten jo koade. Dêrom wurdt de koade folle ienfâldiger en koarter.

Wat ek wichtich is, is dat de operasjonele komponint fan mikrotsjinsten op gjin inkelde manier ferbûn is mei de koade sels, wat betsjut dat har operaasje feilich kin wurde oerdroegen oan IT-spesjalisten. Ja, wêrom soe de ûntwikkelder ferantwurdlik wêze moatte foar circuit breakers en foutynjeksje? Reagearje, ja, mar ferwurkje se en meitsje se? As jo ​​dit alles út 'e koade fuortsmite, kinne programmeurs folslein rjochtsje op applikaasjefunksjonaliteit. En de koade sels sil koarter en ienfâldiger wurde.

Service mesh

Istio, dy't funksjes ymplemintearret foar it behearen fan mikrotsjinsten bûten har koade, is it konsept fan in Service Mesh. Mei oare wurden, it is in koördinearre groep fan ien of mear binaries dy't in mesh fan netwurkfunksjes foarmje.

Hoe Istio wurket mei mikrotsjinsten

Sa sjocht it wurk fan sydspankonteners yn gearhing mei Kubernetes и Minishift fûgelperspektyf: start in eksimplaar fan Minishift, meitsje in projekt foar Istio (litte wy it "istio-systeem" neame), ynstallearje en útfiere alle Istio-relatearre komponinten. Dan, as jo projekten en pods oanmeitsje, foegje jo konfiguraasjeynformaasje ta oan jo ynset, en jo pods begjinne Istio te brûken. In ferienfâldige diagram sjocht der sa út:

In searje berjochten op Istio Service Mesh

No kinne jo feroarje Istio ynstellings om, bygelyks, te organisearjen skuld ynjeksje, stipe Kanaryske ynset of oare Istio-funksjes - en dit alles sûnder de koade fan 'e applikaasjes sels oan te reitsjen. Litte wy sizze dat jo alle webferkear wolle omliede fan brûkers fan jo grutste klant (Foo Corporation) nei in nije ferzje fan 'e side. Om dit te dwaan, meitsje gewoan in Istio-routingregel dy't sil sykje nei @foocorporation.com yn 'e brûkers-ID en dêrtroch trochferwize. Foar alle oare brûkers sil neat feroarje. Yn 'e tuskentiid sille jo de nije ferzje fan' e side rêstich testen. En tink derom dat jo hjirfoar ûntwikkelders hielendal net hoege te belûken.

En silst der djoer foar betelje moatte?

Heulendal net. Istio is frij rap en is skreaun yn Go en skept hiel lyts overhead. Derneist wurdt it mooglike ferlies yn online produktiviteit kompensearre troch in tanimming fan produktiviteit fan ûntwikkelders. Teminsten yn teory: ferjit net dat de tiid fan ûntwikkelders weardefol is. Wat softwarekosten oanbelanget, is Istio iepen boarne software, sadat jo it fergees kinne krije en brûke.

Master it sels

It Red Hat Developer Experience Team hat in yngeande hands-on ûntwikkele liederskip troch Istio (yn it Ingelsk). It rint op Linux, MacOS en Windows, en de koade is beskikber yn Java en Node.js.

10 ynteraktive lessen op Istio

Blok 1 - Foar begjinners

Ynlieding ta Istio
30 minuten
Litte wy yn 'e kunde komme mei Service Mesh, learje hoe't jo Istio kinne ynstallearje yn in OpenShift Kubernetes-kluster.
Begjinne

It ynsetten fan mikrotsjinsten yn Istio
30 minuten
Wy brûke Istio om trije mikrotsjinsten yn te setten mei Spring Boot en Vert.x.
Begjinne

Blok 2 - tuskennivo

Monitoring en tracing yn Istio
60 minuten
Wy sille Istio's ynboude monitoring-ark, oanpaste metriken, en OpenTracing ûndersykje fia Prometheus en Grafana.
Begjinne

Ienfâldige routing yn Istio
60 minuten
Learje hoe't jo routing kinne beheare yn Istio mei ienfâldige regels.
Begjinne

Avansearre routing regels
60 minuten
Litte wy efkes sjen nei Istio's smart routing, tagongskontrôle, load balancing en rate limiting.
Begjinne

Blok 3 - avansearre brûker

Fault Ynjeksje yn Istio
60 minuten
Wy studearje senario's foar mislearring yn ferdielde applikaasjes, it meitsjen fan HTTP-flaters en netwurkfertragingen, en learje om chaos-engineering te brûken om de omjouwing te herstellen.
Begjinne

Circuit Breaker yn Istio
30 minuten
Wy ynstallearje Siege foar stress-testplakken en learje hoe't jo backend-fouttolerânsje kinne garandearje mei replays, circuit breaker en pool-útwerp.
Begjinne

Egress en Istio
10 minuten
Wy brûke Egress-rûtes om regels te meitsjen foar de ynteraksje fan ynterne tsjinsten mei eksterne API's en tsjinsten.
Begjinne

Istio en Kiali
15 minuten
Learje Kiali te brûken om in oersjoch te krijen fan it tsjinstmesh en fersyk en gegevensstreamen te ferkennen.
Begjinne

Underlinge TLS yn Istio
15 minuten
Wy meitsje Istio Gateway en VirtualService, dan studearje wy ûnderlinge TLS (mTLS) en har ynstellingen yn detail.
Begjinne

Blok 3.1 - Deep Dive: Istio Service Mesh foar Microservices

In searje berjochten op Istio Service Mesh
Wêr giet it boek oer:

  • Wat is in tsjinstmesh?
  • It Istio-systeem en har rol yn mikroservicearsjitektuer.
  • It brûken fan Istio om de folgjende problemen op te lossen:
    • Marzje foar flaters;
    • Routing;
    • Chaos testen;
    • Feilichheid;
    • Telemetry kolleksje mei help fan spoaren, metrics en Grafana.

Download in boek

Searje artikels oer tsjinstmeshes en Istio

Besykje it sels

Dizze searje berjochten is net bedoeld om in djippe dûk te jaan yn 'e wrâld fan Istio. Wy wolle jo gewoan it konsept yntrodusearje en jo miskien ynspirearje om Istio sels te besykjen. It is folslein fergees te dwaan, en Red Hat biedt alle ark dy't jo nedich binne om te begjinnen mei OpenShift, Kubernetes, Linux-konteners en Istio, ynklusyf: Red Hat Developer OpenShift Container Platform, ús gids foar Istio en oare boarnen op ús mikrosite op Service Mesh. Wachtsje net, begjin hjoed!

Istio-routingregels: tsjinstoanfragen rjochtsje wêr't se hinne moatte

OpenShift и Kubernetes doch in poerbêste taak om oan te pakken mikrotsjinsten trochstjoerd nei de fereaske pods. Dit is ien fan de redenen foar it bestean fan Kubernetes - routing en load balancing. Mar wat as jo subtilere en ferfine routing nedich binne? Bygelyks om tagelyk twa ferzjes fan in mikroservice te brûken. Hoe kinne Istio-rûteregels hjir helpe?

Routing regels binne de regels dy't eins bepale de kar fan rûte. Nettsjinsteande it nivo fan systeemkompleksiteit bliuwt it algemiene bestjoeringsprinsipe fan dizze regels ienfâldich: oanfragen wurde trochstjoerd op basis fan bepaalde parameters en HTTP-headerwearden.
Litte wy nei foarbylden sjen:

Kubernetes standert: triviale "50/50"

Yn ús foarbyld sille wy sjen litte hoe't jo twa ferzjes fan in mikrotsjinst tagelyk brûke yn OpenShift, litte wy se v1 en v2 neame. Eltse ferzje rint yn syn eigen Kubernetes pod, en standert rint it lykwichtich lykwichtige round robin routing. Elke pod ûntfangt syn oandiel oan oanfragen basearre op it oantal fan syn mikroservice-eksimplaren, mei oare wurden, replika's. Istio lit jo dit lykwicht manuell feroarje.

Litte wy sizze dat wy twa ferzjes fan ús oanbefellingstsjinst ynset hawwe op OpenShift, oanbefelling-v1 en oanbefelling-v2.
Yn Fig. Figuer 1 lit sjen dat wannear't elke tsjinst yn ien eksimplaar fertsjintwurdige wurdt, fersiken evenlik tusken har ôfwikselje: 1-2-1-2-... Dit is hoe't Kubernetes-routing standert wurket:

In searje berjochten op Istio Service Mesh

Gewogen ferdieling tusken ferzjes

Yn Fig. Figuer 2 lit sjen wat der bart as jo it oantal replika's fan v2-tsjinsten ferheegje fan ien nei twa (dit wurdt dien mei de oc-skaal —replicas=2-ynset/recommendation-v2-kommando). Sa't jo sjen kinne, binne fersiken tusken v1 en v2 no ferdield yn in ien-op-trije-ferhâlding: 1-2-2-1-2-2-...:

In searje berjochten op Istio Service Mesh

Negearje ferzje mei Istio

Istio makket it maklik om de ferdieling fan oanfragen te feroarjen op 'e manier dy't wy nedich binne. Stjoer bygelyks alle ferkear allinich nei oanbefelling-v1 mei it folgjende Istio yaml-bestân:

In searje berjochten op Istio Service Mesh

Hjir moatte jo omtinken jaan oan dit: pods wurde selektearre neffens de etiketten. Us foarbyld brûkt label v1. De parameter "gewicht: 100" betsjut dat 100% fan it ferkear wurdt trochstjoerd nei alle tsjinstpods dy't it v1-label hawwe.

Rjochtlineferdieling tusken ferzjes (Kanaryske ynset)

Folgjende, mei de gewichtsparameter, kinne jo ferkear rjochtsje nei beide pods, negearje it oantal mikroservice-eksimplaren dat yn elk fan har rint. Bygelyks, hjir rjochtsje wy 90% fan ferkear nei v1 en 10% nei v2:

In searje berjochten op Istio Service Mesh

Aparte routing foar mobile brûkers

As konklúzje sille wy sjen litte hoe't jo mobyl brûkersferkear kinne twinge om te wurde trochstjoerd nei tsjinst v2, en elkenien oars nei v1. Om dit te dwaan, brûke wy reguliere útdrukkingen om de wearde fan 'e brûkersagent te analysearjen yn' e fersykkop:

In searje berjochten op Istio Service Mesh

No is it dyn beurt

It foarbyld mei reguliere útdrukkingen foar it parsearjen fan kopteksten moatte jo motivearje om jo eigen gebrûk fan Istio-routingregels te finen. Boppedat binne de mooglikheden hjir frij wiidweidich, om't headerwearden kinne wurde foarme yn 'e boarnekoade fan' e applikaasje.

En tink derom dat Ops, net Dev

Alles wat wy yn 'e foarbylden hjirboppe sjen litte, wurdt dien sûnder de minste feroaringen yn' e boarnekoade, goed, útsein foar dy gefallen as it nedich is om kopteksten foar spesjale oanfragen te generearjen. Istio sil nuttich wêze sawol foar ûntwikkelders, dy't it bygelyks yn 'e teststadium kinne brûke, en foar spesjalisten yn' e eksploitaasje fan IT-systemen, foar wa't it in protte sil helpe by de produksje.

Dat litte wy it leitmotiv fan dizze searje berjochten werhelje: jo hoege neat te feroarjen yn jo koade. D'r is gjin need om nije ôfbyldings te bouwen of nije konteners te lansearjen. Dit alles wurdt útfierd bûten koade.

Brûk dyn fantasij

Stel jo gewoan de mooglikheden foar fan koptekstanalyse mei reguliere útdrukkingen. Wolle jo jo grutste klant omliede nei in spesjale ferzje fan jo mikrotsjinsten? Maklik! In aparte ferzje nedich foar de Chrome-blêder? Gjin probleem! Jo kinne ferkear rûte neffens hast elke karakteristyk.

Besykje it sels

Lêze oer Istio, Kubernetes en OpenShift is ien ding, mar wêrom net alles sels oanreitsje? Ploech Red Hat Developer Program hat in detaillearre gids taret (yn it Ingelsk) dy't jo sil helpe jo dizze technologyen sa fluch mooglik te behearskjen. De hantlieding is ek 100% iepen boarne, dus it wurdt pleatst yn it publike domein. It bestân wurket op macOS, Linux en Windows, en de boarnekoade is beskikber yn Java en node.js ferzjes (ferzjes yn oare talen komme gau). Iepenje gewoan it oerienkommende git-repository yn jo browser Red Hat Developer Demo.

Yn de folgjende post: wy wurkje problemen moai út

Hjoed hawwe jo sjoen wat Istio-routingregels kinne dwaan. Stel jo no itselde foar, mar allinich yn relaasje ta flaterôfhanneling. Dit is krekt wêr't wy oer sille prate yn 'e folgjende post.

Boarne: www.habr.com

Add a comment