Postituste sari saidil Istio Service Mesh

Alustame postituste seeriat, mis tutvustavad mõningaid Istio Service Meshi paljudest võimalustest kombineerituna Red Hat OpenShifti ja Kubernetesiga.

Postituste sari saidil Istio Service Mesh

Esimene osa täna:

  • Selgitame Kubernetese külgkorvikonteinerite kontseptsiooni ja sõnastame selle postituste sarja juhtmotiivi: "te ei pea oma koodis midagi muutma".
  • Tutvustame Istio põhilist asja – marsruutimise reegleid. Kõik muud Istio funktsioonid on neile üles ehitatud, kuna just reeglid võimaldavad teil suunata liiklust mikroteenustesse, kasutades teenusekoodi väliseid YAML-faile. Kaalume ka Canary Deploymenti kasutuselevõtukava. Uusaasta boonus – 10 interaktiivset õppetundi Istiol


Varsti ilmuv teine ​​​​osa ütleb teile:

  • Kuidas Istio rakendab basseini väljatõmbamist koos kaitselülitiga ja demonstreerib, kuidas Istio võimaldab teil tasakaalustusahelast eemaldada surnud või halvasti töötava kambri.
  • Vaatame ka Circuit Breaker teemat esimesest postitusest, et näha, kuidas Istiot siin kasutada saab. Näitame teile, kuidas suunata liiklust ja käsitleda võrguvigu, kasutades YAML-i konfiguratsioonifaile ja terminali käske ilma vähimategi muudatusteta teenusekoodis.

Kolmas osa:

  • Lugu jälgimisest ja monitooringust, mis on Istiole juba sisse ehitatud või lihtsalt lisatavad. Näitame teile, kuidas kasutada selliseid tööriistu nagu Prometheus, Jaeger ja Grafana koos OpenShift skaleerimisega, et hõlpsalt hallata mikroteenuste arhitektuuri.
  • Liigume vigade jälgimise ja käsitlemise juurest nende tahtliku süsteemi sissetoomisele. Teisisõnu õpime, kuidas teha veasüsti ilma lähtekoodi muutmata, mis on testimise seisukohast väga oluline - kuna koodi enda selle jaoks muutes on oht, et tekivad täiendavad vead.

Lõpuks Istio Service Meshi viimases postituses:

  • Läheme pimedale poolele. Täpsemalt õpime kasutama Dark Launchi skeemi, kui kood juurutatakse ja testitakse otse tootmisandmetel, kuid see ei mõjuta kuidagi süsteemi tööd. Siin tuleb kasuks Istio võime liiklust jagada. Ja võimalus testida reaalajas tootmisandmetega, ilma et see mõjutaks kuidagi lahingusüsteemi tööd, on kõige veenvam kontrollimeetod.
  • Tuginedes Dark Launchile, näitame teile, kuidas kasutada Canary Deploymenti mudelit riski vähendamiseks ja uue koodi tootmisse toomise hõlbustamiseks. Canary Deployment ise pole kaugeltki uus, kuid Istio võimaldab teil seda skeemi rakendada lihtsalt lihtsate YAML-failidega.
  • Lõpuks näitame teile, kuidas kasutada Istio Egressi, et anda juurdepääs teenustele neile, kes on väljaspool teie klastreid, et kasutada Internetiga töötamisel Istio võimalusi.

Niisiis, siin me läheme...

Istio jälgimis- ja haldustööriistad – kõik, mida vajate mikroteenuste korraldamiseks teenindusvõrgus teenindusvõrk.

Mis on Istio Service Mesh

Teenusvõrk rakendab teenuserühma jaoks selliseid funktsioone nagu liikluse jälgimine, juurdepääsu kontroll, avastamine, turvalisus, tõrketaluvus ja muud kasulikud asjad. Istio võimaldab seda kõike teha ilma teenuste endi koodi vähimategi muudatusteta. Mis on maagia saladus? Istio lisab igale teenusele oma puhverserveri külgkorvi konteineri kujul (külgkorv on mootorratta külgkorv), misjärel kogu selle teenuse liiklus läbib puhverserveri, mis juhindudes määratud reeglitest otsustab, kuidas, millal ja kas see liiklus peaks üldse teenindusse jõudma. Istio võimaldab rakendada ka täiustatud DevOpsi tehnikaid, nagu kanaari juurutamine, kaitselülitid, rikkesüst ja palju muud.

Kuidas Istio konteinerite ja Kubernetesega töötab

