Una seria di posti nantu à Istio Service Mesh

Cumincemu una seria di posti chì mostranu alcune di e molte capacità di Istio Service Mesh quandu sò cumminati cù Red Hat OpenShift è Kubernetes.

Una seria di posti nantu à Istio Service Mesh

Prima parte, oghje:

  • Spieghemu u cuncettu di cuntenituri sidecar di Kubernetes è formulemu u leitmotiv di sta serie di posti: "Ùn avete bisognu di cambià nunda in u vostru codice".
  • Fighjemu a cosa fundamentale di Istio - reguli di routing. Tutti l'altri funziunalità di Istio sò custruiti nantu à elli, postu chì sò e regule chì permettenu di diretta u trafficu à i microservizi, utilizendu i schedari YAML esterni à u codice di serviziu. Avemu ancu cunsiderà u schema di implementazione di Canary Deployment. Bonus d'annu novu - 10 lezioni interattivi nantu à Istio


A seconda parte, prestu prestu, vi dicerà:

  • Cumu Istio implementa Pool Ejection in cumbinazione cù Circuit Breaker è vi dimustrà cumu Istio vi permette di sguassà un pod mortu o pocu performante da u circuitu di equilibriu.
  • Fighjemu ancu u tema di Circuit Breaker da u primu postu per vede cumu Istio pò esse usatu quì. Vi mustraremu cumu indirizzà u trafficu è trattà l'errori di a rete utilizendu i schedarii di cunfigurazione YAML è i cumandamenti di terminal senza i minimi cambiamenti in u codice di serviziu.

Terza parte:

  • Una storia nantu à a traccia è u monitoraghju, chì sò digià integrati o facilmente aghjuntu à Istio. Vi mustraremu cumu utilizà strumenti cum'è Prometheus, Jaeger è Grafana in cumbinazione cù a scala OpenShift per gestisce senza sforzu l'architetture di microservizi.
  • Passemu da u monitoraghju è a gestione di l'errori à l'introduce in u sistema intenzionalmente. In altri palori, avemu amparate à fà iniezione di difetti senza cambià u codice fonte, chì hè assai impurtante da un puntu di vista di prova - postu chì si cambia u codice stessu per questu, ci hè u risicu di introduzione di errori supplementari.

Infine, in u post finale nantu à Istio Service Mesh:

  • Andemu à u Latu Oscuru. Più precisamente, avemu da amparà à aduprà u schema Launch scuru, quandu u codice hè dispiegata è pruvata direttamente nantu à i dati di pruduzzione, ma ùn affetta micca u funziunamentu di u sistema in ogni modu. Hè quì chì a capacità di Istio di sparte u trafficu hè utile. È a capacità di pruvà nantu à e dati di produzzione in diretta senza affettà l'operazione di u sistema di cummattimentu in ogni modu hè u metudu più cunvincente di verificazione.
  • Basendu nantu à Dark Launch, vi mustraremu cumu utilizà u mudellu Canary Deployment per riduce u risicu è rende più faciule per uttene un novu codice in produzzione. Canary Deployment stessu hè luntanu da novu, ma Istio vi permette di implementà stu schema cù solu schedarii YAML simplici.
  • Infine, vi mustraremu cumu utilizà Istio Egress per dà accessu à i servizii à quelli chì sò fora di i vostri clusters per utilizà e capacità di Istio quandu travaglia cù Internet.

Allora, eccu andemu...

Strumenti di monitoraghju è gestione Istio - tuttu ciò chì avete bisognu per orchestrate i microservizi in una rete di serviziu rete di serviziu.

Cosa hè Istio Service Mesh

Una rete di serviziu implementa funzioni cum'è u monitoraghju di u trafficu, u cuntrollu di l'accessu, a scuperta, a sicurità, a toleranza di difetti è altre cose utili per un gruppu di servizii. Istio permette di fà tuttu questu senza u minimu cambiamenti à u codice di i servizii stessi. Chì ghjè u sicretu di a magia? Istio attache u so propiu proxy à ogni serviziu in a forma di un containeru sidecar (sidecar hè un sidecar di motocicletta), dopu chì tuttu u trafficu à stu serviziu passa per u proxy, chì, guidatu da e pulitiche specificate, decide cumu, quandu è se stu trafficu. duverebbe ghjunghje à u serviziu in tuttu. Istio permette ancu di implementà tecniche DevOps avanzate cum'è implementazioni di canari, interruttori di circuiti, iniezione di difetti è assai altri.

