Série příspěvků na Istio Service Mesh

Začínáme sérii příspěvků demonstrujících některé z mnoha funkcí Istio Service Mesh v kombinaci s Red Hat OpenShift a Kubernetes.

Série příspěvků na Istio Service Mesh

Dnešní první díl:

  • Pojďme si vysvětlit koncept kontejnerů Kubernetes sidecar a formulovat leitmotiv této série příspěvků: "nemusíte ve svém kódu nic měnit".
  • Představme si základní věc Istio – pravidla směrování. Všechny ostatní funkce Istio jsou postaveny na nich, protože jsou to pravidla, která vám umožňují směrovat provoz do mikroslužeb pomocí souborů YAML mimo kód služby. Zvažujeme také schéma nasazení Canary Deployment. Novoroční bonus – 10 interaktivních lekcí Istio


Druhá část, která brzy vyjde, vám řekne:

  • Jak Istio implementuje Pool Ejection ve spojení s Circuit Breaker a ukazuje, jak Istio umožňuje odstranit nečinný nebo špatně fungující modul ze schématu vyvážení.
  • Podíváme se také na téma Jistič z prvního příspěvku o tom, jak lze Istio použít zde. Ukážeme si, jak směrovat provoz a řešit chyby sítě bez sebemenší změny v kódu služby pomocí konfiguračních souborů YAML a terminálových příkazů.

Část třetí:

  • Příběh o sledování a monitorování, který je již zabudován nebo snadno přidán do Istio. Ukážeme vám, jak používat nástroje jako Prometheus, Jaeger a Grafana ve spojení se škálováním OpenShift k snadné správě architektury mikroslužeb.
  • Od monitorování a řešení chyb přecházíme k jejich záměrnému zavádění do systému. Jinými slovy, naučíme se provádět vkládání chyb bez změny zdrojového kódu, což je z hlediska testování velmi důležité – protože pokud kvůli tomu změníte samotný kód, existuje riziko zavedení dalších chyb.

Nakonec v posledním příspěvku na Istio Service Mesh:

  • Pojďme k Temné straně. Přesněji se naučíme používat schéma Dark Launch, kdy je kód nasazen a testován přímo na produkčních datech, ale nijak neovlivňuje chod systému. Zde se hodí Istio schopnost rozdělit provoz. A schopnost provádět testování na živých produkčních datech, aniž by to jakkoli ovlivnilo fungování bojového systému, je nejpřesvědčivější způsob kontroly.
  • V návaznosti na Dark Launch vám ukážeme, jak pomocí modelu Canary Deployment snížit riziko a usnadnit nasazení nového kódu. Canary Deployment samo o sobě není nic nového, ale Istio vám umožňuje implementovat toto schéma pouze pomocí jednoduchých souborů YAML.
  • Na závěr si ukážeme, jak používat Istio Egress pro zpřístupnění služeb těm, kteří jsou mimo vaše clustery, aby mohli využívat možnosti Istio při práci s internetem.

Takže jdeme…

Sada nástrojů pro monitorování a správu Istio – vše, co potřebujete ke koordinaci mikroslužeb v síti služeb servisní síť.

Co je Istio Service Mesh

Service mesh implementuje pro skupinu služeb takové funkce, jako je sledování provozu, řízení přístupu, zjišťování, zabezpečení, odolnost proti chybám a další užitečné věci. To vše vám Istio umožňuje bez sebemenší změny v kódu samotných služeb. Jaké je tajemství magie? Istio připojí ke každé službě svůj vlastní proxy ve formě kontejneru postranního vozíku (sajdkára je postranní vozík pro motocykly), po kterém veškerý provoz na tuto službu prochází přes proxy, který se řídí stanovenými zásadami a rozhoduje, jak, kdy a zda toto provoz by se měl ke službě vůbec dostat. Istio vám také dává možnost implementovat pokročilé techniky DevOps, jako jsou kanárkové nasazení, jističe, injekce poruch a další.

Jak Istio pracuje s kontejnery a Kubernetes

