Një seri postimesh në Istio Service Mesh

Ne po fillojmë një seri postimesh që shfaqin disa nga aftësitë e shumta të rrjetës së shërbimit Istio kur kombinohen me Red Hat OpenShift dhe Kubernetes.

Një seri postimesh në Istio Service Mesh

Pjesa e parë, sot:

  • Le të shpjegojmë konceptin e kontejnerëve të karrigeve anësore të Kubernetes dhe të formulojmë lajtmotivin e kësaj serie postimesh: "Nuk keni nevojë të ndryshoni asgjë në kodin tuaj".
  • Le të prezantojmë gjënë themelore të Istio - rregullat e rrugëzimit. Të gjitha veçoritë e tjera të Istio janë ndërtuar mbi to, pasi janë rregullat që ju lejojnë të drejtoni trafikun në mikroshërbime, duke përdorur skedarë YAML jashtë kodit të shërbimit. Ne po shqyrtojmë gjithashtu skemën e vendosjes së Kanarisë. Bonusi i Vitit të Ri – 10 mësime interaktive në Istio


Pjesa e dytë, së shpejti, do t'ju tregojë:

  • Si Istio zbaton Pool Ejection në kombinim me Circuit Breaker dhe do të demonstrojë se si Istio ju lejon të hiqni një pod të vdekur ose me performancë të dobët nga qarku i balancimit.
  • Ne gjithashtu do të shikojmë temën e ndërprerësit nga postimi i parë për të parë se si mund të përdoret Istio këtu. Ne do t'ju tregojmë se si të drejtoni trafikun dhe të trajtoni gabimet e rrjetit duke përdorur skedarët e konfigurimit YAML dhe komandat e terminalit pa ndryshimet më të vogla në kodin e shërbimit.

Pjesa e tretë:

  • Një histori për gjurmimin dhe monitorimin, të cilat tashmë janë të integruara ose shtohen lehtësisht në Istio. Ne do t'ju tregojmë se si të përdorni mjete si Prometheus, Jaeger dhe Grafana në kombinim me shkallëzimin OpenShift për të menaxhuar pa mundim arkitekturat e mikroshërbimeve.
  • Ne kalojmë nga monitorimi dhe trajtimi i gabimeve në futjen e tyre në sistem me qëllim. Me fjalë të tjera, ne mësojmë se si të bëjmë injektimin e gabimeve pa ndryshuar kodin burimor, gjë që është shumë e rëndësishme nga pikëpamja e testimit - pasi nëse ndryshoni vetë kodin për këtë, ekziston rreziku i futjes së gabimeve shtesë.

Së fundi, në postimin përfundimtar në Istio Service Mesh:

  • Le të shkojmë në anën e errët. Më saktësisht, ne do të mësojmë të përdorim skemën Dark Launch, kur kodi vendoset dhe testohet drejtpërdrejt në të dhënat e prodhimit, por nuk ndikon në funksionimin e sistemit në asnjë mënyrë. Kjo është ajo ku aftësia e Istio për të ndarë trafikun vjen në ndihmë. Dhe aftësia për të testuar në të dhënat e prodhimit të drejtpërdrejtë pa ndikuar në asnjë mënyrë funksionimin e sistemit luftarak është metoda më bindëse e verifikimit.
  • Duke u bazuar në Dark Launch, ne do t'ju tregojmë se si të përdorni modelin Canary Deployment për të zvogëluar rrezikun dhe për ta bërë më të lehtë marrjen e kodit të ri në prodhim. Vetë Canary Deployment nuk është aspak i ri, por Istio ju lejon të zbatoni këtë skemë vetëm me skedarë të thjeshtë YAML.
  • Së fundi, ne do t'ju tregojmë se si të përdorni Istio Egress për t'u dhënë akses në shërbime atyre që janë jashtë grupeve tuaja në mënyrë që të përdorin aftësitë e Istio kur punoni me internetin.

Pra, ja ku shkojmë ...

Mjetet e monitorimit dhe menaxhimit të Istio - gjithçka që ju nevojitet për të orkestruar mikroshërbimet në një rrjetë shërbimi rrjetë shërbimi.

