Posztok sorozata az Istio Service Mesh-en

Elindítunk egy bejegyzéssorozatot, amely bemutatja az Istio Service Mesh számos képességét a Red Hat OpenShifttel és a Kubernetestel kombinálva.

Posztok sorozata az Istio Service Mesh-en

Első rész ma:

  • Magyarázzuk el a Kubernetes oldalkocsis konténerek koncepcióját, és fogalmazzuk meg ennek a bejegyzéssorozatnak a vezérmotívumát: "Semmit sem kell módosítanod a kódodban".
  • Mutassuk be az Istio alapvető dolgait – az útválasztási szabályokat. Az összes többi Istio funkció rájuk épül, mivel a szabályok azok, amelyek lehetővé teszik a forgalom mikroszolgáltatások felé irányítását a szolgáltatáskódon kívüli YAML-fájlok használatával. A Canary Deployment telepítési tervet is fontolgatjuk. Újévi bónusz – 10 interaktív lecke az Istio-n


A hamarosan megjelenő második rész elmondja neked:

  • Hogyan valósítja meg az Istio a Pool Ejection funkciót az áramkör-megszakítóval kombinálva, és bemutatja, hogyan teszi lehetővé az Istio egy halott vagy rosszul teljesítő pod eltávolítását a kiegyenlítő áramkörből.
  • A Circuit Breaker témát is megnézzük az első bejegyzésből, hogy megnézzük, hogyan használható itt az Istio. Megmutatjuk, hogyan irányíthatja a forgalmat és hogyan kezelheti a hálózati hibákat YAML konfigurációs fájlok és terminálparancsok segítségével a szolgáltatáskód legkisebb változtatása nélkül.

Harmadik rész:

  • Történet a nyomkövetésről és megfigyelésről, amelyek már be vannak építve vagy egyszerűen hozzáadhatók az Istióhoz. Megmutatjuk, hogyan használhatja az olyan eszközöket, mint a Prometheus, a Jaeger és a Grafana az OpenShift skálázással a mikroszolgáltatási architektúrák könnyed kezeléséhez.
  • A hibák figyelésétől és kezelésétől a szándékos rendszerbe helyezés felé haladunk. Más szóval, megtanuljuk, hogyan lehet hibabefecskendezést végezni a forráskód megváltoztatása nélkül, ami nagyon fontos tesztelési szempontból - hiszen ha magát a kódot módosítja ehhez, fennáll a további hibák beiktatásának veszélye.

Végül az Istio Service Mesh utolsó bejegyzésében:

  • Menjünk a Sötét Oldalra. Pontosabban, megtanuljuk a Dark Launch sémát használni, amikor a kódot közvetlenül a termelési adatokon telepítik és tesztelik, de ez semmilyen módon nem befolyásolja a rendszer működését. Itt jön jól az Istio azon képessége, hogy megosztja a forgalmat. És a legmeggyőzőbb ellenőrzési módszer az élő gyártási adatokon történő tesztelés lehetősége anélkül, hogy bármilyen módon befolyásolná a harcrendszer működését.
  • A Dark Launch-ra építve megmutatjuk, hogyan használhatja a Canary Deployment modellt a kockázatok csökkentése és az új kódok gyártásba kerülésének megkönnyítése érdekében. Maga a Canary Deployment korántsem új, de az Istio lehetővé teszi, hogy ezt a sémát egyszerű YAML-fájlokkal is megvalósítsa.
  • Végül megmutatjuk, hogyan használhatja az Istio Egress-t, hogy hozzáférést biztosítson a fürtökön kívüliek számára ahhoz, hogy az Istio képességeit használhassa az internettel való munka során.

Szóval tessék...

Istio felügyeleti és felügyeleti eszközök – minden, ami a mikroszolgáltatások szervizhálóban történő összehangolásához szükséges szervizháló.

Mi az Istio Service Mesh

A szolgáltatásháló olyan funkciókat valósít meg, mint a forgalomfigyelés, a hozzáférés-vezérlés, a felderítés, a biztonság, a hibatűrés és egyéb hasznos dolgok egy szolgáltatáscsoport számára. Az Istio lehetővé teszi, hogy mindezt a szolgáltatások kódjának legkisebb változtatása nélkül tegye. Mi a mágia titka? Az Istio minden szolgáltatáshoz saját proxyt csatol egy oldalkocsis konténer formájában (az oldalkocsi egy motorkerékpár oldalkocsi), ami után a szolgáltatás teljes forgalma a proxyn keresztül megy, amely meghatározott szabályzatok alapján dönti el, hogyan, mikor és hogy ez a forgalom egyáltalán el kell érnie a szolgáltatást. Az Istio lehetővé teszi olyan fejlett DevOps technikák megvalósítását is, mint a kanári telepítések, megszakítók, hibabefecskendezés és sok más.

