Séria príspevkov na Istio Service Mesh

Začíname sériu príspevkov predstavujúcich niektoré z mnohých možností Istio Service Mesh v kombinácii s Red Hat OpenShift a Kubernetes.

Séria príspevkov na Istio Service Mesh

Prvá časť, dnes:

  • Vysvetlime si koncept kontajnerov postranných vozíkov Kubernetes a sformulujme leitmotív tejto série príspevkov: "v kóde nemusíte nič meniť".
  • Predstavme si základnú vec Istio – pravidlá smerovania. Všetky ostatné funkcie Istio sú postavené na nich, pretože sú to pravidlá, ktoré vám umožňujú nasmerovať návštevnosť na mikroslužby pomocou súborov YAML mimo kódu služby. Zvažujeme aj schému nasadenia Canary Deployment. Novoročný bonus – 10 interaktívnych lekcií na Istio


Druhá časť, ktorá príde čoskoro, vám povie:

  • Ako Istio implementuje Pool Ejection v kombinácii s Circuit Breaker a predvedie, ako vám Istio umožňuje odstrániť mŕtvy alebo slabo fungujúci modul z vyrovnávacieho okruhu.
  • Pozrieme sa tiež na tému Circuit Breaker z prvého príspevku, aby sme videli, ako sa tu dá použiť Istio. Ukážeme vám, ako smerovať prevádzku a riešiť chyby siete pomocou konfiguračných súborov YAML a príkazov terminálu bez najmenších zmien v servisnom kóde.

Časť tretia:

  • Príbeh o sledovaní a monitorovaní, ktoré sú už zabudované alebo jednoducho pridané do Istio. Ukážeme vám, ako používať nástroje ako Prometheus, Jaeger a Grafana v kombinácii so škálovaním OpenShift na jednoduchú správu architektúr mikroslužieb.
  • Prechádzame od monitorovania a spracovania chýb k ich zámernému zavádzaniu do systému. Inými slovami, naučíme sa, ako urobiť injekciu chýb bez zmeny zdrojového kódu, čo je veľmi dôležité z hľadiska testovania - pretože ak na to zmeníte samotný kód, existuje riziko zavedenia ďalších chýb.

Nakoniec v poslednom príspevku na Istio Service Mesh:

  • Poďme na Temnú stranu. Presnejšie povedané, naučíme sa používať schému Dark Launch, kedy je kód nasadený a testovaný priamo na produkčných dátach, no nijako neovplyvňuje chod systému. Tu je užitočná schopnosť Istio rozdeliť premávku. A schopnosť testovať na živých produkčných dátach bez toho, aby to akýmkoľvek spôsobom ovplyvnilo fungovanie bojového systému, je najpresvedčivejšou metódou overenia.
  • V nadväznosti na Dark Launch vám ukážeme, ako použiť model Canary Deployment na zníženie rizika a uľahčenie zavádzania nového kódu do produkcie. Samotné Canary Deployment nie je ani zďaleka nové, ale Istio vám umožňuje implementovať túto schému iba pomocou jednoduchých súborov YAML.
  • Nakoniec vám ukážeme, ako používať Istio Egress na poskytnutie prístupu k službám tým, ktorí sú mimo vašich klastrov, aby ste mohli využívať možnosti Istio pri práci s internetom.

Takže, ideme na to...

Nástroje na monitorovanie a správu Istio – všetko, čo potrebujete na organizáciu mikroslužieb v sieti služieb servisné pletivo.

Čo je Istio Service Mesh

Sieť služieb implementuje funkcie, ako je monitorovanie prevádzky, riadenie prístupu, zisťovanie, bezpečnosť, odolnosť voči chybám a ďalšie užitočné veci pre skupinu služieb. To všetko vám Istio umožňuje bez najmenších zmien v kóde samotných služieb. Aké je tajomstvo mágie? Istio pripojí ku každej službe svoj vlastný proxy vo forme kontajnera postranného vozíka (sajdkára je postranný vozík pre motocykle), po ktorom všetka návštevnosť tejto služby prechádza cez proxy, ktorý na základe špecifikovaných pravidiel rozhoduje o tom, ako, kedy a či bude táto prevádzka by sa mal k službe vôbec dostať. Istio tiež umožňuje implementovať pokročilé techniky DevOps, ako sú nasadenie kanárikov, ističe, vstrekovanie porúch a mnoho ďalších.

Ako Istio pracuje s kontajnermi a Kubernetes

