Eng Serie vu Posts op Istio Service Mesh

Mir starten eng Serie vu Posts, déi e puer vun de ville Fäegkeeten vum Istio Service Mesh weisen, wa se kombinéiert mat Red Hat OpenShift a Kubernetes.

Eng Serie vu Posts op Istio Service Mesh

Deel 1, haut:

  • Loosst eis d'Konzept vu Kubernetes Sidecar Container erklären an de Leitmotiv vun dëser Serie vu Posts formuléieren: "Dir musst näischt an Ärem Code änneren".
  • Loosst eis déi fundamental Saach vun Istio aféieren - Routing Regelen. All aner Istio Fonctiounen sinn op hinnen gebaut, well et d'Regele sinn, datt Dir de Verkéier ze Mikroservicer erlaben, benotzt YAML Fichieren externen Service Code. Mir betruechten och de Canary Deployment Deployment Schema. New Joer Bonus - 10 interaktiv Lektioune op Istio


Den zweeten Deel, dee geschwënn kënnt, wäert Iech soen:

  • Wéi Istio implementéiert Pool Ejection a Kombinatioun mam Circuit Breaker a wäert demonstréieren wéi Istio Iech erlaabt en dout oder schlecht performant Pod aus dem Balance Circuit ze läschen.
  • Mir kucken och d'Thema Circuit Breaker aus dem éischte Post fir ze kucken wéi Istio hei benotzt ka ginn. Mir weisen Iech wéi Dir Traffic router an Netzwierkfehler mat YAML Konfiguratiounsdateien an Terminalbefehle behandelt ouni déi geringsten Ännerungen am Servicecode.

Drëtten Deel:

  • Eng Geschicht iwwer Tracing an Iwwerwaachung, déi scho agebaut sinn oder einfach op Istio bäigefüügt sinn. Mir weisen Iech wéi Dir Tools benotzt wéi Prometheus, Jaeger, a Grafana a Kombinatioun mat OpenShift Skala fir ouni Ustrengung Mikroservicearchitekturen ze managen.
  • Mir plënneren vun Iwwerwaachung an Ëmgank Feeler fir se bewosst an de System aféieren. An anere Wierder, mir léiere wéi d'Fehlerinjektioun ze maachen ouni de Quellcode z'änneren, wat aus Tester Siicht ganz wichteg ass - well wann Dir de Code selwer dofir ännert, besteet e Risiko fir zousätzlech Feeler aféieren.

Endlech, am leschte Post op Istio Service Mesh:

  • Loosst eis op d'Däischter Säit goen. Méi präzis wäerte mir léieren den Dark Launch Schema ze benotzen, wann de Code ofgebaut an direkt op Produktiounsdaten getest gëtt, awer beaflosst net d'Operatioun vum System op iergendeng Manéier. Dëst ass wou d'Istio seng Fäegkeet fir de Traffic opzedeelen ass praktesch. An d ' méiglechkeet, iwwerpréiwen op live-produktiounsdaten ouni d ' operatioun vum kampfsystem op iergendeng Manéier ze beaflossen ass déi iwwerzeegend Method vun der Verifizéierung.
  • Bauen op Dark Launch, mir weisen Iech wéi Dir de Canary Deployment Modell benotzt fir Risiko ze reduzéieren an et méi einfach ze maachen neie Code an d'Produktioun ze kréien. Canary Deployment selwer ass wäit net nei, awer Istio erlaabt Iech dëst Schema mat einfachen YAML Dateien ëmzesetzen.
  • Schlussendlech wäerte mir Iech weisen wéi Dir Istio Egress benotzt fir Zougang zu Servicer ze ginn fir déi, déi ausserhalb vun Äre Cluster sinn, fir d'Fäegkeeten vun Istio ze benotzen wann Dir mam Internet schafft.

Also, hei gi mir ...

Istio Iwwerwachung a Management Tools - alles wat Dir braucht fir Mikroservicer an engem Service Mesh ze orchestréieren Service Mesh gemaach.