Hogyan működik az Istio a konténerekkel és a Kubernetesekkel

Az Istio service mesh a mikroszolgáltatások létrehozásához és kezeléséhez szükséges mindennek oldalkocsis megvalósítása: felügyelet, nyomkövetés, megszakítók, útválasztás, terheléselosztás, hibainjektálás, újrapróbálkozások, időtúllépések, tükrözés, hozzáférés-vezérlés, sebességkorlátozás és még sok más. És bár manapság rengeteg könyvtár létezik ezeknek a funkcióknak közvetlenül a kódban való megvalósítására, az Istio-val ugyanazokat a dolgokat elérheti anélkül, hogy bármit is módosítana a kódban.

Az oldalkocsis modell szerint az Istio egy Linux konténerben fut, ami egyben van elhelyezve Kubernetes-pod ellenőrzött szolgáltatással, és az adott konfigurációnak megfelelően beilleszti és kivonja a funkcionalitást és az információkat. Hangsúlyozzuk, hogy ez az Ön saját konfigurációja, és a kódon kívül él. Ezért a kód sokkal egyszerűbb és rövidebb lesz.

Az is fontos, hogy a mikroszolgáltatások működési komponense semmilyen módon nem kapcsolódik magához a kódhoz, így a működésük biztonságosan átruházható az informatikusokra. Valóban, miért kellene a fejlesztőnek felelősséget vállalnia a megszakítókért és a hibabefecskendezésért? Reagálni igen, de feldolgozni és létrehozni? Ha mindezt eltávolítja a kódból, a programozók teljes mértékben az alkalmazás funkcionalitására összpontosíthatnak. És maga a kód rövidebb és egyszerűbb lesz.

Szervizháló

Az Istio, amely funkciókat valósít meg a mikroszolgáltatások kódjukon kívüli kezelésére, a Service Mesh koncepciója. Más szóval, ez egy vagy több bináris koordinált csoportja, amelyek hálózati funkciók hálóját alkotják.

Hogyan működik az Istio a mikroszolgáltatásokkal

Így néz ki az oldalkocsis konténerek munkája ezzel együtt Kubernetes и Minishift madártávlatból: indítsa el a Minishift példányát, hozzon létre egy projektet az Istio számára (nevezzük „istio-rendszernek”), telepítse és futtassa az összes Istio-val kapcsolatos összetevőt. Ezután a projektek és pod-ok létrehozásakor konfigurációs információkat ad hozzá a telepítésekhez, és a pod-ok elkezdik használni az Istio-t. Egy egyszerűsített diagram így néz ki:

Posztok sorozata az Istio Service Mesh-en

Most megváltoztathatja az Istio beállításait, például megszervezheti a hibabefecskendezést, a támogatást Kanári bevetés vagy más Istio funkciókat – és mindezt az alkalmazások kódjának érintése nélkül. Tegyük fel, hogy a legnagyobb kliens (Foo Corporation) felhasználóitól az összes internetes forgalmat a webhely új verziójára szeretné átirányítani. Ehhez egyszerűen hozzon létre egy Istio útválasztási szabályt, amely megkeresi a @foocorporation.com címet a felhasználói azonosítóban, és ennek megfelelően irányítja át. Az összes többi felhasználó esetében semmi sem változik. Addig is nyugodtan tesztelheti az oldal új verzióját. És vegye figyelembe, hogy ehhez egyáltalán nem kell fejlesztőket bevonnia.

És drágán kell érte fizetni?

Egyáltalán nem. Istio elég gyors és be van írva Go és nagyon kevés rezsiköltséget termel. Ezenkívül az online termelékenység esetleges csökkenését a fejlesztői termelékenység növekedése ellensúlyozza. Legalábbis elméletben: ne felejtsük el, hogy a fejlesztők ideje értékes. Ami a szoftverköltségeket illeti, az Istio nyílt forráskódú szoftver, így ingyenesen beszerezheti és használhatja.

Sajátítsd el magad

A Red Hat Developer Experience Team mélyreható gyakorlatokat dolgozott ki vezetés szerző: Istio (angolul). Linuxon, MacOS-en és Windowson fut, a kód pedig Java és Node.js nyelven érhető el.

10 interaktív óra az Istio-n

1. blokk – Kezdőknek

Az Istio bemutatása
30 perc
Ismerkedjünk meg a Service Mesh-sel, tanuljuk meg az Istio telepítését egy OpenShift Kubernetes-fürtbe.
Kezdeni

Mikroszolgáltatások bevezetése Istióban
30 perc
Az Istio segítségével három mikroszolgáltatást helyezünk üzembe a Spring Boot és a Vert.x segítségével.
Kezdeni

2. blokk – középszint

