Una sèrie de publicacions a Istio Service Mesh

Estem començant una sèrie de publicacions que demostren algunes de les moltes característiques de Istio Service Mesh en combinació amb Red Hat OpenShift i Kubernetes.

Una sèrie de publicacions a Istio Service Mesh

Primera part avui:

  • Expliquem el concepte dels contenidors sidecar de Kubernetes i formulem el leitmotiv d'aquesta sèrie de publicacions: "no cal que canvieu res al vostre codi".
  • Imaginem el fonamental d'Istio: les regles d'encaminament. Totes les altres funcions d'Istio es basen en elles, ja que són les regles les que us permeten dirigir el trànsit a microserveis mitjançant fitxers YAML externs al codi de servei. També considerem l'esquema de desplegament de Canary Deployment. Bonificació d'Any Nou: 10 lliçons interactives d'Istio


La segona part, que sortirà aviat, us dirà:

  • Com Istio implementa Pool Ejection juntament amb Circuit Breaker i demostra com Istio us permet eliminar un pod inactiu o amb un rendiment baix de l'esquema d'equilibri.
  • També veurem el tema Circuit Breaker de la primera publicació sobre com es pot utilitzar Istio aquí. Mostrarem com encaminar el trànsit i gestionar els errors de xarxa sense el més mínim canvi en el codi de servei mitjançant fitxers de configuració YAML i ordres de terminal.

Tercera part:

  • Una història sobre el seguiment i el seguiment que ja està integrada o que s'afegeix fàcilment a Istio. Us mostrarem com utilitzar eines com Prometheus, Jaeger i Grafana juntament amb l'escalat d'OpenShift per gestionar sense esforç la vostra arquitectura de microserveis.
  • Estem passant del seguiment i gestió dels errors a introduir-los al sistema de manera intencionada. És a dir, aprenem a fer la injecció d'errors sense canviar el codi font, la qual cosa és molt important des del punt de vista de les proves, perquè si canvieu el propi codi per a això, hi ha el risc d'introduir errors addicionals.

Finalment, a la publicació final sobre Istio Service Mesh:

  • Anem al costat fosc. Més precisament, aprendrem a utilitzar l'esquema Dark Launch, quan el codi es desplega i es prova directament a les dades de producció, però no afecta de cap manera el funcionament del sistema. Aquí és on la capacitat d'Istio per dividir el trànsit és útil. I la possibilitat de realitzar proves amb dades de producció en directe sense afectar de cap manera el funcionament del sistema de combat és la forma més convincent de comprovar-ho.
  • A partir de Dark Launch, us mostrarem com utilitzar el model Canary Deployment per reduir el risc i facilitar la implementació de codi nou. El desplegament de Canary no és nou, però Istio us permet implementar aquest esquema només amb fitxers YAML senzills.
  • En conclusió, mostrarem com utilitzar Istio Egress per donar accés als serveis a aquells que es troben fora dels vostres clústers per tal d'utilitzar les capacitats d'Istio quan treballeu amb Internet.

Així que marxem...

Kit d'eines de supervisió i gestió d'Istio: tot el que necessiteu per coordinar microserveis en una malla de serveis malla de servei.

Què és Istio Service Mesh

La malla de servei implementa per a un grup de serveis funcions com ara la vigilància del trànsit, el control d'accés, la descoberta, la seguretat, la tolerància a errors i altres coses útils. Istio permet fer tot això sense el més mínim canvi en el codi dels propis serveis. Quin és el secret de la màgia? Istio adjunta el seu propi proxy a cada servei en forma de contenidor sidecar (sidecar és un sidecar de moto), després del qual tot el trànsit cap a aquest servei passa pel proxy, que, guiat per les polítiques especificades, decideix com, quan i si això. el trànsit hauria d'arribar al servei. Istio també us ofereix la possibilitat d'implementar tècniques DevOps avançades, com ara desplegaments canaris, interruptors de circuit, injecció de fallades i molt més.

Com funciona Istio amb contenidors i Kubernetes