Wat ass Istio Service Mesh

E Service Mesh implementéiert Funktiounen wéi Traffic Iwwerwaachung, Zougangskontroll, Entdeckung, Sécherheet, Feeler Toleranz an aner nëtzlech Saachen fir eng Grupp vu Servicer. Istio erlaabt Iech all dëst ouni déi geringsten Ännerungen un de Code vun de Servicer selwer ze maachen. Wat ass d'Geheimnis vun der Magie? Istio befestegt säin eegene Proxy un all Service a Form vun engem Sidecar Container (Sidecar ass e Motorrad Sidecar), duerno geet all Traffic op dëse Service duerch de Proxy, deen, guidéiert vu spezifizéierte Politiken, entscheet wéi, wéini an ob dëse Verkéier soll iwwerhaapt de Service erreechen. Istio mécht et och méiglech fortgeschratt DevOps Techniken ëmzesetzen wéi Kanaresch Deployment, Circuit Breaker, Feelerinjektioun a vill anerer.

Wéi funktionéiert Istio mat Container a Kubernetes

Den Istio Service Mesh ass eng Sidecar-Implementatioun vun allem wat néideg ass fir Mikroservicer ze kreéieren an ze managen: Iwwerwaachung, Tracing, Circuit Breaker, Routing, Laaschtbalancéierung, Feelerinjektioun, Retry, Timeouts, Spigelen, Zougangskontroll, Tauxlimitéierung a vill méi. An och wann et haut eng Tonn vu Bibliothéike gëtt fir dës Funktiounen direkt am Code ëmzesetzen, mat Istio kënnt Dir all déiselwecht Saache kréien ouni eppes an Ärem Code z'änneren.

Laut dem Sidecar Modell leeft Istio an engem Linux Container, deen an engem läit Kubernetes-Pod mat engem kontrolléierten Service a sprëtzen an extrahéiert Funktionalitéit an Informatioun no der gegebene Konfiguratioun. Mir betounen datt dëst Är eege Konfiguratioun ass, an et lieft ausserhalb vun Ärem Code. Dofir gëtt de Code vill méi einfach a méi kuerz.

Wat och wichteg ass, ass datt den operationelle Bestanddeel vu Mikroservicer op kee Fall mam Code selwer verbonnen ass, wat heescht datt hir Operatioun sécher un IT Spezialisten transferéiert ka ginn. Tatsächlech, firwat soll den Entwéckler verantwortlech sinn fir Circuit Breaker a Feelerinjektioun? Reagéieren, jo, awer veraarbecht se a kreéieren se? Wann Dir dëst alles aus dem Code läscht, kënnen d'Programméierer sech voll op d'Applikatiounsfunktionalitéit konzentréieren. An de Code selwer wäert méi kuerz a méi einfach ginn.

Service Mesh gemaach

Istio, déi Funktiounen implementéiert fir Mikroservicer ausserhalb vun hirem Code ze managen, ass d'Konzept vun engem Service Mesh. An anere Wierder, et ass eng koordinéiert Grupp vun engem oder méi Binären déi e Mesh vun Netzwierkfunktiounen bilden.

Wéi funktionéiert Istio mat Mikroservicer

Dëst ass wéi d'Aarbecht vu Sidecar Container ausgesäit a Verbindung mat Kubernetes и Minishift bird's eye view: Start eng Instanz vu Minishift, erstellt e Projet fir Istio (loosst eis et "istio-System" nennen), installéieren a lafen all Istio-relatéiert Komponenten. Dann, wéi Dir Projeten a Pods erstellt, füügt Dir Konfiguratiounsinformatioun un Är Deployementer un, an Är Pods fänken un Istio ze benotzen. E vereinfacht Diagramm gesäit esou aus:

Eng Serie vu Posts op Istio Service Mesh

