Niz objav na Istio Service Mesh

Začenjamo s serijo objav, ki prikazujejo nekatere izmed številnih zmožnosti Istio Service Mesh v kombinaciji z Red Hat OpenShift in Kubernetes.

Niz objav na Istio Service Mesh

Prvi del, danes:

  • Razložimo koncept zabojnikov s prikolico Kubernetes in oblikujmo glavni motiv te serije objav: "ničesar vam ni treba spreminjati v kodi".
  • Predstavimo temeljno stvar Istia – pravila usmerjanja. Vse druge funkcije Istio so zgrajene na njih, saj so pravila tista, ki vam omogočajo usmerjanje prometa na mikrostoritve z uporabo datotek YAML zunaj storitvene kode. Razmišljamo tudi o shemi uvedbe Canary Deployment. Novoletni bonus – 10 interaktivnih lekcij na Istio


Drugi del, ki prihaja kmalu, vam bo povedal:

  • Kako Istio izvaja Pool Ejection v kombinaciji s Circuit Breaker in vam bo pokazal, kako vam Istio omogoča odstranitev mrtve ali slabo delujoče enote iz balansirnega tokokroga.
  • Ogledali si bomo tudi temo Circuit Breaker iz prve objave, da vidimo, kako lahko Istio uporabimo tukaj. Pokazali vam bomo, kako usmerjati promet in obravnavati omrežne napake z uporabo konfiguracijskih datotek YAML in terminalskih ukazov brez najmanjših sprememb kode storitve.

Tretji del:

  • Zgodba o sledenju in spremljanju, ki sta že vgrajena ali enostavno dodana v Istio. Pokazali vam bomo, kako uporabljati orodja, kot so Prometheus, Jaeger in Grafana, v kombinaciji s skaliranjem OpenShift za enostavno upravljanje arhitektur mikrostoritev.
  • Od spremljanja in obravnave napak preidemo na njihovo namerno vnašanje v sistem. Z drugimi besedami, naučimo se, kako narediti vbrizgavanje napak, ne da bi spremenili izvorno kodo, kar je zelo pomembno z vidika testiranja - če za to spremenite samo kodo, obstaja nevarnost vnosa dodatnih napak.

Nazadnje, v zadnji objavi na Istio Service Mesh:

  • Pojdimo na temno stran. Natančneje, naučili se bomo uporabljati shemo Dark Launch, ko je koda nameščena in testirana neposredno na produkcijskih podatkih, vendar na noben način ne vpliva na delovanje sistema. Tu pride prav Istiova sposobnost razdelitve prometa. In zmožnost testiranja na proizvodnih podatkih v živo, ne da bi kakor koli vplivali na delovanje bojnega sistema, je najbolj prepričljiva metoda preverjanja.
  • Na podlagi Dark Launch vam bomo pokazali, kako uporabiti model Canary Deployment za zmanjšanje tveganja in lažji prenos nove kode v proizvodnjo. Canary Deployment sam po sebi še zdaleč ni nov, vendar vam Istio omogoča implementacijo te sheme s preprostimi datotekami YAML.
  • Nazadnje vam bomo pokazali, kako uporabiti Istio Egress, da omogočite dostop do storitev tistim, ki so zunaj vaših gruč, da lahko uporabite zmogljivosti Istio pri delu z internetom.

Torej, gremo ...

Orodja za spremljanje in upravljanje Istio - vse, kar potrebujete za orkestriranje mikrostoritev v storitveni mreži servisna mreža.

Kaj je Istio Service Mesh

Storitvena mreža izvaja funkcije, kot so spremljanje prometa, nadzor dostopa, odkrivanje, varnost, toleranca napak in druge uporabne stvari za skupino storitev. Istio vam omogoča, da vse to storite brez najmanjših sprememb kode samih storitev. Kaj je skrivnost magije? Istio vsaki storitvi pripne svoj lastni proxy v obliki bočne prikolice (sidecar je stranska prikolica za motorna kolesa), nakar gre ves promet do te storitve skozi proxy, ki se na podlagi določenih politik odloči, kako, kdaj in ali bo ta promet bi moral sploh priti do servisa. Istio omogoča tudi implementacijo naprednih tehnik DevOps, kot so uvedbe Canary, odklopniki, vstavljanje napak in številne druge.

Kako Istio deluje s kontejnerji in Kubernetes