Istio teenindusvõrk on külgkorvi rakendus kõigest, mis on vajalik mikroteenuste loomiseks ja haldamiseks: jälgimine, jälgimine, kaitselülitid, marsruutimine, koormuse tasakaalustamine, vea sisestamine, korduskatsed, ajalõpud, peegeldamine, juurdepääsukontroll, kiiruse piiramine ja palju muud. Ja kuigi tänapäeval on palju teeke nende funktsioonide otse koodis rakendamiseks, saate Istio abil saada kõik samad asjad ilma oma koodis midagi muutmata.

Külgkorvi mudeli järgi jookseb Istio Linuxi konteineris, mis asub ühes Kubernetes-pod kontrollitud teenusega ning sisestab ja ekstraheerib funktsionaalsust ja teavet vastavalt antud konfiguratsioonile. Rõhutame, et see on teie enda konfiguratsioon ja see elab väljaspool teie koodi. Seetõttu muutub kood palju lihtsamaks ja lühemaks.

Oluline on ka see, et mikroteenuste töökomponent ei osutu kuidagi koodi endaga seotud, mis tähendab, et nende toimimise saab turvaliselt IT-spetsialistidele üle anda. Tõepoolest, miks peaks arendaja vastutama kaitselülitite ja rikete süstimise eest? Reageerige jah, aga kas neid töödelda ja luua? Kui eemaldate kõik selle koodist, saavad programmeerijad täielikult keskenduda rakenduse funktsionaalsusele. Ja kood ise muutub lühemaks ja lihtsamaks.

Teenindusvõrk

Istio, mis rakendab funktsioone mikroteenuste haldamiseks väljaspool nende koodi, on teenindusvõrgu kontseptsioon. Teisisõnu, see on koordineeritud rühm ühest või mitmest kahendfailist, mis moodustavad võrgufunktsioonide võrgu.

Kuidas Istio mikroteenustega töötab

Selline näeb koosmõjus välja külgkorvikonteinerite töö Kubernetes и Minivahetus linnulennult: käivitage Minishifti eksemplar, looge projekt Istio jaoks (nimetagem seda "istio-süsteemiks"), installige ja käivitage kõik Istioga seotud komponendid. Seejärel lisate projektide ja kaustade loomisel oma juurutustesse konfiguratsiooniteave ja teie kaustad hakkavad Istiot kasutama. Lihtsustatud diagramm näeb välja selline:

Postituste sari saidil Istio Service Mesh

Nüüd saate Istio seadeid muuta, et korraldada näiteks rikkesüsti, tuge Kanaari juurutamine või muid Istio funktsioone – ja seda kõike ilma rakenduste endi koodi puudutamata. Oletame, et soovite suunata kogu veebiliikluse oma suurima kliendi (Foo Corporation) kasutajatelt saidi uude versiooni. Selleks looge lihtsalt Istio marsruutimisreegel, mis otsib kasutaja ID-st @foocorporation.com ja suunab vastavalt ümber. Kõigi teiste kasutajate puhul ei muutu midagi. Vahepeal testite rahulikult saidi uut versiooni. Ja pange tähele, et selleks ei pea te arendajaid üldse kaasama.

Ja kas peate selle eest kallilt maksma?

Üldse mitte. Istio on üsna kiire ja sisse kirjutatud Go ja tekitab väga vähe üldkulusid. Lisaks kompenseerib võimaliku võrgutootlikkuse languse arendaja tootlikkuse tõus. Vähemalt teoreetiliselt: ärge unustage, et arendajate aeg on väärtuslik. Tarkvarakulude osas on Istio avatud lähtekoodiga tarkvara, nii et saate seda tasuta hankida ja kasutada.

Õppige seda ise

Red Hat Developer Experience Team on välja töötanud põhjaliku praktilise töö juhtpositsiooni autor Istio (inglise keeles). See töötab Linuxis, MacOS-is ja Windowsis ning kood on saadaval Javas ja Node.js-s.

10 interaktiivset õppetundi Istiol

1. plokk – algajatele

Istio tutvustus
30 minutit
Tutvume Service Meshiga, õpime installima Istio OpenShift Kubernetese klastris.
Alustada

Mikroteenuste juurutamine Istios
30 minutit
Kasutame Istiot kolme mikroteenuse juurutamiseks koos Spring Booti ja Vert.x-iga.
Alustada

Plokk 2 – kesktase

Jälgimine ja jälgimine Istios
60 minutit
Uurime Prometheuse ja Grafana kaudu Istio sisseehitatud jälgimistööriistu, kohandatud mõõdikuid ja OpenTracingut.
Alustada