Elo kënnt Dir Istio Astellungen änneren fir, zum Beispill, Feeler Sprëtz ze organiséieren, Ënnerstëtzung Kanaresch Deployment oder aner Istio Fonctiounen - an all dëst ouni de Code vun den Uwendungen selwer ze beréieren. Loosst eis soen datt Dir all Webverkéier vu Benotzer vun Ärem gréisste Client (Foo Corporation) op eng nei Versioun vum Site wëllt viruleeden. Fir dëst ze maachen, erstellt einfach eng Istio Routing Regel déi no @foocorporation.com an der Benotzer ID sicht an deementspriechend ëmgeleet. Fir all aner Benotzer wäert näischt änneren. An der Tëschenzäit wäert Dir déi nei Versioun vum Site roueg testen. A bemierkt datt Dir guer net Entwéckler braucht fir dëst ze involvéieren.

A wäert Dir deier dofir bezuelen?

Guer net. Istio ass zimmlech séier a gëtt ageschriwwen Go a schaaft ganz wéineg Overhead. Zousätzlech gëtt de méigleche Verloscht vun der Online Produktivitéit duerch eng Erhéijung vun der Entwécklerproduktivitéit kompenséiert. Op d'mannst an der Theorie: Vergiesst net datt d'Entwéckler Zäit wäertvoll ass. Wat d'Softwarekäschte ugeet, ass Istio Open Source Software, sou datt Dir se gratis kënnt kréien a benotzen.

Meeschter et selwer

D'Red Hat Entwéckler Experience Team huet en am-Déift Handwierk entwéckelt Leadership vum Istio (op Englesch). Et leeft op Linux, MacOS a Windows, an de Code ass verfügbar op Java an Node.js.

10 interaktiv Lektioune op Istio

Block 1 - Fir Ufänger

Aféierung an Istio
30 Minutte laang
Loosst eis mat Service Mesh kennen léieren, léiere wéi Istio an engem OpenShift Kubernetes Cluster installéiert.
Ufänken

Mikroservicer an Istio ofsetzen
30 Minutte laang
Mir benotzen Istio fir dräi Mikroservicer mat Spring Boot a Vert.x z'installéieren.
Ufänken

Block 2 - Mëttelstuf

Iwwerwachung an Tracing zu Istio
60 Minutte laang
Mir entdecken Istio's agebaute Iwwerwaachungsinstrumenter, personaliséiert Metriken, an OpenTracing iwwer Prometheus a Grafana.
Ufänken

Einfach Routing zu Istio
60 Minutte laang
Léiert wéi Dir Routing an Istio verwalten mat einfache Regelen.
Ufänken

Fortgeschratt Routing Regelen
60 Minutte laang
Loosst eis e Bléck op d'Istio Smart Routing, Zougangskontroll, Laaschtbalancéierung an Taux limitéieren.
Ufänken

Block 3 - fortgeschratt Benotzer

Feeler Injektioun zu Istio
60 Minutte laang
Mir studéieren Echec Handhabung Szenarie a verdeelt Uwendungen, erstellt HTTP-Feeler an Netzwierkverzögerungen, a léiere Chaos-Ingenieur ze benotzen fir d'Ëmwelt ze restauréieren.
Ufänken

Circuit Breaker zu Istio
30 Minutte laang
Mir installéieren Siege fir Stresstestplazen a léiere wéi Dir Backend Fehltoleranz mat Replays, Circuit Breaker a Pool Ejection garantéiert.
Ufänken

Egress an Istio
10 Minutte laang
Mir benotzen Egress routes fir Regele fir d'Interaktioun vun internen Servicer mat externen APIen a Servicer ze kreéieren.
Ufänken

Istio an Kiali
15 Minutte laang
Léiert Kiali ze benotzen fir en Iwwerbléck iwwer de Service Mesh ze kréien an d'Ufro an d'Datestroum z'entdecken.
Ufänken

Géigesäitege TLS zu Istio
15 Minutte laang
Mir kreéieren Istio Gateway a VirtualService, da studéiere mir géigesäitege TLS (mTLS) a seng Astellungen am Detail.
Ufänken

Block 3.1 - Deep Dive: Istio Service Mesh fir Mikroservicer

