Serio de afiŝoj pri Istio Service Mesh

Ni komencas serion de afiŝoj montrantaj kelkajn el la multaj kapabloj de la Istio Service Mesh kiam kombinite kun Red Hat OpenShift kaj Kubernetes.

Serio de afiŝoj pri Istio Service Mesh

Unua parto, hodiaŭ:

  • Ni klarigu la koncepton de Kubernetes-flankaj ujoj kaj formulu la ĉefmotivon de ĉi tiu serio de afiŝoj: "vi ne bezonas ŝanĝi ion en via kodo".
  • Ni enkonduku la fundamentan aferon de Istio - enrutaj reguloj. Ĉiuj aliaj funkcioj de Istio estas konstruitaj sur ili, ĉar estas la reguloj, kiuj permesas vin direkti trafikon al mikroservoj uzante YAML-dosierojn ekster la servokodo. Ni ankaŭ pripensas la disfaldan skemon de Canary Deployment. Novjara bonuso – 10 interagaj lecionoj pri Istio


La dua parto, baldaŭ venanta, diros al vi:

  • Kiel Istio efektivigas Pool Elĵeton kune kun Circuit Breaker kaj pruvas kiel Istio ebligas al vi forigi neaktivan aŭ malbone funkciantan pod el la ekvilibroskemo.
  • Ni ankaŭ rigardos la temon de Circuit Breaker de la unua afiŝo pri kiel Istio povas esti uzata ĉi tie. Ni montros kiel direkti trafikon kaj trakti retajn erarojn sen la plej eta ŝanĝo en la servokodo uzante YAML-agordajn dosierojn kaj finajn komandojn.

Parto tri:

  • Rakonto pri spurado kaj monitorado, kiuj jam estas enkonstruitaj aŭ facile aldonitaj al Istio. Ni montros al vi kiel uzi ilojn kiel Prometheus, Jaeger kaj Grafana kombine kun OpenShift-skalado por senpene administri mikroservajn arkitekturojn.
  • Ni moviĝas de monitorado kaj pritraktado de eraroj al enkondukado de ili en la sistemon intence. Alivorte, ni lernas kiel fari misan injekton sen ŝanĝi la fontkodon, kio estas tre grava el testa vidpunkto - ĉar se vi ŝanĝas la kodon mem por tio, ekzistas risko enkonduki pliajn erarojn.

Fine, en la fina afiŝo pri Istio Service Mesh:

  • Ni iru al la Malhela Flanko. Pli precize, ni lernos uzi la Dark Launch-skemon, kiam la kodo estas deplojita kaj provita rekte sur produktaddatumoj, sed neniel influas la funkciadon de la sistemo. Jen kie la kapablo de Istio dividi trafikon utilas. Kaj la kapablo testi vivajn produktadajn datumojn sen iel ajn influi la funkciadon de la batalsistemo estas la plej konvinka metodo de konfirmo.
  • Bazante sur Dark Launch, ni montros al vi kiel uzi la Canary Deployment-modelon por redukti riskon kaj faciligi la disfaldi novan kodon. Kanaria Deplojo mem ne estas nova, sed Istio permesas al vi efektivigi ĉi tiun skemon per nur simplaj YAML-dosieroj.
  • Fine, ni montros al vi kiel uzi Istio Egress por doni aliron al servoj al tiuj, kiuj estas ekster viaj aretoj, por uzi la kapablojn de Istio kiam vi laboras kun Interreto.

Do, jen ni iras...

Iloj de monitorado kaj administrado de Istio - ĉio, kion vi bezonas por reĝisori mikroservojn en serva reto servmaŝo.

Kio estas Istio Service Mesh

Serva maŝo efektivigas funkciojn kiel trafikan monitoradon, alirkontrolon, malkovron, sekurecon, faŭltoleremo kaj aliajn utilajn aferojn por grupo de servoj. Istio permesas vin fari ĉion ĉi sen la plej etaj ŝanĝoj al la kodo de la servoj mem. Kio estas la sekreto de magio? Istio ligas sian propran prokurilon al ĉiu servo en la formo de kromĉaro ujo (kromĉaro estas motorcikla kromĉaro), post kio la tuta trafiko al ĉi tiu servo trairas la prokurilon, kiu, gvidita de specifitaj politikoj, decidas kiel, kiam kaj ĉu ĉi tiu trafiko. devus atingi la servon entute. Istio ankaŭ ebligas efektivigi altnivelajn DevOps-teknikojn kiel ekzemple kanariaj deplojoj, ŝaltiloj, misfunkciadoj kaj multaj aliaj.

Kiel Istio funkcias kun ujoj kaj Kubernetes

