Įrašų serija „Istio Service Mesh“.

Pradedame įrašų seriją, kurioje pristatomos kai kurios iš daugelio „Istio Service Mesh“ galimybių, kai jos derinamos su „Red Hat OpenShift“ ir „Kubernetes“.

Įrašų serija „Istio Service Mesh“.

Pirma dalis šiandien:

  • Paaiškinkime Kubernetes šoninių priekabų konteinerių koncepciją ir suformuluosime šios pranešimų serijos leitmotyvą: „jums nereikia nieko keisti savo kode“.
  • Supažindinkime su esminiu Istio dalyku – maršruto parinkimo taisyklėmis. Visos kitos „Istio“ funkcijos yra sukurtos ant jų, nes būtent taisyklės leidžia nukreipti srautą į mikropaslaugas, naudojant YAML failus, esančius už paslaugos kodo. Taip pat svarstome Kanarų dislokavimo schemą. Naujųjų metų premija – 10 interaktyvių pamokų „Istio“.


Netrukus pasirodysianti antroji dalis jums pasakys:

  • Kaip Istio įgyvendina baseino išstūmimą kartu su grandinės pertraukikliu ir parodys, kaip Istio leidžia iš balansavimo grandinės pašalinti negyvą arba prastai veikiantį bloką.
  • Taip pat pažvelgsime į „Circuit Breaker“ temą iš pirmojo įrašo, kad pamatytume, kaip čia galima naudoti „Istio“. Parodysime, kaip nukreipti srautą ir tvarkyti tinklo klaidas naudojant YAML konfigūracijos failus ir terminalo komandas be menkiausių paslaugos kodo pakeitimų.

Trečia dalis:

  • Istorija apie sekimą ir stebėjimą, kurie jau yra integruoti arba lengvai pridedami prie Istio. Parodysime, kaip naudoti tokius įrankius kaip „Prometheus“, „Jaeger“ ir „Grafana“ kartu su „OpenShift“ mastelio keitimu, kad būtų galima lengvai valdyti mikro paslaugų architektūras.
  • Nuo klaidų stebėjimo ir tvarkymo pereiname prie sąmoningo jų įvedimo į sistemą. Kitaip tariant, išmokstame atlikti gedimų injekciją nekeičiant šaltinio kodo, o tai labai svarbu testavimo požiūriu – kadangi tam pakeitus patį kodą, kyla papildomų klaidų rizika.

Galiausiai paskutiniame „Istio Service Mesh“ įraše:

  • Eikime į Tamsiąją pusę. Tiksliau, išmoksime naudoti Dark Launch schemą, kai kodas yra įdiegtas ir testuojamas tiesiogiai ant gamybos duomenų, tačiau niekaip neįtakoja sistemos veikimo. Čia praverčia Istio galimybė padalyti srautą. O galimybė išbandyti gyvus gamybos duomenis niekaip nepaveikiant kovos sistemos veikimo yra įtikinamiausias patikrinimo būdas.
  • Remdamiesi „Dark Launch“, parodysime, kaip naudoti „Canary Deployment“ modelį, kad sumažintume riziką ir palengvintume naujo kodo įdiegimą į gamybą. Pats „Canary Deployment“ toli gražu nėra naujas, tačiau „Istio“ leidžia įgyvendinti šią schemą naudojant tik paprastus YAML failus.
  • Galiausiai parodysime, kaip naudoti Istio Egress, kad suteiktumėte prieigą prie paslaugų tiems, kurie nepriklauso jūsų klasteriams, kad dirbdami su internetu galėtų naudotis Istio galimybėmis.

Taigi, mes einame...

Istio stebėjimo ir valdymo įrankiai – viskas, ko reikia norint suorganizuoti mikropaslaugas paslaugų tinkle aptarnavimo tinklelis.

Kas yra „Istio Service Mesh“.