Istio service mesh je postranná implementácia všetkého potrebného na vytváranie a správu mikroslužieb: monitorovanie, sledovanie, ističe, smerovanie, vyrovnávanie záťaže, vstrekovanie porúch, opakované pokusy, časové limity, zrkadlenie, riadenie prístupu, obmedzovanie rýchlosti a mnoho ďalších. A hoci dnes existuje množstvo knižníc na implementáciu týchto funkcií priamo v kóde, s Istio môžete získať všetky rovnaké veci bez toho, aby ste čokoľvek menili vo svojom kóde.

Podľa modelu postranného vozíka Istio beží v linuxovom kontajneri, ktorý je umiestnený v jednom Kubernetes-pod s riadenou službou a vstrekuje a extrahuje funkčnosť a informácie podľa danej konfigurácie. Zdôrazňujeme, že toto je vaša vlastná konfigurácia a žije mimo vášho kódu. Preto sa kód stáva oveľa jednoduchším a kratším.

Dôležité je aj to, že prevádzková zložka mikroslužieb nie je nijako spojená so samotným kódom, čo znamená, že ich fungovanie možno bezpečne preniesť na IT špecialistov. Prečo by mal byť vývojár zodpovedný za ističe a poruchové vstrekovanie? Reagovať áno, ale spracovať ich a vytvoriť? Ak toto všetko z kódu odstránite, programátori sa budú môcť plne sústrediť na funkčnosť aplikácie. A samotný kód bude kratší a jednoduchší.

Servisné pletivo

Istio, ktorý implementuje funkcie na správu mikroslužieb mimo ich kódu, je konceptom Service Mesh. Inými slovami, je to koordinovaná skupina jednej alebo viacerých binárnych súborov, ktoré tvoria sieť sieťových funkcií.

Ako Istio pracuje s mikroslužbami

Takto vyzerá práca kontajnerov sajdkár v spojení s Kubernetes и Minizmena pohľad z vtáčej perspektívy: spustite inštanciu Minishift, vytvorte projekt pre Istio (nazvime ho „istio-systém“), nainštalujte a spustite všetky komponenty súvisiace s Istio. Potom, keď vytvoríte projekty a moduly, pridáte informácie o konfigurácii do svojich nasadení a vaše moduly začnú používať Istio. Zjednodušený diagram vyzerá takto:

Séria príspevkov na Istio Service Mesh

Teraz môžete zmeniť nastavenia Istio, aby ste napríklad organizovali vkladanie chýb, podporu Kanárske nasadenie alebo ďalšie funkcie Istio – a to všetko bez toho, aby ste sa dotkli kódu samotných aplikácií. Povedzme, že chcete presmerovať všetok webový prenos od používateľov vášho najväčšieho klienta (Foo Corporation) na novú verziu stránky. Ak to chcete urobiť, jednoducho vytvorte pravidlo smerovania Istio, ktoré v ID používateľa vyhľadá @foocorporation.com a podľa toho presmeruje. Pre všetkých ostatných používateľov sa nič nezmení. Vy si zatiaľ pokojne otestujete novú verziu stránky. A všimnite si, že na to vôbec nemusíte zapájať vývojárov.

A budete za to musieť draho zaplatiť?

Vôbec nie. Istio je pomerne rýchly a je napísaný Go a vytvára veľmi malú réžiu. Okrem toho je možná strata online produktivity kompenzovaná zvýšením produktivity vývojárov. Aspoň teoreticky: nezabúdajte, že čas vývojárov je cenný. Pokiaľ ide o náklady na softvér, Istio je softvér s otvoreným zdrojovým kódom, takže ho môžete získať a používať zadarmo.

Zvládnite to sami

Red Hat Developer Experience Team vyvinul hĺbkový praktický návod sprievodca od Istio (v angličtine). Beží na Linuxe, MacOS a Windows a kód je dostupný v Jave a Node.js.

10 interaktívnych lekcií na Istio

Blok 1 - Pre začiatočníkov

Úvod do Istio
30 minút
Zoznámime sa so službou Service Mesh, naučíme sa, ako nainštalovať Istio do klastra OpenShift Kubernetes.
Začnite

Nasadenie mikroslužieb v Istio
30 minút
Istio používame na nasadenie troch mikroslužieb so Spring Boot a Vert.x.
Začnite

Blok 2 – stredná úroveň