La Istio-serva maŝo estas kromefektivigo de ĉio necesa por krei kaj administri mikroservojn: monitorado, spurado, ŝaltiloj, vojigo, ŝarĝo-ekvilibro, misfunkciado, reprovoj, tempomalsukcesoj, spegulado, alirkontrolo, tariflimigo kaj multe pli. Kaj kvankam hodiaŭ ekzistas amaso da bibliotekoj por efektivigi ĉi tiujn funkciojn rekte en kodo, kun Istio vi povas akiri ĉiujn samajn aferojn sen ŝanĝi ion ajn en via kodo.

Laŭ la kromĉarmodelo, Istio funkcias en Linukso-ujo, kiu situas en unu Kubernetoj-pod kun kontrolita servo kaj injektas kaj eltiras funkciojn kaj informojn laŭ la donita agordo. Ni emfazas, ke ĉi tio estas via propra agordo, kaj ĝi vivas ekster via kodo. Tial la kodo fariĝas multe pli simpla kaj mallonga.

Kio ankaŭ gravas estas, ke la funkcia komponanto de mikroservoj montriĝas neniel ligita kun la kodo mem, kio signifas, ke ilia funkciado povas esti sekure transdonita al IT-specialistoj. Efektive, kial la programisto devus respondeci pri interrompiloj kaj misfunkciado-injekto? Reagi, jes, sed prilabori ilin kaj krei ilin? Se vi forigas ĉion ĉi de la kodo, programistoj povos plene koncentriĝi pri aplikaĵofunkcio. Kaj la kodo mem fariĝos pli mallonga kaj pli simpla.

Servo maŝo

Istio, kiu efektivigas la administrajn funkciojn de mikroservoj ekster ilia kodo - ĉi tiu estas la koncepto de la Servo-Maŝo. Alivorte, ĝi estas kunordigita grupo de unu aŭ pluraj binaroj kiuj formas kradon de retfunkcioj.

Kiel Istio funkcias kun mikroservoj

Jen kiel aspektas la laboro de flankaj ujoj kune kun Kubernetoj и mini-deĵoro birdorigardo: lanĉu ekzemplon de Minishift, kreu projekton por Istio (ni nomu ĝin "istio-sistemo"), instalu kaj rulu ĉiujn Istio-rilatajn komponentojn. Tiam, dum vi kreas projektojn kaj podojn, vi aldonas agordajn informojn al viaj deplojoj, kaj viaj podoj komencas uzi Istio. Simpligita diagramo aspektas jene:

Serio de afiŝoj pri Istio Service Mesh

Nun vi povas ŝanĝi Istio-agordojn por, ekzemple, organizi misfunkciadon, subtenon Kanaria Deplojo aŭ aliaj trajtoj de Istio – kaj ĉio ĉi sen tuŝi la kodon de la aplikaĵoj mem. Ni diru, ke vi volas redirekti la tutan rettrafikon de uzantoj de via plej granda kliento (Foo Corporation) al nova versio de via retejo. Ĉio, kion vi bezonas fari, estas krei regulon de vojigo de Istio, kiu serĉas @foocorporation.com en la uzantidentigilo kaj alidirektas laŭe. Por ĉiuj aliaj uzantoj, nenio ŝanĝiĝos. Dume vi trankvile testos la novan version de la retejo. Kaj notu, vi tute ne bezonas impliki programistojn por ĉi tio.

Kaj ĉu vi devos multe pagi por ĝi?

Tute ne. Istio estas sufiĉe rapida kaj estas enskribita Go kaj kreas tre malmulte da superkompeto. Krome, la ebla perdo en interreta produktiveco estas kompensita per pliiĝo en programisto-produktiveco. Almenaŭ teorie: ne forgesu, ke la tempo de programistoj estas valora. Koncerne programajn kostojn, Istio estas malfermkoda programaro, do vi povas akiri kaj uzi ĝin senpage.

Majstro ĝin mem

La Red Hat Developer Experience Team evoluigis profundan praktikan gvidado de Istio (en la angla). Ĝi funkcias per Linukso, MacOS kaj Vindozo, kaj la kodo disponeblas en Java kaj Node.js.

10 interagaj lecionoj pri Istio

Bloko 1 - Por Komencantoj

Enkonduko al Istio
30-minutoj
Ni konatiĝu kun Service Mesh, lernu kiel instali Istio en OpenShift Kubernetes-grupo.
Komenci

Deplojante mikroservojn en Istio
30-minutoj
Ni uzas Istio por disfaldi tri mikroservojn kun Spring Boot kaj Vert.x.
Komenci

Bloko 2 - meza nivelo