Paslaugų tinklelis įgyvendina tokias funkcijas kaip eismo stebėjimas, prieigos kontrolė, aptikimas, saugumas, atsparumas gedimams ir kiti paslaugų grupei naudingi dalykai. „Istio“ leidžia visa tai padaryti be menkiausių pačių paslaugų kodo pakeitimų. Kokia yra magijos paslaptis? „Istio“ prie kiekvienos paslaugos prideda savo įgaliotąjį serverį šoninės priekabos konteinerio pavidalu (šoninė priekaba yra motociklo priekaba), po kurio visas srautas į šią paslaugą eina per tarpinį serverį, kuris, vadovaudamasis nurodyta politika, nusprendžia, kaip, kada ir ar šis srautas. turėtų išvis pasiekti tarnybą. „Istio“ taip pat leidžia įdiegti pažangias „DevOps“ technologijas, tokias kaip „Canary“ diegimas, grandinės pertraukikliai, gedimų įpurškimas ir daugelis kitų.

Kaip „Istio“ dirba su konteineriais ir „Kubernetes“.

„Istio“ paslaugų tinklelis yra visko, ko reikia norint sukurti ir valdyti mikropaslaugas, įgyvendinimas: stebėjimas, sekimas, grandinės pertraukikliai, maršruto parinkimas, apkrovos balansavimas, gedimų įpurškimas, pakartotiniai bandymai, laikas, atspindėjimas, prieigos kontrolė, greičio ribojimas ir daug daugiau. Ir nors šiandien yra daugybė bibliotekų, skirtų šioms funkcijoms įgyvendinti tiesiogiai kode, naudodami Istio galite gauti visus tuos pačius dalykus nieko nekeisdami savo kode.

Pagal šoninio priekabos modelį Istio veikia Linux konteineryje, kuris yra viename Kubernetes-pod su kontroliuojama paslauga ir įveda bei ištraukia funkcionalumą ir informaciją pagal nurodytą konfigūraciją. Pabrėžiame, kad tai yra jūsų pačių konfigūracija ir ji veikia už jūsų kodo ribų. Todėl kodas tampa daug paprastesnis ir trumpesnis.

Svarbu ir tai, kad mikropaslaugų operacinis komponentas, pasirodo, niekaip nesusijęs su pačiu kodu, vadinasi, jų veikimas gali būti saugiai perduotas IT specialistams. Iš tiesų, kodėl kūrėjas turėtų būti atsakingas už grandinės pertraukiklius ir gedimų įvedimą? Reaguoti, taip, bet apdoroti juos ir sukurti? Jei visa tai pašalinsite iš kodo, programuotojai galės visą dėmesį skirti programos funkcionalumui. Ir pats kodas taps trumpesnis ir paprastesnis.

Serviso tinklelis

„Istio“, įgyvendinanti mikropaslaugų valdymo funkcijas už jų kodo ribų, yra „Service Mesh“ koncepcija. Kitaip tariant, tai yra koordinuota vieno ar kelių dvejetainių failų grupė, sudaranti tinklo funkcijų tinklelį.

Kaip „Istio“ dirba su mikropaslaugomis

Taip kartu atrodo šoninių priekabų konteinerių darbas Kubernetes и Mini pamainos Vaizdas iš paukščio skrydžio: paleiskite Minishift egzempliorių, sukurkite projektą Istio (vadinkime jį „istio-sistema“), įdiekite ir paleiskite visus su Istio susijusius komponentus. Tada kurdami projektus ir rinkinius pridedate konfigūracijos informaciją į diegimus, o pods pradeda naudoti „Istio“. Supaprastinta diagrama atrodo taip:

Įrašų serija „Istio Service Mesh“.