Lihtne marsruutimine Istios
60 minutit
Siit saate teada, kuidas lihtsate reeglite abil Istios marsruutimist hallata.
Alustada

Täpsemad marsruutimise reeglid
60 minutit
Vaatame Istio nutikat marsruutimist, juurdepääsu juhtimist, koormuse tasakaalustamist ja kiiruse piiramist.
Alustada

Plokk 3 – kogenud kasutaja

Vea sissepritse Istios
60 minutit
Uurime hajutatud rakenduste rikete käsitlemise stsenaariume, HTTP-vigade ja võrguviivituste loomist ning õpime kasutama keskkonna taastamiseks kaosetehnoloogiat.
Alustada

Kaitselüliti Istios
30 minutit
Paigaldame Siege'i stressitestikohtade jaoks ja õpime, kuidas tagada taustasüsteemi tõrketaluvus korduste, kaitselülitite ja basseini väljatõmbe abil.
Alustada

Egress ja Istio
10 minutit
Kasutame väljumismarsruute, et luua reegleid siseteenuste interaktsiooniks väliste API-de ja teenustega.
Alustada

Istio ja Kiali
15 minutit
Õppige kasutama Kiali, et saada ülevaade teenindusvõrgust ning uurida päringu- ja andmevoogusid.
Alustada

Vastastikune TLS Istios
15 minutit
Loome Istio Gateway ja VirtualService'i, seejärel uurime üksikasjalikult vastastikust TLS-i (mTLS) ja selle seadeid.
Alustada

Plokk 3.1 – Deep Dive: Istio Service Mesh mikroteenuste jaoks

Postituste sari saidil Istio Service Mesh
Millest see raamat räägib:

  • Mis on teenindusvõrk?
  • Istio süsteem ja selle roll mikroteenuste arhitektuuris.
  • Istio kasutamine järgmiste probleemide lahendamiseks:
    • Veataluvus;
    • Marsruutimine;
    • Kaose testimine;
    • Turvalisus;
    • Telemeetria kogumine jälgede, mõõdikute ja Grafana abil.

Raamatu allalaadimiseks

Artiklisari teenindusvõrkude ja Istio kohta

Proovige ise järele

See postituste seeria ei ole mõeldud Istio maailma sügavaks sukeldumiseks. Tahame teile lihtsalt seda kontseptsiooni tutvustada ja võib-olla inspireerida teid Istiot ise proovima. Selle tegemine on täiesti tasuta ja Red Hat pakub kõiki tööriistu, mida vajate OpenShifti, Kubernetese, Linuxi konteinerite ja Istio kasutamise alustamiseks, sealhulgas: Red Hat Developer OpenShift konteineriplatvorm, meie Istio teejuht ja muud meie ressursid mikrosait teenuses Service Mesh. Ärge viivitage, alustage juba täna!

Istio marsruutimise reeglid: suunab teenusepäringud sinna, kuhu nad peavad jõudma

avatud vahetus и Kubernetes adresseerimisel suurepäraselt hakkama mikroteenused suunatakse vajalikesse kaunadesse. See on üks Kubernetese olemasolu põhjusi – marsruutimine ja koormuse tasakaalustamine. Aga mis siis, kui vajate peenemat ja keerukamat marsruutimist? Näiteks mikroteenuse kahe versiooni samaaegseks kasutamiseks. Kuidas saavad Istio marsruudireeglid siin abiks olla?

Marsruudireeglid on reeglid, mis tegelikult määravad marsruudi valiku. Sõltumata süsteemi keerukusest jääb nende reeglite üldine tööpõhimõte lihtsaks: päringud suunatakse kindlate parameetrite ja HTTP päise väärtuste alusel.
Vaatame näiteid:

Kubernetese vaikimisi: triviaalne "50/50"

Meie näites näitame, kuidas OpenShiftis kasutada korraga kahte mikroteenuse versiooni, nimetagem neid v1 ja v2. Iga versioon töötab oma Kubernetese kaustas ja vaikimisi töötab see ühtlaselt tasakaalustatud ümberringi marsruutimise teel. Iga pod saab oma osa päringuid selle mikroteenuse eksemplaride ehk teisisõnu koopiate arvu alusel. Istio võimaldab seda saldot käsitsi muuta.