La malla de servei Istio és una implementació sidecar de tot el que necessiteu per crear i gestionar microserveis: monitorització, traça, interruptors de circuit, encaminament, equilibri de càrrega, injecció d'errors, reintents, temps d'espera, rèplica, control d'accés, limitació de velocitat i molt més. I tot i que avui dia hi ha un munt de biblioteques per implementar aquestes funcions directament al codi, amb Istio podeu obtenir exactament el mateix sense canviar res al vostre codi.

Segons el model de sidecar, Istio s'executa en un contenidor Linux, que es troba en un Kubernetes-pod amb un servei controlat i implementa (injecta) i extreu (extreu) funcionalitats i informació segons la configuració donada. Destaquem que aquesta és la vostra pròpia configuració i que viu fora del vostre codi. Per tant, el codi es fa molt més senzill i curt.

Més important encara, el component operatiu dels microserveis no està de cap manera relacionat amb el codi en si, la qual cosa significa que el seu funcionament es pot transferir de manera segura als especialistes informàtics. De fet, per què un desenvolupador hauria de ser responsable dels interruptors i la injecció de fallades? Reaccionar, sí, però processar-los i crear-los? Si elimineu tot això del codi, els programadors es poden centrar completament en la funcionalitat de l'aplicació. I el codi en si es farà més curt i senzill.

Graella de serveis

Istio, que implementa les funcions de gestió dels microserveis fora del seu codi: aquest és el concepte de Service Mesh. En altres paraules, és un grup coordinat d'un o més binaris que formen una graella de funcions de xarxa.

Com funciona Istio amb microserveis

Així és com funcionen conjuntament els contenidors sidecar Kubernetes и mini-canvi vista d'ocell: inicieu una instància de Minishift, creeu un projecte Istio (anomenarem-lo "istio-system"), instal·leu i executeu tots els components relacionats amb Istio. A continuació, a mesura que creeu projectes i pods, afegiu informació de configuració als vostres desplegaments i els vostres pods comencen a utilitzar Istio. Un diagrama simplificat és el següent:

Una sèrie de publicacions a Istio Service Mesh

Ara podeu canviar la configuració d'Istio per, per exemple, organitzar la injecció d'errors, el suport Desplegament Canari o altres característiques d'Istio -i tot això sense tocar el codi de les aplicacions mateixes. Suposem que voleu redirigir tot el trànsit web dels usuaris del vostre client més gran (Foo Corporation) a una versió nova del vostre lloc. Tot el que heu de fer és crear una regla d'encaminament d'Istio que cerqui @foocorporation.com a l'identificador d'usuari i redirigeixi en conseqüència. Per a la resta d'usuaris, res canviarà. Mentrestant, estareu provant en silenci la nova versió del lloc. I tingueu en compte que per a això no és absolutament necessari implicar els desenvolupadors.

I quant has de pagar per això?

No del tot. Istio és bastant ràpid, està escrit Go i crea una sobrecàrrega molt petita. A més, una possible pèrdua de productivitat en línia es compensa amb un augment de la productivitat dels desenvolupadors. Almenys en teoria: no oblideu que el temps dels desenvolupadors és valuós. Pel que fa als costos del programari, Istio és programari de codi obert, de manera que és gratuït d'aconseguir i utilitzar.

Domina-ho tu mateix

L'equip d'experiència del desenvolupador de Red Hat ha desenvolupat una pràctica pràctica en profunditat lideratge per Istio (en anglès). S'executa a Linux, MacOS i Windows, i el codi ve amb els sabors Java i Node.js.

10 lliçons interactives d'Istio

Bloc 1 - Per a principiants

Introducció a Istio
Minuts 30
Ens familiaritzem amb Service Mesh, aprenem a instal·lar Istio al clúster Kubernetes OpenShift.
Començar

Implantació de microserveis a Istio
Minuts 30
Utilitzem Istio per implementar tres microserveis amb Spring Boot i Vert.x.
Començar

Bloc 2 - nivell mitjà

Seguiment i rastreig a Istio
Minuts 60
Exploreu les eines de supervisió integrades d'Istio, les mètriques personalitzades i l'OpenTracing mitjançant Prometheus i Grafana.
Començar