Dabar galite pakeisti Istio nustatymus, kad, pavyzdžiui, organizuotumėte gedimų injekciją, palaikymą Kanarų dislokavimas ar kitos Istio funkcijos – ir visa tai neliečiant pačių programų kodo. Tarkime, kad norite nukreipti visą žiniatinklio srautą iš didžiausio kliento („Foo Corporation“) naudotojų į naują svetainės versiją. Norėdami tai padaryti, tiesiog sukurkite Istio maršruto parinkimo taisyklę, kuri naudotojo ID ieškos @foocorporation.com ir atitinkamai peradresuos. Visiems kitiems vartotojams niekas nepasikeis. Tuo tarpu ramiai išbandysite naująją svetainės versiją. Ir atminkite, kad tam visai nereikia įtraukti kūrėjų.

Ir ar teks už tai brangiai mokėti?

Visai ne. Istio yra gana greitas ir parašytas Go ir sukuria labai mažai papildomų išlaidų. Be to, galimą interneto produktyvumo praradimą kompensuoja kūrėjų produktyvumo padidėjimas. Bent jau teoriškai: nepamirškite, kad kūrėjų laikas yra vertingas. Kalbant apie programinės įrangos išlaidas, Istio yra atvirojo kodo programinė įranga, todėl galite ją gauti ir naudoti nemokamai.

Įvaldyk pats

„Red Hat“ kūrėjų patirties komanda parengė išsamią praktinę patirtį vadovas pateikė Istio (anglų kalba). Jis veikia „Linux“, „MacOS“ ir „Windows“, o kodas yra „Java“ ir „Node.js“.

10 interaktyvių pamokų apie Istio

1 blokas – pradedantiesiems

Įvadas į Istio
30 minučių
Susipažinkime su „Service Mesh“, sužinokime, kaip įdiegti „Istio“ „OpenShift Kubernetes“ klasteryje.
Pradėk

Mikropaslaugų diegimas Istio mieste
30 minučių
Mes naudojame „Istio“, kad įdiegtume tris mikropaslaugas su „Spring Boot“ ir „Vert.x“.
Pradėk

2 blokas – vidutinis lygis

Stebėjimas ir sekimas Istio mieste
60 minučių
Išnagrinėsime „Istio“ integruotus stebėjimo įrankius, tinkintą metriką ir „OpenTracing“ naudodami „Prometheus“ ir „Grafana“.
Pradėk

Paprastas maršrutas Istio mieste
60 minučių
Sužinokite, kaip valdyti maršrutą „Istio“ naudodami paprastas taisykles.
Pradėk

Išplėstinės maršruto parinkimo taisyklės
60 minučių
Pažvelkime į „Istio“ išmanųjį maršruto parinkimą, prieigos kontrolę, apkrovos balansavimą ir greičio ribojimą.
Pradėk

3 blokas – pažengęs vartotojas

Gedimo įpurškimas Istio
60 minučių
Studijuojame paskirstytų programų gedimų valdymo scenarijus, sukuriame HTTP klaidas ir tinklo vėlavimus bei mokomės naudoti chaoso inžineriją aplinkai atkurti.
Pradėk

Grandinės pertraukiklis Istio mieste
30 minučių
Įdiegiame „Siege“ testavimo nepalankiausiomis sąlygomis svetaines ir mokomės, kaip užtikrinti vidinės sistemos gedimų toleranciją naudojant pakartojimus, grandinės pertraukiklį ir baseino išstūmimą.
Pradėk

Egress ir Istio
10 minučių
Mes naudojame išėjimo maršrutus, kad sukurtume vidinių paslaugų sąveikos su išorinėmis API ir paslaugomis taisykles.
Pradėk

Istio ir Kiali
15 minučių
Išmokite naudoti „Kiali“, kad gautumėte paslaugų tinklo apžvalgą ir tyrinėtumėte užklausų bei duomenų srautus.
Pradėk

Abipusis TLS Istio mieste
15 minučių
Sukuriame „Istio Gateway“ ir „VirtualService“, tada išsamiai tiriame abipusį TLS (mTLS) ir jo nustatymus.
Pradėk

3.1 blokas – gilus nardymas: „Istio Service Mesh“, skirtas mikropaslaugoms