Storitveno omrežje Istio je stranska implementacija vsega, kar je potrebno za ustvarjanje in upravljanje mikrostoritev: spremljanje, sledenje, odklopniki, usmerjanje, uravnoteženje obremenitve, vstavljanje napak, ponovni poskusi, časovne omejitve, zrcaljenje, nadzor dostopa, omejevanje hitrosti in še veliko več. In čeprav je danes ogromno knjižnic za implementacijo teh funkcij neposredno v kodo, lahko z Istio dobite vse iste stvari, ne da bi karkoli spremenili v kodi.

Glede na model sidecar Istio deluje v vsebniku Linuxa, ki se nahaja v enem Kubernetes-pod z nadzorovano storitvijo in vnaša in ekstrahira funkcionalnost in informacije glede na dano konfiguracijo. Poudarjamo, da je to vaša lastna konfiguracija in živi zunaj vaše kode. Zato koda postane veliko enostavnejša in krajša.

Pomembno je tudi to, da se izkaže, da operativna komponenta mikrostoritev nikakor ni povezana s samo kodo, kar pomeni, da lahko njihovo delovanje varno prenesemo na IT strokovnjake. Zakaj bi moral biti razvijalec odgovoren za odklopnike in vnašanje napak? Reagirati, da, ampak jih obdelati in ustvariti? Če vse to odstranite iz kode, se bodo programerji lahko popolnoma osredotočili na funkcionalnost aplikacije. In sama koda bo postala krajša in preprostejša.

Servisna mreža

Istio, ki implementira funkcije za upravljanje mikrostoritev zunaj njihove kode, je koncept Service Mesh. Z drugimi besedami, to je usklajena skupina ene ali več binarnih datotek, ki tvorijo mrežo omrežnih funkcij.

Kako Istio deluje z mikrostoritvami

Takole izgleda delo zabojnikov z bočno prikolico v povezavi z Kubernetes и Minishift pogled iz ptičje perspektive: zaženite primerek Minishifta, ustvarite projekt za Istio (imenujmo ga »istio-sistem«), namestite in zaženite vse komponente, povezane z Istio. Nato, ko ustvarite projekte in pode, dodate informacije o konfiguraciji svojim uvedbam in vaši podi začnejo uporabljati Istio. Poenostavljen diagram je videti takole:

Niz objav na Istio Service Mesh

Zdaj lahko spremenite nastavitve Istio, da na primer organizirate vstavljanje napak, podporo Canary Deployment ali druge funkcije Istio - in vse to brez dotikanja kode samih aplikacij. Recimo, da želite preusmeriti ves spletni promet od uporabnikov vašega največjega odjemalca (Foo Corporation) na novo različico spletnega mesta. Če želite to narediti, preprosto ustvarite pravilo usmerjanja Istio, ki bo iskalo @foocorporation.com v uporabniškem ID-ju in ustrezno preusmerilo. Za vse ostale uporabnike se ne bo nič spremenilo. Medtem boste mirno preizkusili novo različico spletnega mesta. In upoštevajte, da vam za to sploh ni treba vključiti razvijalcev.

In boste morali za to drago plačati?

Sploh ne. Istio je precej hiter in je napisan v Go in ustvarja zelo malo režijskih stroškov. Poleg tega se morebitna izguba spletne produktivnosti izravna s povečanjem produktivnosti razvijalcev. Vsaj v teoriji: ne pozabite, da je čas razvijalcev dragocen. Kar zadeva stroške programske opreme, je Istio odprtokodna programska oprema, tako da jo lahko dobite in uporabljate brezplačno.

Obvladajte sami

Ekipa Red Hat Developer Experience Team je razvila poglobljeno praktično delo vodstvo avtor Istio (v angleščini). Deluje v sistemih Linux, MacOS in Windows, koda pa je na voljo v Javi in ​​Node.js.

10 interaktivnih lekcij na Istio

Blok 1 - Za začetnike

Uvod v Istio
30 minut
Spoznajmo Service Mesh, naučimo se namestiti Istio v gručo OpenShift Kubernetes.
Začnite

Uvajanje mikrostoritev v Istio
30 minut
Istio uporabljamo za uvajanje treh mikrostoritev s Spring Boot in Vert.x.
Začnite

Blok 2 – srednja stopnja