Cumu Istio travaglia cù cuntenituri è Kubernetes

A rete di serviziu Istio hè una implementazione sidecar di tuttu ciò chì hè necessariu per creà è gestisce i microservizi: monitoraghju, traccia, circuit breakers, routing, bilanciamentu di carica, iniezione di difetti, tentativi, timeouts, mirroring, cuntrollu d'accessu, limitazione di a tarifa è assai di più. E ancu s'è oghje ci sò una tonna di biblioteche per implementà queste funzioni direttamente in codice, cù Istio pudete uttene tutte e cose senza cambià nunda in u vostru codice.

Sicondu u mudellu sidecar, Istio corre in un containeru Linux, chì si trova in unu Kubernetes-pod cun un serviziu cuntrullatu è injects and extracts funziunalità è infurmazione secondu a cunfigurazione data. Enfatimu chì questu hè a vostra cunfigurazione, è vive fora di u vostru codice. Dunque, u codice diventa assai più simplice è più cortu.

Ciò chì hè ancu impurtante hè chì u cumpunente operativu di i microservizi ùn hè micca cunnessu cù u codice stessu, chì significa chì u so funziunamentu pò esse trasferitu in modu sicuru à i specialisti IT. Infatti, perchè u sviluppatore deve esse rispunsevule per i circuit breakers è l'iniezione di difetti? Reagisce, sì, ma li processà è li crea ? Se sguassate tuttu questu da u codice, i programatori puderanu fucalizza cumplettamente nantu à a funziunalità di l'applicazione. È u codice stessu diventerà più cortu è simplice.

Maglia di serviziu

Istio, chì implementa funzioni per gestisce i microservizi fora di u so codice, hè u cuncettu di Service Mesh. In altre parolle, hè un gruppu coordinatu di unu o più binari chì formanu una maglia di funzioni di rete.

Cumu Istio travaglia cù i microservizi

Hè ciò chì u travagliu di cuntenituri sidecar s'assumiglia in cunghjunzione Kubernetes и Minishift vista d'uccello: lanciate una istanza di Minishift, create un prughjettu per Istio (chiamemu "istio-system"), installate è eseguite tutti i cumpunenti di Istio. Allora, cum'è create prughjetti è pods, aghjunghje infurmazione di cunfigurazione à i vostri implementazioni, è i vostri pods cumincianu à aduprà Istio. Un diagramma simplificatu s'assumiglia cusì:

Una seria di posti nantu à Istio Service Mesh

Avà pudete cambià i paràmetri di Istio in ordine, per esempiu, per urganizà iniezione di difetti, supportu Impiegazione Canaria o altre funziunalità Istio - è tuttu questu senza toccu u codice di l'applicazioni stessi. Diciamu chì vulete redirige tuttu u trafficu web da l'utilizatori di u vostru cliente più grande (Foo Corporation) à una nova versione di u situ. Per fà questu, simpricimenti creanu una regula di routing Istio chì cercarà @foocorporation.com in l'ID d'utilizatore è redirezzione in cunseguenza. Per tutti l'altri utilizatori, nunda ùn cambierà. Intantu, vi prubarà calmu a nova versione di u situ. È nutate chì ùn avete micca bisognu di participà à i sviluppatori per questu.

È avete da pagà caru per questu?

Affattu. Istio hè abbastanza veloce è hè scrittu in Go è crea assai pocu overhead. Inoltre, a perdita pussibule in a produtividade in linea hè compensata da un aumentu di a produtividade di u sviluppatore. Almenu in teoria: ùn vi scurdate chì u tempu di i sviluppatori hè preziosu. In quantu à i costi di u software, Istio hè un software open source, cusì pudete uttene è aduprà gratuitamente.

Maestru stessu

U Red Hat Developer Experience Team hà sviluppatu una pratica in profonda dirigenza di Istio (in inglese). Funziona in Linux, MacOS è Windows, è u codice hè dispunibule in Java è Node.js.

10 lezioni interattive nantu à Istio

Block 1 - Per i principianti

Introduzione à Istio
30 minuti
Cunniscitemu cù Service Mesh, amparate cumu installà Istio in un cluster OpenShift Kubernetes.
Cuminciate

Implementazione di microservizi in Istio
30 minuti
Usemu Istio per implementà trè microservizi cù Spring Boot è Vert.x.
Cuminciate

Block 2 - livellu intermediu