Įrašų serija „Istio Service Mesh“.
Apie ka si knyga:

  • Kas yra paslaugų tinklelis?
  • Istio sistema ir jos vaidmuo mikro paslaugų architektūroje.
  • Istio naudojimas šioms problemoms išspręsti:
    • Gedimų tolerancija;
    • Maršrutas;
    • Chaoso testavimas;
    • Saugumas;
    • Telemetrijos rinkimas naudojant pėdsakus, metrikas ir Grafana.

Norėdami atsisiųsti knygą

Straipsnių serija apie paslaugų tinklelius ir Istio

Išbandykite save

Ši pranešimų serija nėra skirta giliai pasinerti į Istio pasaulį. Mes tiesiog norime jus supažindinti su koncepcija ir galbūt įkvėpti išbandyti Istio patiems. Tai padaryti visiškai nemokamai, o „Red Hat“ suteikia visus įrankius, kurių reikia norint pradėti naudoti „OpenShift“, „Kubernetes“, „Linux“ konteinerius ir „Istio“, įskaitant: „Red Hat“ kūrėjo „OpenShift“ konteinerių platforma, mūsų vadovas Istio ir kiti mūsų ištekliai mikro svetainė „Service Mesh“.. Nedelskite, pradėkite jau šiandien!

Istio maršruto parinkimo taisyklės: paslaugų užklausų nukreipimas ten, kur reikia

„OpenShift“ и Kubernetes puikiai atlieka kreipimosi darbą mikropaslaugos nukreipiama į reikiamas ankštis. Tai viena iš Kubernetes egzistavimo priežasčių – maršruto parinkimas ir apkrovos balansavimas. Bet ką daryti, jei jums reikia subtilesnio ir sudėtingesnio maršruto? Pavyzdžiui, vienu metu naudoti dvi mikropaslaugos versijas. Kuo čia gali padėti Istio maršruto taisyklės?

Maršruto taisyklės yra taisyklės, kurios iš tikrųjų lemia maršruto pasirinkimą. Nepriklausomai nuo sistemos sudėtingumo lygio, bendras šių taisyklių veikimo principas išlieka paprastas: užklausos nukreipiamos pagal tam tikrus parametrus ir HTTP antraštės reikšmes.
Pažiūrėkime į pavyzdžius:

Numatytasis „Kubernetes“: trivialus „50/50“

Mūsų pavyzdyje parodysime, kaip vienu metu naudoti dvi „OpenShift“ mikropaslaugos versijas, pavadinkime jas v1 ir v2. Kiekviena versija veikia savo „Kubernetes“ rinkinyje ir pagal numatytuosius nustatymus vykdo tolygiai subalansuotą apvalų maršrutą. Kiekvienas blokas gauna savo užklausų dalį pagal mikro paslaugų egzempliorių skaičių, kitaip tariant, kopijų. „Istio“ leidžia rankiniu būdu pakeisti šį balansą.

Tarkime, kad „OpenShift“ įdiegėme dvi rekomendacijos paslaugos versijas, rekomendacijos-v1 ir rekomendacijos-v2.
Fig. 1 paveiksle parodyta, kad kai kiekviena paslauga pateikiama viename egzemplioriuje, užklausos keičiasi tolygiai: 1-2-1-2-... Štai kaip Kubernetes maršrutizavimas veikia pagal numatytuosius nustatymus:

Įrašų serija „Istio Service Mesh“.

Svertinis paskirstymas tarp versijų

Fig. 2 paveiksle parodyta, kas atsitiks, jei padidinsite v2 paslaugų kopijų skaičių nuo vieno iki dviejų (tai daroma naudojant oc skalę —replicas=2 deployment/recommendation-v2 komanda). Kaip matote, užklausos tarp v1 ir v2 dabar yra padalintos santykiu vienas su trimis: 1-2-2-1-2-2-…:

Įrašų serija „Istio Service Mesh“.

Ignoruoti versiją naudojant Istio