Istio service mesh je postranní implementace všeho, co potřebujete k vytvoření a správě mikroslužeb: monitorování, trasování, jističe, směrování, vyvažování zátěže, injektování chyb, opakování, časové limity, zrcadlení, řízení přístupu, omezení rychlosti a další. A i když dnes existuje spousta knihoven, které tyto funkce implementují přímo do kódu, s Istio můžete získat přesně to samé, aniž byste v kódu cokoliv měnili.

Podle modelu postranního vozíku Istio běží v linuxovém kontejneru, který je v jednom umístěn Kubernetes-pod s řízenou službou a implementuje (vstřikuje) a extrahuje (extrahuje) funkčnost a informace podle dané konfigurace. Zdůrazňujeme, že toto je vaše vlastní konfigurace a žije mimo váš kód. Proto se kód stává mnohem jednodušším a kratším.

Důležitější je, že provozní složka mikroslužeb není nijak spojena se samotným kódem, což znamená, že jejich provoz lze bezpečně přenést na IT specialisty. Proč by měl být vývojář odpovědný za jističe a poruchové vstřikování? Reagovat ano, ale zpracovat a vytvořit je? Pokud toto vše z kódu odstraníte, programátoři se mohou plně soustředit na funkčnost aplikace. A samotný kód bude kratší a jednodušší.

Servisní mřížka

Istio, která implementuje funkce správy mikroslužeb mimo jejich kód – to je koncept Service Mesh. Jinými slovy, je to koordinovaná skupina jedné nebo více binárních souborů, které tvoří mřížku síťových funkcí.

Jak Istio pracuje s mikroslužbami

Takto fungují kontejnery postranních vozíků ve spojení s Kubernetes и minisměna pohled z ptačí perspektivy: spusťte instanci Minishift, vytvořte projekt Istio (říkejme mu „istio-systém“), nainstalujte a spusťte všechny komponenty související s Istio. Poté, když vytváříte projekty a moduly, přidejte do svých nasazení informace o konfiguraci a vaše moduly začnou používat Istio. Zjednodušený diagram vypadá takto:

Série příspěvků na Istio Service Mesh

Nyní můžete změnit nastavení Istio, například organizovat vkládání chyb, podporu Kanárské nasazení nebo další funkce Istio – a to vše bez dotyku na kód samotných aplikací. Řekněme, že chcete přesměrovat veškerý webový provoz od uživatelů vašeho největšího zákazníka (Foo Corporation) na novou verzi vašeho webu. Vše, co musíte udělat, je vytvořit pravidlo směrování Istio, které hledá @foocorporation.com v ID uživatele a podle toho přesměruje. Pro všechny ostatní uživatele se nic nezmění. Mezitím budete v klidu testovat novou verzi webu. A všimněte si, že k tomu není absolutně nutné zapojovat vývojáře.

A kolik za to musíte zaplatit?

Vůbec ne. Istio je docela rychlý, je to napsané Go a vytváří velmi malou režii. Případná ztráta online produktivity je navíc kompenzována zvýšením produktivity vývojářů. Alespoň teoreticky: nezapomeňte, že čas vývojářů je cenný. Pokud jde o náklady na software, Istio je software s otevřeným zdrojovým kódem, takže je možné jej získat a používat zdarma.

Zvládněte to sami

Red Hat Developer Experience Team vyvinul hloubkový praktický návod průvodce od Istio (v angličtině). Běží na Linuxu, MacOS a Windows a kód je dodáván ve variantách Java a Node.js.

10 interaktivních lekcí Istio

Blok 1 - Pro začátečníky

Úvod do Istio
30 minut
Seznámíme se s Service Mesh, naučíme se nainstalovat Istio do clusteru Kubernetes OpenShift.
Zveřejnit

Nasazení mikroslužeb v Istiu
30 minut
Istio používáme k nasazení tří mikroslužeb s Spring Boot a Vert.x.
Zveřejnit

Blok 2 - střední úroveň

Monitorování a sledování v Istio
60 minut
Prozkoumejte vestavěné monitorovací nástroje Istio, vlastní metriky a OpenTracing prostřednictvím Prometheus a Grafana.
Zveřejnit