Monitorovanie a sledovanie v Istio
60 minút
Preskúmame vstavané monitorovacie nástroje Istio, vlastné metriky a OpenTracing cez Prometheus a Grafana.
Začnite

Jednoduché smerovanie v Istio
60 minút
Zistite, ako spravovať smerovanie v Istio pomocou jednoduchých pravidiel.
Začnite

Pokročilé pravidlá smerovania
60 minút
Poďme sa pozrieť na Istio inteligentné smerovanie, riadenie prístupu, vyrovnávanie záťaže a obmedzovanie rýchlosti.
Začnite

Blok 3 – pokročilý používateľ

Fault Injection в Istio
60 minút
Študujeme scenáre riešenia porúch v distribuovaných aplikáciách, vytváranie chýb HTTP a oneskorenia siete a učíme sa používať chaosové inžinierstvo na obnovu prostredia.
Začnite

Istič v Istiu
30 minút
Inštalujeme Siege pre stránky záťažového testovania a naučíme sa, ako zabezpečiť odolnosť voči chybám na backende pomocou opakovania, ističa a vysunutia bazéna.
Začnite

Egress a Istio
10 minút
Egress routes používame na vytváranie pravidiel pre interakciu interných služieb s externými API a službami.
Začnite

Istio a Kiali
15 minút
Naučte sa používať Kiali, aby ste získali prehľad o sieti služieb a preskúmali toky požiadaviek a údajov.
Začnite

Vzájomné TLS v Istio
15 minút
Vytvárame Istio Gateway a VirtualService, následne podrobne študujeme vzájomné TLS (mTLS) a jeho nastavenia.
Začnite

Blok 3.1 – Deep Dive: Istio Service Mesh pre mikroslužby

Séria príspevkov na Istio Service Mesh
O čom je tá kniha:

  • Čo je to servisná sieť?
  • Systém Istio a jeho úloha v architektúre mikroslužieb.
  • Použitie Istio na vyriešenie nasledujúcich problémov:
    • Odolnosť proti chybám;
    • Smerovanie;
    • Testovanie chaosu;
    • zabezpečenia;
    • Zber telemetrie pomocou stôp, metrík a Grafany.

Na stiahnutie knihy

Séria článkov o servisných sieťach a Istio

Vyskúšajte si to sami

Cieľom tejto série príspevkov nie je poskytnúť hlboký ponor do sveta Istio. Chceme vám len predstaviť tento koncept a možno vás inšpirovať, aby ste si Istio vyskúšali na vlastnej koži. Je to úplne zadarmo a Red Hat poskytuje všetky nástroje, ktoré potrebujete, aby ste mohli začať s OpenShift, Kubernetes, Linux kontajnermi a Istio, vrátane: Red Hat Developer OpenShift Container Platform, náš sprievodca po Istio a ďalšie zdroje na našej stránke microsite na Service Mesh. Neváhajte, začnite už dnes!

Pravidlá smerovania Istio: smerovanie požiadaviek na služby tam, kde je potrebné

openshift и Kubernetes robiť skvelú prácu pri oslovovaní mikroslužby smerované do požadovaných modulov. To je jeden z dôvodov existencie Kubernetes – smerovanie a vyvažovanie záťaže. Čo ak však potrebujete jemnejšie a sofistikovanejšie smerovanie? Napríklad na súčasné používanie dvoch verzií mikroslužby. Ako tu môžu pomôcť pravidlá trasy Istio?

Pravidlá smerovania sú pravidlá, ktoré v skutočnosti určujú výber trasy. Bez ohľadu na úroveň zložitosti systému zostáva všeobecný princíp fungovania týchto pravidiel jednoduchý: požiadavky sú smerované na základe určitých parametrov a hodnôt hlavičiek HTTP.
Pozrime sa na príklady:

Predvolené nastavenie Kubernetes: triviálne "50/50"

V našom príklade si ukážeme, ako súčasne používať dve verzie mikroslužby v OpenShift, nazvime ich v1 a v2. Každá verzia beží vo svojom vlastnom Kubernetes pod a predvolene beží rovnomerne vyvážené kruhové smerovanie. Každý modul dostane svoj podiel žiadostí na základe počtu inštancií mikroslužby, inými slovami, replík. Istio vám umožňuje zmeniť tento zostatok manuálne.

Povedzme, že sme nasadili dve verzie našej odporúčacej služby na OpenShift, doporučenie-v1 a doporučenie-v2.
Na obr. Obrázok 1 ukazuje, že keď je každá služba zastúpená v jednej inštancii, požiadavky sa medzi nimi rovnomerne striedajú: 1-2-1-2-... Takto štandardne funguje smerovanie Kubernetes:

Séria príspevkov na Istio Service Mesh

Vážená distribúcia medzi verziami

Na obr. Obrázok 2 ukazuje, čo sa stane, ak zvýšite počet replík služieb verzie 2 z jednej na dve (to sa vykonáva pomocou príkazu oc scale —replicas=2 deployment/recommendation-v2). Ako vidíte, požiadavky medzi v1 a v2 sú teraz rozdelené v pomere jedna ku trom: 1-2-2-1-2-2-…:

Séria príspevkov na Istio Service Mesh

Ignorovať verziu pomocou Istio

Istio позволяет легко изменить распределение запросов нужным нам образом. Например, отправлять весь трафик только на recommendation-v1 с помощью следующего yaml-файла Istio:

Séria príspevkov na Istio Service Mesh

Tu je potrebné venovať pozornosť tomuto: strúčiky sa vyberajú podľa štítkov. Náš príklad používa označenie v1. Parameter „weight: 100“ znamená, že 100 % návštevnosti bude smerovať do všetkých modulov služby, ktoré majú štítok v1.

Distribúcia smernice medzi verziami (Canary Deployment)

Potom môžete pomocou parametra váhy nasmerovať návštevnosť do oboch modulov a ignorovať počet inštancií mikroslužieb spustených v každom z nich. Tu napríklad smerujeme 90 % návštevnosti na verziu 1 a 10 % na verziu 2:

Séria príspevkov na Istio Service Mesh

Samostatné smerovanie pre mobilných používateľov

Na záver si ukážeme, ako vynútiť smerovanie návštevnosti mobilných používateľov na službu v2 a všetkých ostatných na v1. Na to používame regulárne výrazy na analýzu hodnoty user-agent v hlavičke požiadavky:

Séria príspevkov na Istio Service Mesh

Teraz si na rade ty

Príklad s regulárnymi výrazmi na analýzu hlavičiek by vás mal motivovať k tomu, aby ste našli svoje vlastné použitie pravidiel smerovania Istio. Okrem toho sú tu možnosti pomerne rozsiahle, pretože hodnoty hlavičky môžu byť vytvorené v zdrojovom kóde aplikácie.

A pamätajte, že Ops, nie Dev

Všetko, čo sme ukázali v príkladoch vyššie, sa deje bez najmenších zmien v zdrojovom kóde, s výnimkou prípadov, keď je potrebné generovať špeciálne hlavičky požiadaviek. Istio bude užitočné ako pre vývojárov, ktorí ho budú môcť používať napríklad v štádiu testovania, tak aj pre špecialistov na prevádzku IT systémov, ktorým výrazne pomôže vo výrobe.

Zopakujme si teda leitmotív tejto série príspevkov: vo svojom kóde nemusíte nič meniť. Nie je potrebné vytvárať nové obrázky alebo spúšťať nové kontajnery. Toto všetko je implementované mimo kódu.

Použi svoju predstavivosť

Len si predstavte možnosti analýzy hlavičiek pomocou regulárnych výrazov. Chcete presmerovať svojho najväčšieho zákazníka na jeho špeciálnu verziu mikroslužby? Jednoducho! Potrebujete samostatnú verziu prehliadača Chrome? Žiaden problém! Premávku môžete smerovať takmer podľa akejkoľvek charakteristiky.

Vyskúšajte si to sami

Čítanie o Istio, Kubernetes a OpenShift je jedna vec, ale prečo si všetko neohmatať sami? Tím Vývojársky program Red Hat pripravil podrobný návod (v angličtine), ktorý vám pomôže zvládnuť tieto technológie čo najrýchlejšie. Príručka je tiež 100% open source, takže je zverejnená ako verejná doména. Súbor funguje na macOS, Linuxe a Windowse a zdrojový kód je dostupný vo verziách Java a node.js (verzie v iných jazykoch už čoskoro). Stačí otvoriť príslušné úložisko git vo svojom prehliadači Red Hat Developer Demo.

V ďalšom príspevku: krásne riešime problémy

Dnes ste videli, čo dokážu pravidlá smerovania Istio. Teraz si predstavte to isté, ale len v súvislosti s riešením chýb. Presne o tom si povieme v ďalšom príspevku.

Zdroj: hab.com

Pridať komentár