Çfarë është Istio Service Mesh

Një rrjetë shërbimi zbaton funksione të tilla si monitorimi i trafikut, kontrolli i aksesit, zbulimi, siguria, toleranca e gabimeve dhe gjëra të tjera të dobishme për një grup shërbimesh. Istio ju lejon të bëni të gjitha këto pa ndryshimet më të vogla në kodin e vetë shërbimeve. Cili është sekreti i magjisë? Istio i bashkangjit proxy-t e tij secilit shërbim në formën e një kontenieri anësor (karriku anësor është një karrige anësore me motoçikletë), pas së cilës i gjithë trafiku drejt këtij shërbimi kalon përmes përfaqësuesit, i cili, i udhëhequr nga politikat e specifikuara, vendos se si, kur dhe nëse ky trafik duhet të arrijë fare shërbimin. Istio gjithashtu bën të mundur zbatimin e teknikave të avancuara DevOps si vendosjet e kanarinave, ndërprerësit, injektimi i gabimeve dhe shumë të tjera.

Si funksionon Istio me kontejnerë dhe Kubernetes

Rrjeta e shërbimit Istio është një implementim anësor i gjithçkaje që kërkohet për të krijuar dhe menaxhuar mikroshërbime: monitorim, gjurmim, ndërprerës, rrugëzim, balancim të ngarkesës, injektim të gabimeve, riprovime, afate kohore, pasqyrim, kontroll të aksesit, kufizim të shpejtësisë dhe shumë më tepër. Dhe megjithëse sot ka një ton bibliotekash për t'i zbatuar këto funksione drejtpërdrejt në kod, me Istio mund të merrni të gjitha të njëjtat gjëra pa ndryshuar asgjë në kodin tuaj.

Sipas modelit të karriges anësore, Istio funksionon në një kontejner Linux, i cili ndodhet në një Kubernetes-pod me një shërbim të kontrolluar dhe injekton dhe nxjerr funksionalitetin dhe informacionin sipas konfigurimit të dhënë. Theksojmë se ky është konfigurimi juaj dhe jeton jashtë kodit tuaj. Prandaj, kodi bëhet shumë më i thjeshtë dhe më i shkurtër.

Ajo që është gjithashtu e rëndësishme është që komponenti operacional i mikroshërbimeve nuk rezulton të jetë në asnjë mënyrë i lidhur me vetë kodin, që do të thotë se funksionimi i tyre mund të transferohet në mënyrë të sigurt te specialistët e IT. Në të vërtetë, pse zhvilluesi duhet të jetë përgjegjës për ndërprerësit dhe injektimin e gabimeve? Reagoni, po, por përpunoni dhe krijoni ato? Nëse i hiqni të gjitha këto nga kodi, programuesit do të jenë në gjendje të fokusohen plotësisht në funksionalitetin e aplikacionit. Dhe vetë kodi do të bëhet më i shkurtër dhe më i thjeshtë.

Rrjetë shërbimi

Istio, i cili zbaton funksione për menaxhimin e mikroshërbimeve jashtë kodit të tyre, është koncepti i një rrjetë shërbimi. Me fjalë të tjera, është një grup i koordinuar i një ose më shumë binare që formojnë një rrjetë funksionesh rrjeti.

Si funksionon Istio me mikroshërbime

Kështu duket puna e kontejnerëve të karrigeve anësore në lidhje me Kubernetes и Minorshift pamje nga sytë e shpendëve: hapni një shembull të Minishift, krijoni një projekt për Istio (le ta quajmë "istio-system"), instaloni dhe ekzekutoni të gjithë komponentët e lidhur me Istio. Më pas, ndërsa krijoni projekte dhe pods, ju shtoni informacionin e konfigurimit në vendosjet tuaja dhe podet tuaja fillojnë të përdorin Istio. Një diagram i thjeshtuar duket si ky:

Një seri postimesh në Istio Service Mesh