Jednoduché směrování v Istio
60 minut
Naučte se ovládat směrování v Istio pomocí jednoduchých pravidel.
Zveřejnit

Pokročilá pravidla směrování
60 minut
Seznamujeme se s chytrým směrováním v Istio, řízením přístupu, vyvažováním zátěže a omezováním rychlosti.
Zveřejnit

Blok 3 – Pokročilý uživatel

Porucha vstřikování v Istiu
60 minut
Studujeme scénáře řešení selhání v distribuovaných aplikacích, vytváření chyb HTTP a zpoždění sítě a učíme se, jak použít chaosové inženýrství k obnově prostředí.
Zveřejnit

Jistič v Istiu
30 minut
Instalujeme Siege pro místa zátěžového testování a naučíme se, jak zajistit odolnost proti chybám v backendu pomocí opakování, jističe a vysunutí bazénu.
Zveřejnit

Egress a Istio
10 minut
Egress routes používáme k vytváření pravidel pro interakci interních služeb s externími API a službami.
Zveřejnit

Istio a Kiali
15 minut
Naučte se používat Kiali, abyste získali velký obrázek o síti služeb a studovali tok požadavků a dat.
Zveřejnit

Vzájemné TLS v Istio
15 minut
Vytváříme Istio Gateway a VirtualService, poté podrobně studujeme vzájemné TLS (mTLS) a jeho nastavení.
Zveřejnit

Box 3.1 – Deep Dive: Istio Service Mesh pro mikroslužby

Série příspěvků na Istio Service Mesh
O čem je ta kniha:

  • Co je to servisní síť.
  • Systém Istio a jeho role v architektuře mikroslužeb.
  • Použití Istio pro následující úkoly:
    • Odolnost proti chybám;
    • Směrování;
    • Testování chaosu;
    • Bezpečnost;
    • Sběr telemetrie pomocí trasování, metriky a Grafana.

Ke stažení knihy

Série článků o servisních sítích a Istio

Vyzkoušejte to sami

Účelem této série příspěvků není poskytnout hluboký ponor do světa Istio. Chceme vám jen představit samotný koncept a možná vás inspirovat k tomu, abyste si Istio sami vyzkoušeli. Je zcela zdarma a Red Hat poskytuje všechny nástroje, které potřebujete, abyste mohli začít s OpenShift, Kubernetes, Linux kontejnery a Istio, včetně: Red Hat Developer OpenShift Container Platform, náš průvodce po Istiu a další zdroje na našem webu servisní síťová mikro stránka. Neváhejte a začněte ještě dnes!

Pravidla směrování Istio: Směrování požadavků na služby na správné místo

OpenShift и Kubernetes umí se s nimi skvěle vypořádat mikroslužby směrovány do požadovaných modulů. To je jeden z účelů existence Kubernetes – směrování a vyvažování zátěže. Ale co když potřebujete jemnější a sofistikovanější směrování? Chcete-li například používat dvě verze mikroslužby současně. Jak zde mohou pomoci pravidla tras Istio?

Pravidla směrování jsou pravidla, která ve skutečnosti určují výběr cesty. Bez ohledu na složitost systému zůstává obecný princip těchto pravidel jednoduchý: požadavky jsou směrovány na základě určitých parametrů a hodnot hlavičky HTTP.
Podívejme se na příklady:

Výchozí Kubernetes: Triviální "50/50"

V našem příkladu si ukážeme, jak v OpenShift používat dvě verze mikroslužby současně, říkejme jim v1 a v2. Každá verze běží ve svém vlastním modulu Kubernetes a ve výchozím nastavení zde funguje rovnoměrně vyvážené kruhové směrování. Každý pod obdrží svůj podíl požadavků podle počtu instancí své mikroslužby, jinými slovy replik. Istio vám umožňuje změnit tento zůstatek ručně.

Řekněme, že jsme nasadili dvě verze naší služby doporučení, doporučení-v1 a doporučení-v2, na OpenShift.
Na Obr. Obrázek 1 ukazuje, že když je každá služba zastoupena v jedné instanci, požadavky jsou mezi nimi rovnoměrně prokládány: 1-2-1-2-… Takto funguje směrování Kubernetes ve výchozím nastavení:

Série příspěvků na Istio Service Mesh

Vážená distribuce mezi verzemi

Na Obr. Obrázek 2 ukazuje, co se stane, když zvýšíte počet replik služeb v2 z jedné na dvě (to se provádí pomocí příkazu oc scale --replicas=2 deployment/recommendation-v2). Jak vidíte, požadavky mezi v1 a v2 jsou nyní rozděleny ve vztahu jedna ku třem: 1-2-2-1-2-2-…:

Série příspěvků na Istio Service Mesh

Ignorujte verzi s Istio

Istio usnadňuje změnu distribuce požadavků způsobem, který potřebujeme. Odešlete například veškerý provoz pouze na doporučení-v1 s následujícím souborem Istio yaml:

Série příspěvků na Istio Service Mesh

Zde je třeba věnovat pozornost tomuto: lusky se vybírají podle štítků. V našem příkladu je použito označení v1. Parametr „weight: 100“ znamená, že 100 % provozu bude směrováno do všech podů služby, které mají štítek v1.

Distribuce směrnice mezi verzemi (Canary Deployment)

Dále pomocí parametru weight můžete směrovat provoz do obou podů, přičemž ignorujete počet instancí mikroslužeb spuštěných v každém z nich. Zde například direktivně přesměrujeme 90 % provozu na verzi 1 a 10 % na verzi 2:

Série příspěvků na Istio Service Mesh

Samostatné směrování mobilních uživatelů

Na závěr si ukážeme, jak donutit, aby byl provoz mobilních uživatelů směrován na službu v2 a všichni ostatní uživatelé na v1. K tomu používáme regulární výrazy k analýze hodnoty user-agent v hlavičce požadavku:

Série příspěvků na Istio Service Mesh

Teď jsi na řadě

Příklad regulárního výrazu pro analýzu hlaviček by vás měl motivovat k prozkoumání vlastních způsobů použití pravidel směrování Istio. Možnosti jsou zde navíc velmi rozsáhlé, protože hodnoty záhlaví lze tvořit ve zdrojovém kódu aplikací.

A pamatujte, že Ops, ne Dev

Vše, co jsme si ukázali ve výše uvedených příkladech, se děje bez sebemenší změny ve zdrojovém kódu, tedy kromě případů, kdy je nutné vytvořit speciální hlavičky požadavků. Istio bude užitečné jak pro vývojáře, kteří jej budou moci používat například ve fázi testování, tak pro operátory IT systémů, kterým výrazně pomůže ve výrobě.

Zopakujme si tedy hlavní myšlenku této série příspěvků: ve svém kódu nemusíte nic měnit. Není třeba vytvářet nové obrázky nebo spouštět nové kontejnery. To vše je implementováno mimo kód.

zapněte fantazii

Jen si představte vyhlídky na analýzu titulků s regulárními výrazy. Chcete přesměrovat svého největšího zákazníka na jeho speciální verzi mikroslužby? Snadno! Potřebujete samostatnou verzi prohlížeče Chrome? Žádný problém! Provoz můžete směrovat podle téměř všech jeho charakteristik.

Vyzkoušejte to sami

Číst o Istio, Kubernetes a OpenShift je jedna věc, ale proč si toho všeho nesáhnout sami? tým Vývojářský program Red Hat připravili podrobného průvodce (v angličtině), který vám pomůže tyto technologie co nejrychleji zvládnout. Průvodce je také 100% open source, takže je ve veřejné doméně. Soubor funguje na macOS, Linux a Windows a zdrojový kód je k dispozici ve verzích Java a node.js (další jazyky již brzy). Stačí otevřít příslušné úložiště git ve vašem prohlížeči Red Hat Developer Demo.

V dalším příspěvku: krásné řešení problémů

Dnes jste viděli, co pravidla směrování Istio dokážou. Nyní si představte všechny stejné, ale pouze ve vztahu k řešení chyb. Právě tomu se budeme věnovat v dalším příspěvku.

Zdroj: www.habr.com

Přidat komentář