Dark Launch v Istio: Secret Services

"Nebezpečenstvo je moje druhé meno," hovorieval Austin Powers, medzinárodný záhadný muž. To, čo si ale super agenti a spravodajské služby veľmi vážia, sa vôbec nehodí do počítačových služieb, kde je oveľa lepšia nuda ako nebezpečenstvo.

Dark Launch v Istio: Secret Services

A vďaka Istio spolu s OpenShift a Kubernetes je nasadenie mikroslužieb skutočne nudné a predvídateľné – a to je skvelé. O tomto a oveľa viac si povieme vo štvrtom a poslednom príspevku v sérii Istio.

Keď je nuda správna

U nás nastáva nuda až v záverečnej fáze, kedy ostáva už len sedieť a sledovať proces. Na to však musíte všetko najskôr nakonfigurovať a tu na vás čaká veľa zaujímavých vecí.

Pri nasadzovaní novej verzie vášho softvéru sa oplatí zvážiť všetky možnosti minimalizácie rizík. Súbežné spustenie je veľmi výkonný a osvedčený spôsob testovania a Istio vám umožňuje použiť „tajnú službu“ (skrytú verziu vašej mikroslužby), aby ste to urobili bez zásahu do produkčného systému. Existuje na to dokonca aj špeciálny výraz - „Dark Launch“, ktorý sa zase aktivuje funkciou s rovnako špionážnym názvom „zrkadlenie premávky“.

Upozorňujeme, že v prvej vete predchádzajúceho odseku sa používa výraz „nasadiť“ a nie „uvoľniť“. Mali by ste byť skutočne schopní nasadiť – a samozrejme používať – svoju mikroslužbu tak často, ako chcete. Táto služba musí byť schopná prijímať a spracovávať prevádzku, produkovať výsledky a tiež zapisovať do protokolov a monitorovať. Ale zároveň túto službu samotnú netreba nutne uvoľniť do produkcie. Nasadenie a uvoľnenie softvéru nie je vždy to isté. Môžete ho nasadiť kedykoľvek chcete, ale uvoľnite ho, až keď budete pripravený.

Organizovanie nudy je zaujímavé

Pozrite sa na nasledujúce pravidlo smerovania Istio, ktoré smeruje všetky požiadavky HTTP na odporúčanie mikroslužby v1 (všetky príklady prevzaté z Istio Tutorial GitHub repo), pričom ich súčasne zrkadlí do odporúčanej mikroslužby v2:

Dark Launch v Istio: Secret Services
Venujte pozornosť štítku mirror: v spodnej časti obrazovky – práve tá nastavuje zrkadlenie premávky. Áno, je to také jednoduché!

Výsledkom tohto pravidla bude, že váš produkčný systém (v1) bude naďalej spracovávať prichádzajúce požiadavky, ale samotné požiadavky budú asynchrónne zrkadlené do v2, to znamená, že tam budú chodiť ich úplné duplikáty. Takto môžete testovať v2 v reálnych podmienkach – na reálnych dátach a prevádzke – bez toho, aby ste akýmkoľvek spôsobom zasahovali do chodu produkčného systému. Je organizovanie testovania nudné? Rozhodne áno. Ale je to urobené zaujímavým spôsobom.

Pridajme drámu

Upozorňujeme, že v kóde v2 je potrebné zabezpečiť situácie, kedy prichádzajúce požiadavky môžu viesť k zmenám údajov. Samotné požiadavky sa zrkadlia jednoducho a transparentne, no výber spôsobu spracovania v teste je na vás – a to je trochu znepokojujúce.

Zopakujme si dôležitý bod

Tajné spustenie so zrkadlením premávky (Dark Launch/Request Mirroring) je možné vykonať bez akéhokoľvek ovplyvnenia kódu.

Potrava na zamyslenie