Encaminament senzill a Istio
Minuts 60
Apreneu a controlar l'encaminament a Istio mitjançant regles senzilles.
Començar

Regles d'encaminament avançades
Minuts 60
Ens familiaritzem amb l'encaminament intel·ligent a Istio, el control d'accés, l'equilibri de càrrega i la limitació de velocitat.
Començar

Bloc 3 - Usuari avançat

Falla d'injecció a Istio
Minuts 60
Estudiem escenaris de gestió d'errors en aplicacions distribuïdes, creant errors HTTP i retards de xarxa, i aprenem a aplicar l'enginyeria del caos per restaurar l'entorn.
Començar

Interruptor a Istio
Minuts 30
Instal·lem Siege per a llocs de proves d'estrès i aprenem a garantir la tolerància a errors del backend mitjançant reintents, disjuntors i expulsió de la piscina.
Començar

Sortida i Istio
Minuts 10
Utilitzem les rutes de sortida per crear regles per a la interacció dels serveis interns amb API i serveis externs.
Començar

Istio i Kiali
Minuts 15
Aprendre a utilitzar Kiali per obtenir una imatge global de la malla del servei i estudiar el flux de sol·licituds i dades.
Començar

TLS mutu a Istio
Minuts 15
Creem Istio Gateway i VirtualService, i després estudiem el TLS mutu (mTLS) i la seva configuració en detall.
Començar

Quadre 3.1 - Deep Dive: Istio Service Mesh per a microserveis

Una sèrie de publicacions a Istio Service Mesh
De què va el llibre:

  • Què és una malla de servei.
  • El sistema Istio i el seu paper en l'arquitectura de microserveis.
  • Utilitzant Istio per a les tasques següents:
    • Falta de tolerància;
    • Encaminament;
    • Prova de caos;
    • Seguretat;
    • Recollida de telemetria mitjançant traçat, mètriques i Grafana.

Per descarregar un llibre

Sèrie d'articles sobre malles de servei i Istio

Prova-ho tu mateix

Aquesta sèrie de publicacions no pretén proporcionar una immersió profunda en el món d'Istio. Només volem presentar-vos el concepte en si i potser inspirar-vos a provar Istio per vosaltres mateixos. És completament gratuït i Red Hat ofereix totes les eines que necessiteu per començar amb OpenShift, Kubernetes, contenidors Linux i Istio, com ara: Red Hat Developer OpenShift Container Platform, la nostra guia d'Istio i altres recursos al nostre micro lloc de malla de servei. No et demores, comença avui!

Regles d'encaminament d'Istio: dirigir les sol·licituds de servei al lloc correcte

torn obert и Kubernetes són excel·lents per tractar microserveis dirigit a les beines necessàries. Aquest és un dels propòsits de l'existència de Kubernetes: l'encaminament i l'equilibri de càrrega. Però, què passa si necessiteu un encaminament més subtil i sofisticat? Per exemple, utilitzar dues versions d'un microservei alhora. Com poden ajudar les regles de ruta d'Istio aquí?

Les regles de ruta són les regles que, de fet, especifiquen l'elecció de la ruta. Independentment de la complexitat del sistema, el principi general darrere d'aquestes regles segueix sent simple: les sol·licituds s'encaminen en funció de determinats paràmetres i valors de capçalera HTTP.
Vegem-ne exemples:

Kubernetes per defecte: trivial "50/50"

Al nostre exemple, mostrarem com utilitzar dues versions d'un microservei a OpenShift alhora, anomenarem-les v1 i v2. Cada versió s'executa al seu propi pod de Kubernetes, i l'encaminament round robin uniformement equilibrat funciona aquí de manera predeterminada. Cada pod rep la seva quota de sol·licituds segons el nombre d'instàncies de microservei, és a dir, rèpliques. Istio us permet canviar aquest saldo manualment.

Suposem que hem desplegat dues versions del nostre servei de recomanacions, recomanació-v1 i recomanació-v2, a OpenShift.
A la fig. La figura 1 mostra que quan cada servei es representa en una única instància, les sol·licituds s'entrellacen de manera uniforme entre elles: 1-2-1-2-... Així és com funciona l'encaminament de Kubernetes per defecte:

Una sèrie de publicacions a Istio Service Mesh

Distribució ponderada entre versions

A la fig. La figura 2 mostra què passa si augmenteu el nombre de rèpliques del servei v2 d'una a dues (això es fa amb l'ordre oc scale --replicas=2 deployment/recommendation-v2). Com podeu veure, les sol·licituds entre v1 i v2 es divideixen ara en una relació d'un a tres: 1-2-2-1-2-2-...:

Una sèrie de publicacions a Istio Service Mesh

Ignora la versió amb Istio

Istio facilita la modificació de la distribució de les peticions de la manera que necessitem. Per exemple, envieu tot el trànsit només a la recomanació-v1 amb el següent fitxer Istio yaml:

Una sèrie de publicacions a Istio Service Mesh

Aquí cal parar atenció a això: les beines es seleccionen segons les etiquetes. En el nostre exemple, s'utilitza l'etiqueta v1. El paràmetre "pes: 100" significa que el 100% del trànsit s'encaminarà a tots els pods del servei que tinguin l'etiqueta v1.

Distribució de directives entre versions (Canary Deployment)

A més, amb el paràmetre de pes, podeu dirigir el trànsit als dos pods, ignorant el nombre d'instàncies de microservei que s'executen en cadascun d'ells. Per exemple, aquí dirigim directivament el 90% del trànsit a v1 i el 10% a v2:

Una sèrie de publicacions a Istio Service Mesh

Encaminament d'usuaris mòbils separat

En conclusió, mostrarem com forçar el trànsit d'usuaris mòbils a encaminar-se al servei v2 i tots els altres usuaris a v1. Per fer-ho, utilitzem expressions regulars per analitzar el valor de l'agent d'usuari a la capçalera de la sol·licitud:

Una sèrie de publicacions a Istio Service Mesh

Ara és el teu torn

L'exemple d'expressió regular per analitzar les capçaleres us hauria de motivar a explorar les vostres pròpies maneres d'aplicar les regles d'encaminament d'Istio. A més, les possibilitats aquí són molt àmplies, ja que els valors de capçalera es poden formar al codi font de les aplicacions.

I recordeu que Ops, no Dev

Tot el que vam mostrar als exemples anteriors es fa sense el més mínim canvi en el codi font, bé, excepte en aquells casos en què cal formar capçaleres de sol·licitud especials. Istio serà útil tant per als desenvolupadors, que, per exemple, el podran utilitzar en l'etapa de proves, com per als operadors de sistemes informàtics, als quals ajudarà molt en la producció.

Així que repetim el tema d'aquesta sèrie de publicacions: no cal que canvieu res al vostre codi. No cal crear noves imatges ni executar nous contenidors. Tot això s'implementa fora del codi.

activa la teva imaginació

Imagineu-vos les possibilitats d'analitzar els titulars amb expressions regulars. Vols redirigir el teu client més gran a una versió especial del teu microserveis? Fàcilment! Necessites una versió independent per al navegador Chrome? Cap problema! Podeu encaminar el trànsit segons gairebé qualsevol de les seves característiques.

Prova-ho tu mateix

Llegir sobre Istio, Kubernetes i OpenShift és una cosa, però per què no tocar-ho tot tu mateix? Equip Programa per a desenvolupadors de Red Hat va preparar una guia detallada (en anglès) que us ajudarà a dominar aquestes tecnologies el més ràpidament possible. La guia també és 100% de codi obert, de manera que és de domini públic. El fitxer funciona a macOS, Linux i Windows, i el codi font està disponible en versions Java i node.js (en breu més idiomes). Només cal que obriu el repositori git adequat al vostre navegador Demostració de desenvolupadors de Red Hat.

A la següent publicació: resol els problemes molt bé

Avui heu vist què poden fer les regles d'encaminament d'Istio. Ara imagineu-vos igualment, però només en relació amb la gestió d'errors. Això és exactament el que tractarem en el proper post.

Font: www.habr.com

Afegeix comentari