„Istio“ leidžia lengvai pakeisti užklausų paskirstymą taip, kaip mums reikia. Pavyzdžiui, siųskite visą srautą tik į rekomendaciją-v1 naudodami šį Istio yaml failą:

Įrašų serija „Istio Service Mesh“.

Čia reikia atkreipti dėmesį į tai: ankštys parenkamos pagal etiketes. Mūsų pavyzdyje naudojama etiketė v1. Parametras „svoris: 100“ reiškia, kad 100 % srauto bus nukreipta į visus paslaugų blokus, turinčius v1 etiketę.

Direktyvos paskirstymas tarp versijų (Canary Deployment)

Tada naudodami svorio parametrą galite nukreipti srautą į abu blokus, nekreipdami dėmesio į kiekvienoje iš jų veikiančių mikro paslaugų egzempliorių skaičių. Pavyzdžiui, čia mes nukreipiame 90 % srauto į v1 ir 10 % į v2:

Įrašų serija „Istio Service Mesh“.

Atskiras maršrutas mobiliojo ryšio vartotojams

Pabaigoje parodysime, kaip priversti mobiliojo ryšio naudotojų srautą nukreipti į paslaugą v2, o visus kitus – į v1. Norėdami tai padaryti, naudojame įprastus posakius, kad analizuotume vartotojo agento reikšmę užklausos antraštėje:

Įrašų serija „Istio Service Mesh“.

Dabar tavo eilė

Pavyzdys su reguliariosiomis išraiškomis, skirtas analizuoti antraštes, turėtų paskatinti jus rasti Istio maršruto parinkimo taisyklių naudojimo būdus. Be to, galimybės čia yra gana plačios, nes antraštės reikšmes galima suformuoti programos šaltinio kode.

Ir atminkite, kad Ops, o ne Dev

Viskas, ką parodėme aukščiau esančiuose pavyzdžiuose, daroma be menkiausių šaltinio kodo pakeitimų, na, išskyrus tuos atvejus, kai reikia sugeneruoti specialių užklausų antraštes. Istio bus naudingas tiek kūrėjams, kurie, pavyzdžiui, galės juo naudotis testavimo etape, tiek IT sistemų eksploatavimo specialistams, kuriems labai pagelbės gamyboje.

Taigi pakartokime šios įrašų serijos leitmotyvą: jums nereikia nieko keisti savo kode. Nereikia kurti naujų vaizdų ar paleisti naujų konteinerių. Visa tai įgyvendinama už kodo ribų.

Pasitelk savo vaizduotę

Įsivaizduokite antraštės analizės galimybes naudojant reguliariąsias išraiškas. Norite nukreipti savo didžiausią klientą į specialią savo versiją mikropaslaugos? Lengvai! Reikia atskiros „Chrome“ naršyklės versijos? Jokiu problemu! Eismą galite nukreipti pagal beveik bet kurią charakteristiką.

Išbandykite save

Skaityti apie „Istio“, „Kubernetes“ ir „OpenShift“ yra viena, bet kodėl gi visko nepalietus pačiam? Komanda „Red Hat“ kūrėjų programa parengė išsamų vadovą (anglų kalba), kuris padės kuo greičiau įsisavinti šias technologijas. Vadovas taip pat yra 100% atviro kodo, todėl jis paskelbtas viešai. Failas veikia „MacOS“, „Linux“ ir „Windows“, o šaltinio kodas yra „Java“ ir „node.js“ versijose (versijos kitomis kalbomis netrukus pasirodys). Tiesiog atidarykite atitinkamą „git“ saugyklą savo naršyklėje Red Hat kūrėjo demonstracija.

Kitame įraše: mes gražiai išsprendžiame problemas

Šiandien matėte, ką gali padaryti Istio maršruto parinkimo taisyklės. Dabar įsivaizduokite tą patį, bet tik apie klaidų valdymą. Būtent apie tai kalbėsime kitame įraše.

Šaltinis: www.habr.com

Добавить комментарий