Tani mund të ndryshoni cilësimet e Istio në mënyrë që, për shembull, të organizoni injektimin e gabimeve, mbështetjen Vendosja e Kanarinave ose veçori të tjera të Istio - dhe e gjithë kjo pa prekur kodin e vetë aplikacioneve. Le të themi se dëshironi të ridrejtoni të gjithë trafikun në internet nga përdoruesit e klientit tuaj më të madh (Foo Corporation) në një version të ri të sajtit. Për ta bërë këtë, thjesht krijoni një rregull të rrugëtimit Istio që do të kërkojë @foocorporation.com në ID-në e përdoruesit dhe do të ridrejtojë në përputhje me rrethanat. Për të gjithë përdoruesit e tjerë, asgjë nuk do të ndryshojë. Ndërkohë, do të provoni me qetësi versionin e ri të faqes. Dhe vini re se nuk keni nevojë të përfshini fare zhvillues për këtë.

Dhe a do t'ju duhet të paguani shtrenjtë për të?

Aspak. Istio është mjaft i shpejtë dhe është i shkruar në Go dhe krijon shumë pak shpenzime të përgjithshme. Përveç kësaj, humbja e mundshme në produktivitetin në internet kompensohet nga një rritje në produktivitetin e zhvilluesve. Të paktën në teori: mos harroni se koha e zhvilluesve është e vlefshme. Sa i përket kostove të softuerit, Istio është softuer me kod të hapur, kështu që mund ta merrni dhe përdorni falas.

Zotëroje vetë

Ekipi i Eksperiencës së Zhvilluesve të Red Hat ka zhvilluar një praktikë të thellë udhëheqja nga Istio (në anglisht). Ai funksionon në Linux, MacOS dhe Windows, dhe kodi është i disponueshëm në Java dhe Node.js.

10 mësime interaktive në Istio

Blloku 1 - Për fillestarët

Hyrje në Istio
Minuta 30
Le të njihemi me Service Mesh, të mësojmë se si të instalojmë Istio në një grup OpenShift Kubernetes.
Për të filluar

Vendosja e mikroshërbimeve në Istio
Minuta 30
Ne përdorim Istio për të vendosur tre mikroshërbime me Spring Boot dhe Vert.x.
Për të filluar

Blloku 2 – niveli mesatar

Monitorim dhe gjurmim ne Istio
Minuta 60
Ne do të eksplorojmë mjetet e integruara të monitorimit të Istio, metrikat e personalizuara dhe OpenTracing nëpërmjet Prometheus dhe Grafana.
Për të filluar

Rrugë e thjeshtë në Istio
Minuta 60
Mësoni se si të menaxhoni rrugën në Istio duke përdorur rregulla të thjeshta.
Për të filluar

Rregulla të avancuara të rrugëtimit
Minuta 60
Le të hedhim një vështrim në drejtimin inteligjent të Istio, kontrollin e aksesit, balancimin e ngarkesës dhe kufizimin e shpejtësisë.
Për të filluar

Blloku 3 - përdorues i avancuar

Fault Injection në Istio
Minuta 60
Ne studiojmë skenarët e trajtimit të dështimeve në aplikacionet e shpërndara, duke krijuar gabime HTTP dhe vonesa në rrjet dhe mësojmë të përdorim inxhinierinë e kaosit për të rivendosur mjedisin.
Për të filluar

Ndërprerës në Istio
Minuta 30
Ne instalojmë Siege për vendet e testimit të stresit dhe mësojmë se si të sigurojmë tolerancën e defekteve në fund duke përdorur përsëritjet, ndërprerësin dhe nxjerrjen e pishinës.
Për të filluar

Egress dhe Istio
Minuta 10
Ne përdorim rrugët e daljes për të krijuar rregulla për ndërveprimin e shërbimeve të brendshme me API-të dhe shërbimet e jashtme.
Për të filluar

Istio dhe Kiali
Minuta 15
Mësoni të përdorni Kiali për të marrë një përmbledhje të rrjetës së shërbimit dhe për të eksploruar rrjedhat e kërkesave dhe të të dhënave.
Për të filluar

TLS e ndërsjellë në Istio
Minuta 15
Ne krijojmë Istio Gateway dhe VirtualService, më pas studiojmë TLS reciproke (mTLS) dhe cilësimet e tij në detaje.
Për të filluar

Blloku 3.1 - Zhytje e thellë: Istio Service Mesh për Microservices

