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ĂŒlgkorviga mudeli jĂ€rgi sĂ”idab Istio sisse Linux- konteiner, 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 Istio poolt (inglise keeles). See töötab edasi Linux, MacOS ja Windowsja kood on esitatud Java ja Node.js versioonides.

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 sari ei ole mĂ”eldud Istio maailma sĂŒvauuringuteks. Me lihtsalt tahame teile kontseptsiooni tutvustada ja ehk inspireerida teid Istiot ise proovima. See on tĂ€iesti tasuta ja Red Hat pakub kĂ”iki vajalikke tööriistu OpenShifti, Kubernetesega alustamiseks. Linux- konteinerid ja Istio, nimelt: 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 Olen koostanud ĂŒksikasjaliku juhendi (inglise keeles), mis aitab teil neid tehnoloogiaid vĂ”imalikult kiiresti omandada. Juhend on ka 100% avatud lĂ€htekoodiga, seega on see avalikult kĂ€ttesaadav. Fail töötab macOS, Linux Đž Windowsja lĂ€htekood on saadaval Javas ja Node.js-is (versioonid teistes keeltes on peagi tulemas). Lihtsalt avage oma brauseris vastav Giti repositoorium. 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

Ostke DDoS-kaitsega saitide jaoks usaldusvÀÀrne hostimine, VPS VDS-serverid đŸ”„ Osta usaldusvÀÀrne veebimajutus DDoS-kaitsega, VPS VDS serverid | ProHoster