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

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 .
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 -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öö Đž 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:

NĂŒĂŒd saate Istio seadeid muuta, et korraldada nĂ€iteks rikkesĂŒsti, tuge 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 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öö 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.
Mikroteenuste juurutamine Istios
30 minutit
Kasutame Istiot kolme mikroteenuse juurutamiseks koos Spring Booti ja Vert.x-iga.
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.
Lihtne marsruutimine Istios
60 minutit
Siit saate teada, kuidas lihtsate reeglite abil Istios marsruutimist hallata.
TĂ€psemad marsruutimise reeglid
60 minutit
Vaatame Istio nutikat marsruutimist, juurdepÀÀsu juhtimist, koormuse tasakaalustamist ja kiiruse piiramist.
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.
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.
Egress ja Istio
10 minutit
Kasutame vÀljumismarsruute, et luua reegleid siseteenuste interaktsiooniks vÀliste API-de ja teenustega.
Istio ja Kiali
15 minutit
Ăppige kasutama Kiali, et saada ĂŒlevaade teenindusvĂ”rgust ning uurida pĂ€ringu- ja andmevoogusid.
Vastastikune TLS Istios
15 minutit
Loome Istio Gateway ja VirtualService'i, seejĂ€rel uurime ĂŒksikasjalikult vastastikust TLS-i (mTLS) ja selle seadeid.
Plokk 3.1 â Deep Dive: Istio Service Mesh mikroteenuste jaoks

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.
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: , ja muud meie ressursid . Ărge viivitage, alustage juba tĂ€na!
Istio marsruutimise reeglid: suunab teenusepÀringud sinna, kuhu nad peavad jÔudma
Đž adresseerimisel suurepĂ€raselt hakkama 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:

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-âŠ:

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:

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:

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:

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 ? 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 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. .
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