Një seri postimesh në Istio Service Mesh
Për çfarë flet libri:

  • Çfarë është një rrjetë shërbimi?
  • Sistemi Istio dhe roli i tij në arkitekturën e mikroshërbimeve.
  • Përdorimi i Istio për të zgjidhur problemet e mëposhtme:
    • Toleranca ndaj gabimeve;
    • Routing;
    • Testimi i kaosit;
    • sigurisë;
    • Mbledhja e telemetrisë duke përdorur gjurmë, metrikë dhe Grafana.

Shkarkoni një libër

Seri artikujsh mbi rrjetat e shërbimit dhe Istio

Provojeni vetë

Kjo seri postimesh nuk synon të sigurojë një zhytje të thellë në botën e Istios. Thjesht duam t'ju prezantojmë me konceptin dhe ndoshta t'ju frymëzojmë të provoni vetë Istio. Është plotësisht falas për t'u bërë dhe Red Hat ofron të gjitha mjetet që ju nevojiten për të filluar me OpenShift, Kubernetes, kontejnerët Linux dhe Istio, duke përfshirë: Platforma e kontejnerëve OpenShift e zhvilluesit të Red Hat, udhërrëfyesi ynë për në Istio dhe burime të tjera në dispozicionin tonë microsite në Service Mesh. Mos vononi, filloni sot!

Rregullat e itinerarit Istio: drejtimi i kërkesave të shërbimit atje ku duhet të shkojnë

openshift и Kubernetes bëni një punë të shkëlqyer adresimi mikroshërbime drejtuar në pods e kërkuar. Kjo është një nga arsyet e ekzistencës së Kubernetes - kursimi dhe balancimi i ngarkesës. Por çfarë nëse keni nevojë për një rrugëtim më delikate dhe të sofistikuar? Për shembull, për të përdorur njëkohësisht dy versione të një mikroservice. Si mund të ndihmojnë këtu Rregullat Istio Route?

Rregullat e rrugëtimit janë rregullat që përcaktojnë në të vërtetë zgjedhjen e rrugës. Pavarësisht nga niveli i kompleksitetit të sistemit, parimi i përgjithshëm i funksionimit të këtyre rregullave mbetet i thjeshtë: kërkesat drejtohen në bazë të parametrave të caktuar dhe vlerave të kokës HTTP.
Le të shohim shembuj:

Parazgjedhja e Kubernetes: e parëndësishme "50/50"

Në shembullin tonë, ne do të tregojmë se si të përdorim njëkohësisht dy versione të një mikroservice në OpenShift, le t'i quajmë ato v1 dhe v2. Secili version funksionon në podin e vet Kubernetes dhe si parazgjedhje ai ekzekuton një rrugëtim të balancuar në mënyrë të barabartë. Çdo pod merr pjesën e tij të kërkesave bazuar në numrin e rasteve të tij të mikroshërbimit, me fjalë të tjera, kopje. Istio ju lejon të ndryshoni këtë bilanc manualisht.

Le të themi se kemi vendosur dy versione të shërbimit tonë të rekomandimit në OpenShift, rekomandim-v1 dhe rekomandim-v2.
Në Fig. Figura 1 tregon se kur çdo shërbim përfaqësohet në një shembull, kërkesat alternohen në mënyrë të barabartë midis tyre: 1-2-1-2-... Kështu funksionon rutimi i Kubernetes si parazgjedhje:

Një seri postimesh në Istio Service Mesh

Shpërndarja e ponderuar ndërmjet versioneve

Në Fig. Figura 2 tregon se çfarë ndodh nëse rritni numrin e kopjeve të shërbimit v2 nga një në dy (kjo bëhet me shkallën oc — replicas=2 komandë vendosje/rekomandim-v2). Siç mund ta shihni, kërkesat midis v1 dhe v2 tani ndahen në një raport një me tre: 1-2-2-1-2-2-…:

Një seri postimesh në Istio Service Mesh

Injoro versionin duke përdorur Istio