Spremljanje in sledenje v Istio
60 minut
Prek Prometheusa in Grafane bomo raziskali vgrajena orodja za spremljanje podjetja Istio, meritve po meri in OpenTracing.
Začnite

Preprosto usmerjanje v Istio
60 minut
Naučite se upravljati usmerjanje v Istio z uporabo preprostih pravil.
Začnite

Napredna pravila usmerjanja
60 minut
Oglejmo si Istiovo pametno usmerjanje, nadzor dostopa, uravnoteženje obremenitve in omejevanje hitrosti.
Začnite

Blok 3 – napredni uporabnik

Vbrizgavanje napak v Istio
60 minut
Preučujemo scenarije obravnave napak v porazdeljenih aplikacijah, ustvarjamo napake HTTP in omrežne zamude ter se učimo uporabljati inženiring kaosa za obnovitev okolja.
Začnite

Odklopnik v Istio
30 minut
Namestimo Siege za spletna mesta za testiranje izjemnih situacij in se naučimo, kako zagotoviti odpornost na napake v ozadju z uporabo ponovnih predvajanj, prekinjevalcev tokokrogov in izmeta iz bazena.
Začnite

Egress in Istio
10 minut
Izhodne poti uporabljamo za ustvarjanje pravil za interakcijo notranjih storitev z zunanjimi API-ji in storitvami.
Začnite

Istio in Kiali
15 minut
Naučite se uporabljati Kiali, da dobite pregled nad storitveno mrežo in raziščete zahteve in tokove podatkov.
Začnite

Vzajemni TLS v Istiu
15 minut
Ustvarimo Istio Gateway in VirtualService, nato podrobno preučimo medsebojni TLS (mTLS) in njegove nastavitve.
Začnite

Blok 3.1 – Deep Dive: Istio Service Mesh za mikrostoritve

Niz objav na Istio Service Mesh
O čem govori knjiga:

  • Kaj je servisna mreža?
  • Sistem Istio in njegova vloga v arhitekturi mikrostoritev.
  • Uporaba Istia za reševanje naslednjih težav:
    • Toleranca napak;
    • Usmerjanje;
    • Testiranje kaosa;
    • Varnost;
    • Zbiranje telemetrije z uporabo sledi, metrike in Grafana.

Če želite prenesti knjigo

Serija člankov o servisnih mrežah in Istio

Poskusite sami

Ta serija objav ni namenjena globokemu potopu v svet Istio. Želimo vam le predstaviti koncept in vas morda navdušiti, da sami preizkusite Istio. To je popolnoma brezplačno in Red Hat ponuja vsa orodja, ki jih potrebujete za začetek uporabe OpenShift, Kubernetes, vsebnikov Linux in Istio, vključno z: Kontejnerska platforma OpenShift za razvijalce Red Hat, naš vodnik po Istiu in drugih virov na našem mikrostran na Service Mesh. Ne odlašajte, začnite danes!

Pravila usmerjanja Istio: usmerjanje zahtev storitev, kamor morajo iti

openshift и Kubernetes opravi odlično delo naslavljanja mikrostoritve preusmerjen na zahtevane stroke. To je eden od razlogov za obstoj Kubernetesa – usmerjanje in uravnoteženje obremenitve. Kaj pa, če potrebujete bolj subtilno in sofisticirano usmerjanje? Na primer, za istočasno uporabo dveh različic mikrostoritve. Kako lahko Pravila poti Istio pomagajo pri tem?

Pravila poti so pravila, ki dejansko določajo izbiro poti. Ne glede na stopnjo kompleksnosti sistema ostaja splošno načelo delovanja teh pravil preprosto: zahteve so usmerjene na podlagi določenih parametrov in vrednosti glave HTTP.
Poglejmo si primere:

Privzeto za Kubernetes: trivialno "50/50"

V našem primeru bomo pokazali, kako hkrati uporabljati dve različici mikrostoritve v OpenShiftu, recimo jima v1 in v2. Vsaka različica se izvaja v lastnem paketu Kubernetes in privzeto izvaja enakomerno uravnoteženo krožno usmerjanje. Vsak pod prejme svoj delež zahtev glede na število svojih primerkov mikrostoritev, z drugimi besedami, replik. Istio vam omogoča, da to ravnotežje spremenite ročno.