Eng Serie vu Posts op Istio Service Mesh
Iwwer wat geet d'Buch:

  • Wat ass e Service Mesh?
  • Den Istio System a seng Roll an der Mikroservicearchitektur.
  • Benotzt Istio fir déi folgend Probleemer ze léisen:
    • Feeler Toleranz;
    • Routing;
    • Chaos Testen;
    • Sécherheet;
    • Telemetriesammlung mat Spuren, Metriken a Grafana.

Luet e Buch erof

Serie vun Artikelen iwwer Service Meshes an Istio

Probéiert et selwer

Dës Serie vu Posts ass net geduecht fir en déif Tauch an d'Welt vun Istio ze bidden. Mir wëllen Iech just d'Konzept virstellen an Iech vläicht inspiréiere fir Istio selwer ze probéieren. Et ass komplett gratis ze maachen, a Red Hat bitt all Tools déi Dir braucht fir mat OpenShift, Kubernetes, Linux Container an Istio unzefänken, inklusiv: Red Hat Entwéckler OpenShift Container Plattform, eise Guide zu Istio an aner Ressourcen op eis microsite op Service Mesh. Zéckt net, fänkt haut un!

Istio Routing Regelen: Dirigent Service Ufroe wou se musse goen

oppenshift и Kubernetes maachen eng excellent Aarbecht vun Adress microservices op déi erfuerderlech Pods geréckelt. Dëst ass ee vun de Grënn fir d'Existenz vu Kubernetes - Routing a Belaaschtung. Awer wat wann Dir méi subtile a raffinéiert Routing braucht? Zum Beispill, fir gläichzäiteg zwou Versioune vun engem Mikroservice ze benotzen. Wéi kann Istio Route Regelen hei hëllefen?

Routing Regelen sinn d'Regelen déi tatsächlech de Choix vum Wee bestëmmen. Onofhängeg vum Niveau vun der Systemkomplexitéit bleift den allgemenge Betribsprinzip vun dëse Regelen einfach: Ufroe ginn op Basis vu bestëmmte Parameteren an HTTP Header Wäerter geréckelt.
Loosst eis Beispiller kucken:

Kubernetes Standard: trivial "50/50"

An eisem Beispill wäerte mir weisen wéi Dir gläichzäiteg zwou Versioune vun engem Mikroservice an OpenShift benotzt, loosst eis se v1 a v2 nennen. All Versioun leeft a sengem eegene Kubernetes Pod, a Par défaut leeft se gläichméisseg equilibréiert Round Robin Routing. All Pod kritt säin Undeel vun Ufroe baséiert op der Zuel vu senge Mikroservice-Instanzen, an anere Wierder, Repliken. Istio erlaabt Iech dëst Gläichgewiicht manuell z'änneren.

Loosst eis soen datt mir zwou Versioune vun eisem Empfehlungsservice op OpenShift ofgesat hunn, Empfehlung-v1 a Empfehlung-v2.
An Fig. Figur 1 weist datt wann all Service an enger Instanz vertruede gëtt, Ufroe gläichméisseg tëscht hinnen alternéieren: 1-2-1-2- ... Dëst ass wéi de Kubernetes Routing als Standard funktionnéiert:

Eng Serie vu Posts op Istio Service Mesh

Gewiichtsverdeelung tëscht Versiounen

An Fig. Figur 2 weist wat geschitt wann Dir d'Zuel vu v2 Service Replicas vun engem op zwee erhéicht (dëst gëtt mat der oc Skala gemaach - Replicas = 2 Deployment / Recommendation-v2 Kommando). Wéi Dir gesitt, sinn Ufroen tëscht v1 a v2 elo an engem Verhältnis vun engem bis dräi opgedeelt: 1-2-2-1-2-2-...:

Eng Serie vu Posts op Istio Service Mesh

Ignoréieren Versioun benotzt Istio

Istio mécht et einfach d'Verdeelung vun Ufroen ze änneren wéi mir brauchen. Schéckt zum Beispill all Traffic nëmmen op Empfehlung-v1 mat der folgender Istio yaml Datei:

Eng Serie vu Posts op Istio Service Mesh

Hei musst Dir op dat oppassen: Pods ginn no den Etiketten ausgewielt. Eist Beispill benotzt Label v1. De "Gewiicht: 100" Parameter bedeit datt 100% vum Traffic op all Service Pods geréckelt gëtt, déi de v1 Label hunn.

Direktivverdeelung tëscht Versiounen (Canary Deployment)

Als nächst, mam Gewiichtparameter benotzt, kënnt Dir de Traffic op béid Pods dirigéieren, andeems Dir d'Zuel vun de Mikroservice-Instanzen ignoréiert, déi a jiddereng vun hinnen lafen. Zum Beispill, hei dirigéiere mir 90% vum Traffic op v1 an 10% op v2:

Eng Serie vu Posts op Istio Service Mesh

Separat Routing fir mobil Benotzer

Als Schlussfolgerung wäerte mir weisen wéi een de mobilen Benotzerverkéier forcéiere fir op de Service v2 geréckelt ze ginn, an all déi aner op v1. Fir dëst ze maachen, benotze mir regulär Ausdréck fir de Benotzer-Agent-Wäert am Ufro-Header ze analyséieren:

Eng Serie vu Posts op Istio Service Mesh

Elo du

D'Beispill mat reegelméissegen Ausdrock fir d'Parsing Header sollt Iech motivéieren fir Är eege Benotzung vun Istio Routing Regelen ze fannen. Ausserdeem sinn d'Méiglechkeeten hei zimlech extensiv, well Headerwäerter kënnen am Applikatiounsquellcode geformt ginn.

An denkt drun datt Ops, net Dev

Alles wat mir an den Beispiller hei uewen gewisen hunn ass ouni déi geringsten Ännerungen am Quellcode gemaach, gutt, ausser fir déi Fäll wou et néideg ass speziell Ufro Header ze generéieren. Istio wäert souwuel fir Entwéckler nëtzlech sinn, déi zum Beispill et an der Teststadium benotze kënnen, an och fir Spezialisten an der Operatioun vun IT Systemer, fir déi et an der Produktioun immens hëllefe wäert.

Also loosst eis de Leitmotiv vun dëser Serie vu Posts widderhuelen: Dir braucht näischt an Ärem Code ze änneren. Et ass net néideg nei Biller ze bauen oder nei Container ze starten. All dëst gëtt ausserhalb vum Code implementéiert.

Benotzt Är Fantasie

Stellt Iech just d'Méiglechkeete vun der Headeranalyse vir mat regelméissegen Ausdréck. Wëllt Dir Äre gréisste Client op eng speziell Versioun vun Ärem microservices? Einfach! Braucht Dir eng separat Versioun fir de Chrome Browser? Kee Problem! Dir kënnt de Traffic no bal all Charakteristike route.

Probéiert et selwer

Iwwer Istio, Kubernetes an OpenShift liesen ass eng Saach, awer firwat net alles selwer beréieren? Equipe Red Hat Entwéckler Programm huet en detailléierte Guide (op englesch) virbereet, deen Iech hëlleft dës Technologien sou séier wéi méiglech ze beherrschen. D'Handbuch ass och 100% Open Source, sou datt et am Domaine public gepost gëtt. D'Datei funktionnéiert op macOS, Linux a Windows, an de Quellcode ass verfügbar op Java an node.js Versiounen (Versiounen an anere Sprooche kommen geschwënn). Maacht just de entspriechende Git Repository an Ärem Browser op Red Hat Entwéckler Demo.

Am nächste Post: Mir schaffen Problemer schéin aus

Haut hutt Dir gesinn wat d'Istio Routing Regele kënne maachen. Stellt Iech elo déi selwecht Saach vir, awer nëmmen a Relatioun mam Fehlerhandhabung. Dat ass genau iwwer wat mir am nächste Post schwätzen.

Source: will.com

Setzt e Commentaire