Čo ak miesto, kde sa zrkadlia požiadavky, pošle niektoré z nich nie do v1, ale do v2? Napríklad jedno percento zo všetkých požiadaviek alebo len požiadavky od určitej skupiny používateľov. A potom, keď sa už pozriete na to, ako v2 funguje, postupne preneste všetky požiadavky do novej verzie. Alebo naopak, vráťte všetko do v1, ak sa niečo pokazí s v2. Myslím, že sa to volá Canary Deployment. sa vracia k ťažbe, a ak by bol ruského pôvodu, pravdepodobne by obsahoval odkaz na mačky), a teraz sa na to pozrieme podrobnejšie.

Canary Deployment in Istio: zjednodušenie uvedenia do prevádzky

Opatrne a postupne

Podstata modelu nasadenia Canary Deployment je mimoriadne jednoduchá: keď spustíte novú verziu svojho softvéru (v našom prípade mikroslužbu), najprv k nej poskytnete prístup malej skupine používateľov. Ak všetko pôjde dobre, túto skupinu pomaly zväčšujete, kým nezačne fungovať nová verzia, alebo – ak nie – nakoniec do nej migrujete všetkých používateľov. Premysleným a postupným zavádzaním novej verzie a kontrolovaným prepínaním používateľov na ňu môžete znížiť riziká a maximalizovať spätnú väzbu.

Istio samozrejme zjednodušuje Canary Deployment tým, že ponúka niekoľko dobrých možností pre inteligentné smerovanie požiadaviek. A áno, to všetko sa dá urobiť bez toho, aby ste sa akýmkoľvek spôsobom dotkli zdrojového kódu.

Filtrovanie prehliadača

Jedným z najjednoduchších kritérií smerovania je presmerovanie založené na prehliadači. Povedzme, že chcete, aby na v2 prešli iba požiadavky z prehliadačov Safari. Tu je postup:

Dark Launch v Istio: Secret Services
Aplikujme toto pravidlo smerovania a potom použite príkaz curl Reálne požiadavky na mikroslužbu budeme simulovať v slučke. Ako môžete vidieť na snímke obrazovky, všetky idú do v1:

Dark Launch v Istio: Secret Services
Kde je premávka na v2? Keďže v našom príklade všetky požiadavky pochádzajú iba z nášho vlastného príkazového riadku, jednoducho neexistuje. Ale dávajte pozor na spodné riadky na obrazovke vyššie: toto je reakcia na skutočnosť, že sme vykonali požiadavku z prehliadača Safari, ktorý zase vytvoril toto:

Dark Launch v Istio: Secret Services

Neobmedzený výkon

Už sme napísali, že regulárne výrazy poskytujú veľmi výkonné možnosti pre smerovanie požiadaviek. Pozrite si nasledujúci príklad (myslíme, že pochopíte, čo robí):

Dark Launch v Istio: Secret Services
Teraz už pravdepodobne máte predstavu o tom, čo dokážu regulárne výrazy.

Správajte sa inteligentne

Inteligentné smerovanie, najmä spracovanie hlavičiek paketov pomocou regulárnych výrazov, vám umožňuje riadiť prevádzku tak, ako chcete. A to výrazne zjednodušuje implementáciu nového kódu - je to jednoduché, nevyžaduje zmenu samotného kódu a v prípade potreby je možné všetko rýchlo vrátiť tak, ako to bolo.

Máte záujem?

Máte chuť experimentovať s Istio, Kubernetes a OpenShift na vašom počítači? Tím Tím vývojárov Red Hat pripravili vynikajúce učebnice k tejto téme a verejne sprístupnil všetky sprievodné súbory. Tak do toho a nič si neodopieraj.

Istio Egress: východ cez obchod so suvenírmi

Používaním Istio spolu s Red Hat OpenShift a Kubernetes si môžete výrazne uľahčiť život s mikroslužbami. Sieť služieb Istio je skrytá vo vnútri modulov Kubernetes a váš kód beží (väčšinou) izolovane. Výkon, jednoduchosť výmeny, sledovanie atď. – to všetko sa ľahko používa vďaka použitiu kontajnerov postranných vozíkov. Čo ak však vaša mikroslužba potrebuje komunikovať s inými službami, ktoré sa nachádzajú mimo vášho systému OpenShift-Kubernetes?