Monitoring és nyomon követés Istióban
60 perc
Felfedezzük az Istio beépített megfigyelőeszközeit, egyéni mérőszámait és az OpenTracing szolgáltatást a Prometheus és a Grafana segítségével.
Kezdeni

Egyszerű útválasztás Istióban
60 perc
Ismerje meg, hogyan kezelheti az útválasztást az Istióban egyszerű szabályok segítségével.
Kezdeni

Speciális útválasztási szabályok
60 perc
Vessünk egy pillantást az Istio intelligens útválasztására, hozzáférés-vezérlésére, terheléselosztására és sebességkorlátozására.
Kezdeni

3. blokk – haladó felhasználó

Hibabefecskendezés Istioban
60 perc
Tanulmányozzuk az elosztott alkalmazások hibakezelési forgatókönyveit, HTTP-hibákat és hálózati késéseket, valamint megtanuljuk használni a káosztervezést a környezet helyreállítására.
Kezdeni

Áramköri megszakító Istióban
30 perc
Telepítjük a Siege-et stressz-tesztelési helyszínekre, és megtanuljuk, hogyan biztosítható a háttérben a hibatűrés visszajátszások, megszakítók és medencekidobás segítségével.
Kezdeni

Egress és Istio
10 perc
Kilépési útvonalakat használunk a belső szolgáltatások külső API-kkal és szolgáltatásokkal való interakciójára vonatkozó szabályok létrehozására.
Kezdeni

Istio és Kiali
15 perc
Tanulja meg a Kiali használatát, hogy áttekintést kapjon a szolgáltatáshálóról, és fedezze fel a kéréseket és az adatfolyamokat.
Kezdeni

Kölcsönös TLS Istioban
15 perc
Létrehozzuk az Istio Gateway-t és a VirtualService-t, majd részletesen tanulmányozzuk a kölcsönös TLS-t (mTLS) és annak beállításait.
Kezdeni

3.1 blokk – Deep Dive: Istio Service Mesh a mikroszolgáltatásokhoz

Posztok sorozata az Istio Service Mesh-en
Miről szól a könyv:

  • Mi az a szervizháló?
  • Az Istio rendszer és szerepe a mikroszolgáltatás architektúrában.
  • Az Istio használata a következő problémák megoldására:
    • Hibatűrés;
    • Útvonalválasztás;
    • Káosz tesztelése;
    • biztonság;
    • Telemetriai adatgyűjtés nyomvonalak, metrikák és Grafana segítségével.

Egy könyv letöltéséhez

Cikksorozat a szervizhálókról és az Istio-ról

Próbáld ki magad

Ennek a posztsorozatnak nem célja, hogy mélyreható búvárkodást nyújtson Istio világában. Csupán be akarjuk mutatni a koncepciót, és talán arra ösztönözzük, hogy próbálja ki az Istio-t. Ez teljesen ingyenes, és a Red Hat minden eszközt biztosít az OpenShift, a Kubernetes, a Linux-tárolók és az Istio használatának megkezdéséhez, beleértve: Red Hat fejlesztői OpenShift konténerplatform, idegenvezetőnk Istióba és egyéb forrásaink microsite a Service Mesh-en. Ne késlekedj, kezdd el még ma!

Istio útválasztási szabályok: a szolgáltatáskérések odairányítása, ahová kell

openshift и Kubernetes kiváló megszólítási munkát végez mikroszolgáltatások a szükséges hüvelyekhez irányítják. Ez az egyik oka a Kubernetes - útválasztás és terheléselosztás - létezésének. De mi van akkor, ha finomabb és kifinomultabb útválasztásra van szüksége? Például egy mikroszolgáltatás két verziójának egyidejű használatához. Hogyan segíthetnek itt az Istio Route Rules?

Az útvonalválasztási szabályok azok a szabályok, amelyek ténylegesen meghatározzák az útvonalválasztást. A rendszer bonyolultságától függetlenül ezeknek a szabályoknak az általános működési elve továbbra is egyszerű: a kérések továbbítása bizonyos paraméterek és HTTP-fejlécértékek alapján történik.
Nézzünk példákat:

Kubernetes alapértelmezett: triviális "50/50"

Példánkban bemutatjuk, hogyan lehet egyidejűleg használni egy mikroszolgáltatás két verzióját az OpenShiftben, nevezzük őket v1-nek és v2-nek. Mindegyik verzió a saját Kubernetes podjában fut, és alapértelmezés szerint egyenletesen kiegyensúlyozott, körbefutó útválasztást futtat. Mindegyik pod megkapja a kérések rá eső részét a mikroszolgáltatási példányai, más szóval a replikák száma alapján. Az Istio lehetővé teszi az egyenleg manuális megváltoztatását.