Surveillance et traçabilité à Istio
60 minuti
Esploraremu l'arnesi di monitoraghju integrati d'Istio, e metriche persunalizate è OpenTracing via Prometheus è Grafana.
Cuminciate

Routage simple à Istio
60 minuti
Amparate à gestisce u routing in Istio usendu regule simplici.
Cuminciate

Regoli avanzati di routing
60 minuti
Fighjemu un sguardu à u routing intelligente d'Istio, u cuntrollu di l'accessu, l'equilibriu di carica è a limitazione di a tarifa.
Cuminciate

Block 3 - utilizatore avanzatu

Fault Injection in Istio
60 minuti
Studiemu scenarii di gestione di fallimenti in applicazioni distribuite, creendu errori HTTP è ritardi di rete, è amparà à utilizà l'ingegneria di u caosu per restaurà l'ambiente.
Cuminciate

Disjoncteur à Istio
30 minuti
Installemu Siege per i siti di teste di stress è amparà à assicurà a tolleranza di i difetti di u backend usendu replays, circuit breaker è ejection pool.
Cuminciate

Egress è Istio
10 minuti
Utilizemu e rotte Egress per creà regule per l'interazzione di servizii internu cù API è servizii esterni.
Cuminciate

Istio è Kiali
15 minuti
Amparate à utilizà Kiali per avè una visione generale di a rete di serviziu è scopre i flussi di richieste è dati.
Cuminciate

TLS mutualiste à Istio
15 minuti
Creemu Istio Gateway è VirtualService, dopu studiemu TLS mutuale (mTLS) è i so paràmetri in detail.
Cuminciate

Block 3.1 - Deep Dive: Istio Service Mesh per i Microservizi

Una seria di posti nantu à Istio Service Mesh
Chì ghjè u libru:

  • Cosa hè una rete di serviziu?
  • U sistema Istio è u so rolu in l'architettura di microserviziu.
  • Utilizendu Istio per risolve i seguenti prublemi:
    • Tolleranza à i difetti;
    • routing;
    • prova di caos;
    • Seguretat;
    • Raccolta di telemetria cù tracce, metriche è Grafana.

Scaricate un libru

Seria d'articuli nantu à e rete di serviziu è Istio

Pruvate voi stessu

Questa serie di posti ùn hè micca destinata à furnisce una immersione profonda in u mondu di Istio. Vulemu solu presentà u cuncettu è forsi ti inspirà à pruvà Istio per sè stessu. Hè cumplettamente liberu di fà, è Red Hat furnisce tutte l'arnesi chì avete bisognu per inizià cù OpenShift, Kubernetes, cuntenituri Linux, è Istio, cumprese: Red Hat Developer OpenShift Container Platform, a nostra guida à Istio è altre risorse nantu à u nostru microsite nantu à Service Mesh. Ùn ritardu, cuminciate oghje !

Reguli di routing Istio: dirigendu e dumande di serviziu induve anu bisognu à andà

turnu apertu и Kubernetes fate un travagliu eccellente di indirizzà microservices instradatu à i podi necessarii. Questu hè unu di i mutivi per l'esistenza di Kubernetes - routing è bilanciamentu di carica. Ma chì si avete bisognu di un routing più sottile è sofisticatu? Per esempiu, per aduprà simultaneamente duie versioni di un microserviziu. Cumu l'Istio Route Rules ponu aiutà quì?

I reguli di rotta sò e regule chì determinanu veramente a scelta di a strada. Indipendentemente da u nivellu di cumplessità di u sistema, u principiu generale di u funziunamentu di sti reguli resta simplice: e dumande sò indirizzate in basa di certi parametri è valori di header HTTP.
Fighjemu l'esempii:

Kubernetes predefinitu: triviale "50/50"

In u nostru esempiu, mustraremu cumu utilizà simultaneamente duie versioni di un microserviziu in OpenShift, chjamemu v1 è v2. Ogni versione funziona in u so propiu pod Kubernetes, è di manera predeterminata esegue un routing round robin uniformemente equilibratu. Ogni pod riceve a so parte di e dumande basatu annantu à u numeru di i so istanze di microserviziu, in altre parolle, repliche. Istio permette di cambià stu equilibriu manualmente.

Diciamu chì avemu implementatu duie versioni di u nostru serviziu di raccomandazione in OpenShift, recommendation-v1 è recommendation-v2.
In Fig. A Figura 1 mostra chì quandu ogni serviziu hè rapprisintatu in una sola istanza, e dumande si alternanu in modu uniforme trà elli: 1-2-1-2-... Hè cusì chì u routing Kubernetes funziona per difettu:

Una seria di posti nantu à Istio Service Mesh

Distribuzione ponderata trà e versioni

In Fig. A Figura 2 mostra ciò chì succede si aumenta u numeru di rèpliche di serviziu v2 da unu à dui (questu hè fattu cù a scala oc -replicas = 2 deployment/recommendation-v2 command). Comu pudete vede, e dumande trà v1 è v2 sò avà divisu in un rapportu unu à trè: 1-2-2-1-2-2-...:

Una seria di posti nantu à Istio Service Mesh

Ignora a versione cù Istio

Istio facilita à cambià a distribuzione di e dumande in a manera chì avemu bisognu. Per esempiu, mandate tuttu u trafficu solu à raccomandazione-v1 utilizendu u seguente file Istio yaml:

Una seria di posti nantu à Istio Service Mesh

Eccu avete bisognu di attentu à questu: i baccelli sò selezziunati secondu l'etichette. U nostru esempiu usa l'etichetta v1. U paràmetru "pesu: 100" significa chì u 100% di u trafficu serà indirizzatu à tutti i podi di serviziu chì anu l'etichetta v1.

Distribuzione di direttive trà e versioni (Deployment Canary)

In seguitu, utilizendu u paràmetru di pesu, pudete dirighje u trafficu à i dui pods, ignorendu u numeru di istanze di microservizi in esecuzione in ognuna di elli. Per esempiu, quì dirigemu u 90% di u trafficu à v1 è u 10% à v2:

Una seria di posti nantu à Istio Service Mesh

Routing separatu per l'utilizatori mobili

In cunclusioni, mustraremu cumu furzà u trafficu di l'utilizatori mobili per esse instradatu à u serviziu v2, è tutti l'altri à v1. Per fà questu, usemu espressioni regulari per analizà u valore di l'agente d'utilizatore in l'intestazione di a dumanda:

Una seria di posti nantu à Istio Service Mesh

Avà hè u vostru turnu

L'esempiu cù l'espressioni regulari per l'analisi di l'intestazione duverebbe motivà à truvà u vostru propiu usu di e regule di routing Istio. Inoltre, e pussibulità quì sò abbastanza vaste, postu chì i valori di l'intestazione ponu esse furmati in u codice fonte di l'applicazione.

È ricordate chì Ops, micca Dev

Tuttu ciò chì avemu dimustratu in l'esempii sopra hè fattu senza i più minimi cambiamenti in u codice fonte, bè, salvu quelli casi quandu hè necessariu di generà intestazioni di dumanda speciale. Istio serà utile à i sviluppatori, chì, per esempiu, puderanu aduprà in a fase di prova, è à i specialisti in u funziunamentu di i sistemi IT, per quale aiuterà assai in a produzzione.

Allora ripetemu u leitmotiv di sta serie di posti: ùn avete bisognu di cambià nunda in u vostru codice. Ùn ci hè bisognu di custruisce novi imaghjini o lancià novi cuntenituri. Tuttu chistu hè implementatu fora di u codice.

Aduprate a vostra imaginazione

Immaginate e pussibilità di l'analisi di l'intestazione utilizendu espressioni regulari. Vulete reindirizzà u vostru cliente più grande à una versione speciale di u vostru microservices? Facilmente! Avete bisognu di una versione separata per u navigatore Chrome? Nisunu prublema! Pudete indirizzà u trafficu secondu quasi ogni caratteristica.

Pruvate voi stessu

A lettura di Istio, Kubernetes è OpenShift hè una cosa, ma perchè ùn tocca micca tuttu sè stessu? squadra U prugramma di sviluppu di Red Hat hà preparatu una guida dettagliata (in inglese) chì vi aiuterà à ammaistrà queste tecnulugia u più prestu pussibule. U manual hè ancu 100% open source, cusì hè publicatu in u duminiu publicu. U schedariu funziona in macOS, Linux è Windows, è u codice fonte hè dispunibule in versione Java è node.js (versioni in altre lingue prestu). Basta à apre u repository git currispundente in u vostru navigatore Red Hat Developer Demo.

In u prossimu post: risolvemu i prublemi bè

Oghje avete vistu ciò chì e regule di routing Istio ponu fà. Avà imaginate a stessa cosa, ma solu in relazione à a gestione di l'errore. Questu hè esattamente ciò chì parleremu in u prossimu post.

Source: www.habr.com

Add a comment