Monitorado kaj spurado en Istio
60-minutoj
Ni esploros la enkonstruitajn monitorajn ilojn de Istio, kutimajn metrikojn kaj OpenTracing per Prometheus kaj Grafana.
Komenci

Simpla vojigo en Istio
60-minutoj
Lernu kiel administri vojigon en Istio uzante simplajn regulojn.
Komenci

Altnivelaj enrutaj reguloj
60-minutoj
Ni konatiĝas kun inteligenta vojigo en Istio, alirkontrolo, ŝarĝoekvilibro kaj tariflimigo.
Komenci

Bloko 3 - altnivela uzanto

Faŭlto-Injekto en Istio
60-minutoj
Ni studas scenarojn pri mistraktado de malsukcesoj en distribuitaj aplikaĵoj, kreante HTTP-erarojn kaj retajn prokrastojn, kaj lernas kiel apliki kaosan inĝenieristikon por restarigi la medion.
Komenci

Circuit Breaker en Istio
30-minutoj
Ni instalas Siege por streĉaj testaj retejoj kaj lernas kiel certigi backend-faŭltoleremon per ripetoj, ŝaltilo kaj elĵeto de naĝejo.
Komenci

Eliro kaj Istio
10-minutoj
Ni uzas Egress-vojojn por krei regulojn por la interago de internaj servoj kun eksteraj API-oj kaj servoj.
Komenci

Istio kaj Kiali
15-minutoj
Lerni kiel uzi Kiali por akiri grandan bildon de la servomaŝo kaj studi la fluon de petoj kaj datumoj.
Komenci

Reciproka TLS en Istio
15-minutoj
Ni kreas Istio Gateway kaj VirtualService, tiam ni studas reciprokan TLS (mTLS) kaj ĝiajn agordojn detale.
Komenci

Bloko 3.1 - Profunda Plonĝo: Istio Service Mesh por Mikroservoj

Serio de afiŝoj pri Istio Service Mesh
Pri kio temas la libro:

  • Kio estas servomaŝo?
  • La Istio-sistemo kaj ĝia rolo en mikroserva arkitekturo.
  • Uzante Istio por solvi la sekvajn problemojn:
    • Kulpo toleremo;
    • Envojigo;
    • Kaoso-testado;
    • Sekureco;
    • Telemetria kolekto uzante spurojn, metrikojn kaj Grafana.

Elŝuti libron

Serio de artikoloj pri servaj retoj kaj Istio

Provu ĝin mem

Ĉi tiu serio de afiŝoj ne celas provizi profundan plonĝon en la mondon de Istio. Ni nur volas prezenti vin al la koncepto kaj eble inspiri vin provi Istio mem. Ĝi estas tute senpaga, kaj Red Hat provizas ĉiujn ilojn, kiujn vi bezonas por komenci kun OpenShift, Kubernetes, Linukso-ujoj kaj Istio, inkluzive: Red Hat Developer OpenShift Container Platform, nia gvidilo al Istio kaj aliaj rimedoj sur nia mikrorete sur Service Mesh. Ne prokrastu, komencu hodiaŭ!

Istio-vojaj reguloj: direkti servopetojn kien ili devas iri

malferma deĵoro и Kubernetoj faru bonegan laboron alparoli mikroservoj direktitaj al la bezonataj podoj. Ĉi tio estas unu el la kialoj de la ekzisto de Kubernetes - enrutado kaj ŝarĝo-ekvilibro. Sed kio se vi bezonas pli subtilan kaj altnivelan vojigon? Ekzemple, por samtempe uzi du versiojn de mikroservo. Kiel povas Istio Itineraj Reguloj helpi ĉi tie?

Itineraj reguloj estas la reguloj kiuj fakte determinas la elekton de itinero. Sendepende de la nivelo de sistema komplekseco, la ĝenerala funkcia principo de ĉi tiuj reguloj restas simpla: petoj estas direktitaj surbaze de certaj parametroj kaj HTTP-kapaj valoroj.
Ni rigardu ekzemplojn:

Kubernetes defaŭlta: bagatela "50/50"

En nia ekzemplo, ni montros kiel samtempe uzi du versiojn de mikroservo en OpenShift, ni nomu ilin v1 kaj v2. Ĉiu versio funkcias en sia propra Kubernetes-podo, kaj defaŭlte ĝi funkcias egale ekvilibran cirkulan enrutigon. Ĉiu pod ricevas sian parton de petoj surbaze de la nombro de siaj mikroservoj, alivorte, kopioj. Istio permesas vin ŝanĝi ĉi tiun ekvilibron permane.