Oletame, et juurutasime OpenShiftis kaks soovitusteenuse versiooni, soovitus-v1 ja soovitus-v2.
Joonisel fig. Joonis 1 näitab, et kui iga teenus on esindatud ühes eksemplaris, vahelduvad päringud nende vahel ühtlaselt: 1-2-1-2-... Kubernetese marsruutimine toimib vaikimisi järgmiselt:

Postituste sari saidil Istio Service Mesh

Kaalutud jaotus versioonide vahel

Joonisel fig. Joonis 2 näitab, mis juhtub, kui tõstate teenuse v2 koopiate arvu ühelt kahele (seda tehakse käsuga oc skaalal —replicas=2 deployment/recommendation-v2). Nagu näete, on v1 ja v2 vahelised taotlused nüüd jagatud suhtega üks-kolm: 1-2-2-1-2-2-…:

Postituste sari saidil Istio Service Mesh

Istio abil versiooni ignoreerimine

Istio abil on lihtne taotluste jaotust meile vajalikul viisil muuta. Näiteks saatke kogu liiklus ainult soovitusele-v1, kasutades järgmist Istio yaml-faili:

Postituste sari saidil Istio Service Mesh

Siin peate sellele tähelepanu pöörama: kaunad valitakse etikettide järgi. Meie näide kasutab silti v1. Parameeter "kaal: 100" tähendab, et 100% liiklusest suunatakse kõikidesse v1-märgisega teenindusplokkidesse.

Direktiivi jaotus versioonide vahel (Canary Deployment)

Järgmisena saate kaaluparameetri abil suunata liikluse mõlemasse kausta, jättes tähelepanuta kummaski neist töötavate mikroteenuste eksemplaride arvu. Näiteks siin suuname 90% liiklusest versioonile v1 ja 10% v2-le:

Postituste sari saidil Istio Service Mesh

Eraldi marsruutimine mobiilikasutajatele

Kokkuvõtteks näitame, kuidas sundida mobiilikasutajate liiklust suunama teenusesse v2 ja kõiki teisi teenusesse v1. Selleks kasutame tavaavaldisi, et analüüsida kasutajaagendi väärtust päringu päises:

Postituste sari saidil Istio Service Mesh

Nüüd on sinu kord

Päiste sõelumise regulaaravaldiste näide peaks motiveerima teid leidma Istio marsruutimisreeglite oma kasutusvõimalusi. Lisaks on siinsed võimalused üsna ulatuslikud, kuna päiseväärtusi saab moodustada rakenduse lähtekoodis.

Ja pidage meeles, et Ops, mitte Dev

Kõik, mida ülaltoodud näidetes näitasime, tehakse ilma lähtekoodi vähimategi muudatusteta, välja arvatud juhtudel, kui on vaja genereerida eripäringu päised. Istio on kasulik nii arendajatele, kes saavad seda kasutada näiteks testimise etapis, kui ka IT-süsteemide käitamise spetsialistidele, kellele see on tootmises palju abiks.

Nii et kordame selle postituste sarja juhtmotiivi: te ei pea oma koodis midagi muutma. Pole vaja luua uusi pilte ega käivitada uusi konteinereid. Seda kõike rakendatakse väljaspool koodi.

Kasuta oma kujutlusvõimet

Kujutage vaid ette päise analüüsi võimalusi regulaaravaldiste abil. Soovite suunata oma suurima kliendi oma eriversiooni juurde mikroteenused? Lihtsalt! Kas vajate Chrome'i brauseri jaoks eraldi versiooni? Pole probleemi! Saate liiklust suunata peaaegu iga tunnuse järgi.

Proovige ise järele

Istio, Kubernetese ja OpenShifti kohta lugemine on üks asi, aga miks mitte kõike ise puudutada? Meeskond Red Hati arendajaprogramm on koostanud üksikasjaliku juhendi (inglise keeles), mis aitab teil neid tehnoloogiaid võimalikult kiiresti omandada. Kasutusjuhend on samuti 100% avatud lähtekoodiga, seega postitatakse see avalikku omandisse. Fail töötab macOS-is, Linuxis ja Windowsis ning lähtekood on saadaval Java ja node.js versioonides (varsti on saadaval ka versioonid teistes keeltes). Lihtsalt avage oma brauseris vastav git-hoidla Red Hat arendaja demo.

Järgmises postituses: lahendame probleemid ilusti

Täna nägite, mida Istio marsruutimise reeglid saavad teha. Kujutage nüüd ette sama asja, kuid ainult seoses vigade käsitlemisega. Täpselt sellest räägime järgmises postituses.

Allikas: www.habr.com

Lisa kommentaar