Tu prichádza na pomoc Istio Egress. Stručne povedané, jednoducho vám umožňuje prístup k zdrojom (čítaj: „služby“), ktoré nie sú súčasťou vášho systému modulov Kubernetes. Ak nevykonáte dodatočnú konfiguráciu, tak v prostredí Istio Egress je prevádzka smerovaná iba v rámci klastra podov a medzi takýmito klastrami na základe interných IP tabuliek. A takéto zakuklenie funguje skvele, pokiaľ nepotrebujete prístup k službám zvonku.

Egress vám umožňuje obísť vyššie uvedené tabuľky IP, či už na základe pravidiel Egress alebo na základe rozsahu adries IP.

Povedzme, že máme program Java, ktorý odošle požiadavku GET na stránku httpbin.org/headers.

(httpbin.org je len pohodlným zdrojom na testovanie odchádzajúcich požiadaviek na služby.)

Ak zadáte na príkazovom riadku curl http://httpbin.org/headers, uvidíme nasledovné:

Dark Launch v Istio: Secret Services
Alebo môžete rovnakú adresu otvoriť v prehliadači:

Dark Launch v Istio: Secret Services
Ako vidíte, služba, ktorá sa tam nachádza, jednoducho vráti hlavičky, ktoré jej boli odovzdané.

Dovozy nahrádzame čelne

Teraz vezmeme kód Java tejto služby, ktorý je externý pre náš systém, a spustíme ho sami, kde je nainštalovaný Istio. (Môžete to urobiť sami kontaktovaním náš Istio tutoriál.) Po vytvorení príslušného obrazu a jeho spustení na platforme OpenShift zavoláme túto službu príkazom curl egresshttpbin-istioegress.$(minishift ip).nip.io, potom na obrazovke uvidíme toto:

Dark Launch v Istio: Secret Services
Čo sa stalo? Všetko jednoducho fungovalo. Čo znamená Nenájdené? Urobili sme to pre neho curl.

Rozšírenie IP tabuliek na celý internet

Istio by mal byť za to obviňovaný (alebo ďakovaný). Koniec koncov, Istio sú len kontajnery postranných vozíkov, ktoré sú zodpovedné za detekciu a smerovanie (a mnoho ďalších vecí, o ktorých sme hovorili skôr). Z tohto dôvodu tabuľky IP vedia iba to, čo je vo vašom klastrovom systéme. A httpbin.org sa nachádza mimo, a preto je neprístupný. A tu prichádza na pomoc Istio Egress – bez najmenšej zmeny vášho zdrojového kódu.

Nižšie uvedené pravidlo Egress núti Istio hľadať (ak je to potrebné, potom na celom internete) požadovanú službu, v tomto prípade httpbin.org. Ako môžete vidieť z tohto súboru (egress_httpbin.yml), funkčnosť je tu celkom jednoduchá:

Dark Launch v Istio: Secret Services
Zostáva len použiť toto pravidlo:

istioctl create -f egress_httpbin.yml -n istioegress

Pomocou príkazu môžete zobraziť pravidlá Egress istioctl get egressrules:

Dark Launch v Istio: Secret Services
A nakoniec príkaz spustíme znova curl - a vidíme, že všetko funguje:

Dark Launch v Istio: Secret Services

Myslíme otvorene

Ako vidíte, Istio vám umožňuje organizovať interakciu s vonkajším svetom. Inými slovami, stále môžete vytvárať služby OpenShift a spravovať ich prostredníctvom Kubernetes, pričom máte všetko uložené v moduloch, ktoré sa podľa potreby zväčšujú a zmenšujú. A zároveň môžete bezpečne pristupovať k službám mimo vášho prostredia. A áno, ešte raz opakujeme, že toto všetko sa dá urobiť bez toho, aby ste sa akýmkoľvek spôsobom dotkli vášho kódu.

Toto bol posledný príspevok v sérii na Istio. Zostaňte naladení – pred nami je veľa zaujímavých vecí!

Zdroj: hab.com

Pridať komentár