Ni diru, ke ni deplojis du versiojn de nia rekomendservo, rekomendo-v1 kaj rekomendo-v2, sur OpenShift.
En Fig. Figuro 1 montras, ke kiam ĉiu servo estas reprezentita en ununura kazo, petoj estas egale interplektitaj inter ili: 1-2-1-2-... Jen kiel Kubernetes-vojigo funkcias defaŭlte:

Serio de afiŝoj pri Istio Service Mesh

Pezbalancita distribuo inter versioj

En Fig. Figuro 2 montras kio okazas se vi pliigas la nombron da v2-servaj kopioj de unu al du (ĉi tio estas farita per la oc-skalo —replicas=2 deplojado/rekomendo-v2-komando). Kiel vi povas vidi, petoj inter v1 kaj v2 nun estas dividitaj en unu-al-tri proporcio: 1-2-2-1-2-2-...:

Serio de afiŝoj pri Istio Service Mesh

Ignoru version uzante Istio

Istio faciligas ŝanĝi la distribuadon de petoj laŭ la maniero, kiun ni bezonas. Ekzemple, sendu la tutan trafikon nur al rekomendo-v1 uzante la sekvan Istio-yaml-dosieron:

Serio de afiŝoj pri Istio Service Mesh

Ĉi tie vi devas atenti ĉi tion: guŝoj estas elektitaj laŭ la etikedoj. Nia ekzemplo uzas etikedon v1. La parametro "pezo: 100" signifas, ke 100% de la trafiko estos direktita al ĉiuj servopodoj, kiuj havas la etikedon v1.

Direktiva distribuo inter versioj (Canary Deployment)

Poste, uzante la pezan parametron, vi povas direkti trafikon al ambaŭ podoj, ignorante la nombron da mikroservoj kurantaj en ĉiu el ili. Ekzemple, ĉi tie ni direktas 90% de trafiko al v1 kaj 10% al v2:

Serio de afiŝoj pri Istio Service Mesh

Aparta vojigo por poŝtelefonaj uzantoj

Konklude, ni montros kiel devigi poŝtelefonan uzanttrafikon esti direktita al servo v2, kaj ĉiuj aliaj al v1. Por fari tion, ni uzas regulajn esprimojn por analizi la uzant-agentan valoron en la peta kaplinio:

Serio de afiŝoj pri Istio Service Mesh

Nun estas via vico

La ekzemplo kun regulaj esprimoj por analizado de kaplinioj devus instigi vin trovi viajn proprajn uzojn de Istio-vojaj reguloj. Krome, la eblecoj ĉi tie estas sufiĉe ampleksaj, ĉar kapaj valoroj povas esti formitaj en la fontkodo de la aplikaĵo.

Kaj memoru, ke Ops, ne Dev

Ĉio, kion ni montris en la supraj ekzemploj, estas farita sen la plej eta ŝanĝo en la fontkodo, nu, krom tiuj kazoj, kiam necesas formi specialajn petajn kapliniojn. Istio estos utila kaj por programistoj, kiuj, ekzemple, povos uzi ĝin en la prova stadio, kaj por IT-sistemfunkciigistoj, kiujn ĝi multe helpos en produktado.

Do ni ripetu la ĉefmotivon de ĉi tiu serio de afiŝoj: vi ne bezonas ŝanĝi ion en via kodo. Ne necesas konstrui novajn bildojn aŭ lanĉi novajn ujojn. Ĉio ĉi estas efektivigita ekster kodo.

Uzu vian imagon

Nur imagu la eblojn analizi titolojn kun regulaj esprimoj. Volas redirekti vian plej grandan klienton al speciala versio de via mikroservoj? Facile! Ĉu vi bezonas apartan version por la retumilo Chrome? Nedankinde! Vi povas direkti trafikon laŭ preskaŭ ajna karakterizaĵo.

Provu ĝin mem

Legi pri Istio, Kubernetes kaj OpenShift estas unu afero, sed kial ne tuŝi ĉion mem? Teamo Red Hat Programisto Programo preparis detalan gvidilon (en la angla) kiu helpos vin regi ĉi tiujn teknologiojn kiel eble plej rapide. La manlibro ankaŭ estas 100% malferma fonto, do ĝi estas afiŝita en la publika domeno. La dosiero funkcias ĉe macOS, Linukso kaj Vindozo, kaj la fontkodo disponeblas en versioj Java kaj node.js (versioj en aliaj lingvoj baldaŭ aperos). Nur malfermu la respondan git-deponejon en via retumilo Red Hat Programisto Demo.

En la sekva afiŝo: ni bele ellaboras problemojn

Hodiaŭ vi vidis, kion Istio-vojaj reguloj povas fari. Nun imagu la samon, sed nur rilate al erartraktado. Ĝuste pri tio ni parolos en la sekva afiŝo.

fonto: www.habr.com

Aldoni komenton