Istio e bën të lehtë ndryshimin e shpërndarjes së kërkesave në mënyrën që na nevojitet. Për shembull, dërgoni të gjithë trafikun vetëm te rekomandimi-v1 duke përdorur skedarin e mëposhtëm Istio yaml:

Një seri postimesh në Istio Service Mesh

Këtu duhet t'i kushtoni vëmendje kësaj: bishtajat zgjidhen sipas etiketave. Shembulli ynë përdor etiketën v1. Parametri "pesha: 100" do të thotë që 100% e trafikut do të drejtohet në të gjitha grupet e shërbimit që kanë etiketën v1.

Shpërndarja e direktivave ndërmjet versioneve (Canary Deployment)

Më tej, duke përdorur parametrin e peshës, mund ta drejtoni trafikun në të dy podet, duke injoruar numrin e rasteve të mikroshërbimit që funksionojnë në secilën prej tyre. Për shembull, këtu ne drejtojmë 90% të trafikut në v1 dhe 10% në v2:

Një seri postimesh në Istio Service Mesh

Rrugë e veçantë për përdoruesit e celularëve

Si përfundim, ne do të tregojmë se si të detyrojmë trafikun e përdoruesve celularë të drejtohet në shërbimin v2, dhe të gjithë të tjerët në v1. Për ta bërë këtë, ne përdorim shprehje të rregullta për të analizuar vlerën e agjentit përdorues në kokën e kërkesës:

Një seri postimesh në Istio Service Mesh

Tani është radha juaj

Shembulli me shprehje të rregullta për analizimin e titujve duhet t'ju motivojë të gjeni përdorimet tuaja të rregullave të rrugëtimit Istio. Për më tepër, mundësitë këtu janë mjaft të gjera, pasi vlerat e kokës mund të formohen në kodin burimor të aplikacionit.

Dhe mbani mend se Ops, jo Dev

Gjithçka që treguam në shembujt e mësipërm është bërë pa ndryshimet më të vogla në kodin burimor, mirë, përveç atyre rasteve kur është e nevojshme të gjenerohen titujt e kërkesave speciale. Istio do të jetë i dobishëm si për zhvilluesit, të cilët, për shembull, do të jenë në gjendje ta përdorin atë në fazën e testimit, ashtu edhe për specialistët në funksionimin e sistemeve të IT, për të cilët do të ndihmojë shumë në prodhim.

Pra, le të përsërisim lajtmotivin e kësaj serie postimesh: ju nuk keni nevojë të ndryshoni asgjë në kodin tuaj. Nuk ka nevojë të ndërtoni imazhe të reja ose të lëshoni kontejnerë të rinj. E gjithë kjo zbatohet jashtë kodit.

Perdor imagjinaten tende

Vetëm imagjinoni mundësitë e analizës së kokës duke përdorur shprehje të rregullta. Dëshironi të ridrejtoni klientin tuaj më të madh në një version të veçantë tuajin mikroshërbime? Lehtë! Keni nevojë për një version të veçantë për shfletuesin Chrome? Nuk ka problem! Ju mund të drejtoni trafikun sipas pothuajse çdo karakteristike.

Provojeni vetë

Leximi për Istio, Kubernetes dhe OpenShift është një gjë, por pse të mos prekni gjithçka vetë? Ekipi Programi i Zhvilluesit Red Hat ka përgatitur një udhëzues të detajuar (në anglisht) që do t'ju ndihmojë të zotëroni këto teknologji sa më shpejt të jetë e mundur. Manuali është gjithashtu 100% me burim të hapur, kështu që është postuar në domenin publik. Skedari funksionon në macOS, Linux dhe Windows, dhe kodi burim është i disponueshëm në versionet Java dhe node.js (versionet në gjuhë të tjera së shpejti). Thjesht hapni depon përkatëse të git në shfletuesin tuaj Demoja e zhvilluesit të Red Hat.

Në postimin tjetër: ne i zgjidhim bukur problemet

Sot patë se çfarë mund të bëjnë rregullat e rrugëtimit të Istio. Tani imagjinoni të njëjtën gjë, por vetëm në lidhje me trajtimin e gabimeve. Pikërisht për këtë do të flasim në postimin e ardhshëm.

Burimi: www.habr.com

Shto një koment