Recimo, da smo na OpenShift uvedli dve različici naše storitve priporočil, priporočilo-v1 in priporočilo-v2.
Na sl. Slika 1 prikazuje, da ko je vsaka storitev predstavljena v enem primeru, se zahteve med njimi enakomerno izmenjujejo: 1-2-1-2-... Tako privzeto deluje usmerjanje Kubernetes:

Niz objav na Istio Service Mesh

Ponderirana porazdelitev med različicami

Na sl. Slika 2 prikazuje, kaj se zgodi, če povečate število replik storitve v2 z ene na dve (to naredite z ukazom oc scale —replicas=2 deployment/recommendation-v2). Kot lahko vidite, so zahteve med v1 in v2 zdaj razdeljene v razmerju ena proti tri: 1-2-2-1-2-2-…:

Niz objav na Istio Service Mesh

Prezri različico, ki uporablja Istio

Istio olajša spreminjanje porazdelitve zahtevkov na način, ki ga potrebujemo. Na primer, pošljite ves promet samo na priporočilo-v1 z uporabo naslednje datoteke Istio yaml:

Niz objav na Istio Service Mesh

Tukaj morate biti pozorni na to: stroki so izbrani glede na etikete. Naš primer uporablja oznako v1. Parameter »teža: 100« pomeni, da bo 100 % prometa usmerjenega na vse storitvene sklope, ki imajo oznako v1.

Distribucija direktive med različicami (razmestitev Canary)

Nato lahko s parametrom teže usmerite promet na oba sklopa, ne da bi upoštevali število primerkov mikrostoritev, ki se izvajajo v vsakem od njih. Na primer, tukaj usmerimo 90 % prometa na v1 in 10 % na v2:

Niz objav na Istio Service Mesh

Ločeno usmerjanje za mobilne uporabnike

Za zaključek bomo pokazali, kako prisiliti promet mobilnih uporabnikov, da se usmeri na storitev v2, vsi ostali pa na v1. Za to uporabimo regularne izraze za analizo vrednosti uporabniškega agenta v glavi zahteve:

Niz objav na Istio Service Mesh

Zdaj si ti na vrsti

Primer z regularnimi izrazi za razčlenjevanje glav bi vas moral motivirati, da poiščete lastne uporabe pravil usmerjanja Istio. Poleg tega so možnosti tukaj precej obsežne, saj je mogoče vrednosti glave oblikovati v izvorni kodi aplikacije.

In ne pozabite, da Ops, ne Dev

Vse, kar smo pokazali v zgornjih primerih, je narejeno brez najmanjših sprememb v izvorni kodi, razen v primerih, ko je treba ustvariti posebne glave zahtev. Istio bo uporaben tako za razvijalce, ki ga bodo na primer lahko uporabljali v fazi testiranja, kot za strokovnjake za delovanje IT sistemov, ki jim bo v veliko pomoč pri proizvodnji.

Torej ponovimo glavni motiv te serije objav: v kodi vam ni treba ničesar spreminjati. Ni potrebe po ustvarjanju novih slik ali lansiranju novih vsebnikov. Vse to je implementirano zunaj kode.

Uporabite svojo domišljijo

Samo predstavljajte si možnosti analize glave z uporabo regularnih izrazov. Želite svojo največjo stranko preusmeriti na posebno različico svojega mikrostoritve? Enostavno! Potrebujete ločeno različico za brskalnik Chrome? Brez problema! Promet lahko usmerite po skoraj vseh značilnostih.

Poskusite sami

Branje o Istio, Kubernetes in OpenShift je ena stvar, a zakaj se ne bi vsega dotaknili sami? Ekipa Program za razvijalce Red Hat je pripravil podroben vodnik (v angleškem jeziku), ki vam bo pomagal, da boste te tehnologije čim hitreje osvojili. Priročnik je tudi 100% odprtokoden, zato je javno objavljen. Datoteka deluje v sistemih macOS, Linux in Windows, izvorna koda pa je na voljo v različicah Java in node.js (različice v drugih jezikih bodo kmalu na voljo). Samo odprite ustrezno skladišče git v brskalniku Demo za razvijalce Red Hat.

V naslednji objavi: probleme rešujemo lepo

Danes ste videli, kaj zmorejo pravila usmerjanja Istio. Zdaj pa si predstavljajte isto stvar, vendar le v zvezi z obravnavanjem napak. Prav o tem bomo govorili v naslednji objavi.

Vir: www.habr.com

Dodaj komentar