Tegyük fel, hogy az ajánlási szolgáltatásunk két verzióját telepítettük az OpenShift rendszeren, az ajánlás-v1-et és az ajánlás-v2-t.
ábrán. Az 1. ábra azt mutatja, hogy ha minden szolgáltatás egy példányban van képviselve, a kérések egyenletesen váltakoznak közöttük: 1-2-1-2-... A Kubernetes útválasztás alapértelmezés szerint így működik:

Posztok sorozata az Istio Service Mesh-en

Súlyozott megoszlás a verziók között

ábrán. A 2. ábra bemutatja, hogy mi történik, ha egyről kettőre növeli a v2 szolgáltatásreplikák számát (ez az oc skála —replicas=2 deployment/recommendation-v2 paranccsal történik). Amint láthatja, a v1 és v2 közötti kérések most egy-három arányban vannak felosztva: 1-2-2-1-2-2-…:

Posztok sorozata az Istio Service Mesh-en

Az Istio-t használó verzió figyelmen kívül hagyása

Az Istio megkönnyíti a kérések elosztásának a szükséges módon történő megváltoztatását. Például az összes forgalmat csak az ajánlás-v1-re küldje a következő Istio yaml fájl használatával:

Posztok sorozata az Istio Service Mesh-en

Itt erre kell figyelni: a hüvelyeket a címkék szerint választják ki. Példánk a v1 címkét használja. A „súly: 100” paraméter azt jelenti, hogy a forgalom 100%-a az összes v1 címkével rendelkező szolgáltatássorba lesz irányítva.

Az irányelvek elosztása a verziók között (Canary Deployment)

Ezután a súly paraméter használatával a forgalmat mindkét podba irányíthatja, figyelmen kívül hagyva az mindegyikben futó mikroszolgáltatási példányok számát. Például itt a forgalom 90%-át a v1-re, 10%-át pedig a v2-re irányítjuk:

Posztok sorozata az Istio Service Mesh-en

Külön útválasztás a mobilfelhasználók számára

Végezetül megmutatjuk, hogyan kényszeríthetjük a mobilfelhasználói forgalom a v2-es szolgáltatásra, mindenki más pedig a v1-re. Ehhez reguláris kifejezésekkel elemezzük a felhasználói ügynök értékét a kérés fejlécében:

Posztok sorozata az Istio Service Mesh-en

Most te jössz

A fejlécek elemzésére szolgáló reguláris kifejezéseket tartalmazó példa arra ösztönzi Önt, hogy megtalálja az Istio útválasztási szabályok saját felhasználási módjait. Ráadásul a lehetőségek itt meglehetősen szélesek, mivel a fejlécértékek az alkalmazás forráskódjában alakíthatók ki.

És ne feledje, hogy az Ops, nem a Dev

Minden, amit a fenti példákban bemutattunk, a forráskód legkisebb változtatása nélkül történik, kivéve azokat az eseteket, amikor speciális kérés fejléceket kell generálni. Az Istio hasznos lesz mind a fejlesztőknek, akik például a tesztelési szakaszban használhatják majd, mind pedig az informatikai rendszerek üzemeltetésével foglalkozó szakembereknek, akiknek nagy segítséget jelent majd a termelésben.

Tehát ismételjük meg ennek a bejegyzéssorozatnak a vezérmotívumát: semmit nem kell módosítania a kódban. Nincs szükség új képek létrehozására vagy új konténerek elindítására. Mindezt a kódon kívül valósítják meg.

Használd a képzeleted

Képzelje csak el a fejlécelemzés lehetőségeit reguláris kifejezések használatával. Legnagyobb ügyfelét szeretné átirányítani az Ön speciális verziójához mikroszolgáltatások? Könnyen! Külön verzióra van szüksége a Chrome böngészőhöz? Nincs mit! Szinte bármilyen jellemző szerint irányíthatja a forgalmat.

Próbáld ki magad

Az Istioról, a Kubernetesről és az OpenShiftről olvasni egy dolog, de miért ne nyúlhatna mindenhez maga? Csapat Red Hat fejlesztői program részletes útmutatót készített (angol nyelven), amely segít ezeknek a technológiáknak a lehető leggyorsabb elsajátításában. A kézikönyv szintén 100%-ban nyílt forráskódú, így nyilvánosan elérhető. A fájl macOS, Linux és Windows rendszeren működik, a forráskód pedig elérhető Java és node.js verziókban (más nyelvű verziók hamarosan megjelennek). Csak nyissa meg a megfelelő git-tárat a böngészőjében Red Hat fejlesztői bemutató.

A következő bejegyzésben: szépen megoldjuk a problémákat

Ma láthatta, mire képesek az Istio útválasztási szabályai. Most képzelje el ugyanezt, de csak a hibakezeléssel kapcsolatban. Pontosan erről lesz szó a következő bejegyzésben.

Forrás: will.com

Hozzászólás