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.
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:
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
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.
Ĉ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:
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-...:
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:
Ĉ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:
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:
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.