Usa ka serye sa mga post sa Istio Service Mesh

Nagsugod kami usa ka serye sa mga post nga nagpakita sa pipila sa daghang mga bahin sa Istio Service Mesh inubanan sa Red Hat OpenShift ug Kubernetes.

Usa ka serye sa mga post sa Istio Service Mesh

Unang bahin karon:

  • Atong ipasabut ang konsepto sa mga sudlanan sa sidecar sa Kubernetes ug paghimo sa leitmotif niini nga serye sa mga post: "Dili nimo kinahanglan nga usbon ang bisan unsa sa imong code".
  • Atong mahanduraw ang sukaranan nga butang sa Istio - mga lagda sa pag-ruta. Ang tanan nga uban pang mga bahin sa Istio gitukod sa kanila, tungod kay kini ang mga lagda nga nagtugot kanimo sa pagdirekta sa trapiko sa mga microservice gamit ang mga file sa YAML sa gawas sa code sa serbisyo. Gikonsiderar usab namon ang laraw sa pag-deploy sa Canary Deployment. Bag-ong Tuig nga Bonus - 10 Interactive Istio Lessons


Ang ikaduhang bahin, nga mogawas sa dili madugay, mosulti kanimo:

  • Giunsa pagpatuman ni Istio ang Pool Ejection kauban ang Circuit Breaker ug gipakita kung giunsa ka gitugotan ni Istio nga tangtangon ang usa ka wala’y mahimo o dili maayo nga pasundayag nga pod gikan sa laraw sa balanse.
  • Atong tan-awon usab ang hilisgutan sa Circuit Breaker gikan sa una nga post kung giunsa magamit ang Istio dinhi. Ipakita namon kung giunsa ang pagruta sa trapiko ug pagdumala sa mga sayup sa network nga wala’y bisan gamay nga pagbag-o sa code sa serbisyo gamit ang mga file sa pag-configure sa YAML ug mga mando sa terminal.

Ikatulong bahin:

  • Usa ka istorya bahin sa pagsubay ug pagmonitor nga natukod na o dali nga gidugang sa Istio. Ipakita namon kanimo kung giunsa ang paggamit sa mga himan sama sa Prometheus, Jaeger, ug Grafana kauban ang OpenShift scaling aron dali nga madumala ang imong arkitektura sa microservice.
  • Naglihok kami gikan sa pag-monitor ug pagdumala sa mga kasaypanan ngadto sa pagpaila niini sa sistema nga tinuyo. Sa laing pagkasulti, nakakat-on kami sa paghimo sa sayup nga pag-inject nga dili usbon ang source code, nga hinungdanon kaayo gikan sa punto sa pagtan-aw sa pagsulay - tungod kay kung imong usbon ang code mismo alang niini, nan adunay peligro sa pagpaila sa dugang nga mga sayup.

Sa katapusan, sa katapusang post sa Istio Service Mesh:

  • Adto ta sa Dark Side. Mas tukma, makakat-on kita sa paggamit sa Dark Launch scheme, sa diha nga ang code gipadala ug gisulayan direkta sa produksyon data, apan dili makaapekto sa operasyon sa sistema sa bisan unsa nga paagi. Dinhi, magamit ang katakus ni Istio sa pagbulag sa trapiko. Ug ang abilidad sa paghimo sa pagsulay sa live nga datos sa produksiyon nga wala makaapekto sa operasyon sa sistema sa kombat sa bisan unsang paagi mao ang labing makapakombinsir nga paagi sa pagsusi.
  • Pagtukod sa Dark Launch, ipakita namo kanimo kung giunsa ang paggamit sa modelo sa Canary Deployment aron makunhuran ang peligro ug mapadali ang pag-deploy sa bag-ong code. Ang Canary Deployment mismo dili bag-o, apan gitugotan ka sa Istio nga ipatuman kini nga laraw gamit ang yano nga mga file sa YAML.
  • Sa konklusyon, ipakita namo kung unsaon paggamit ang Istio Egress aron mahatagan ug access ang mga serbisyo sa mga naa sa gawas sa imong mga cluster aron magamit ang mga kapabilidad sa Istio kung magtrabaho sa Internet.

Busa, lakaw na kami…

Istio monitoring ug management toolkit - ang tanan nga imong gikinahanglan sa pag-coordinate sa mga microservice sa usa ka service mesh serbisyo mesh.

Unsa ang Istio Service Mesh

Ang service mesh nagpatuman alang sa usa ka grupo sa mga serbisyo sama sa mga gimbuhaton sama sa pag-monitor sa trapiko, kontrol sa pag-access, pagkadiskobre, seguridad, pagtugot sa sayup ug uban pang mapuslanon nga mga butang. Gitugotan ka ni Istio nga buhaton kining tanan nga wala’y bisan gamay nga pagbag-o sa code sa mga serbisyo mismo. Unsa ang sekreto sa salamangka? Ang Istio nagbutang sa kaugalingon nga proxy sa matag serbisyo sa porma sa usa ka sudlanan sa sidecar (sidecar usa ka sidecar sa motorsiklo), pagkahuman ang tanan nga trapiko sa kini nga serbisyo moagi sa proxy, nga, gigiyahan sa gitakda nga mga palisiya, magdesisyon kung giunsa, kanus-a ug kung kini ang trapiko kinahanglan nga makaabot sa serbisyo sa tanan. Gihatagan ka usab ni Istio og katakus sa pagpatuman sa mga advanced nga pamaagi sa DevOps sama sa pag-deploy sa mga kanaryo, mga circuit breaker, pag-injection sa sayup, ug uban pa.

Giunsa pagtrabaho ang Istio sa mga sudlanan ug Kubernetes

Ang Istio service mesh usa ka sidecar nga pagpatuman sa tanan nga imong gikinahanglan sa paghimo ug pagdumala sa mga microservice: pagmonitor, pagsubay, mga circuit breaker, routing, load balancing, fault injection, rettry, timeouts, mirroring, access control, rate limiting, ug uban pa. Ug samtang adunay daghang mga librarya karon aron ipatuman kini nga mga bahin direkta sa code, uban sa Istio mahimo nimong makuha ang parehas nga butang nga wala’y pagbag-o sa bisan unsang butang sa imong code.

Sumala sa modelo sa sidecar, ang Istio nagdagan sa usa ka sudlanan sa Linux, nga nahimutang sa usa Kubernetes-pod nga adunay kontrolado nga serbisyo ug nag-implementar (inject) ug extracts (extract) functionality ug impormasyon sumala sa gihatag nga configuration. Gihatagan namon og gibug-aton nga kini imong kaugalingon nga configuration, ug kini nagpuyo sa gawas sa imong code. Busa, ang code nahimong mas simple ug mas mubo.

Labaw ka hinungdanon, ang bahin sa operasyon sa mga microservice wala’y koneksyon sa code mismo, nga nagpasabut nga ang ilang operasyon mahimong luwas nga mabalhin sa mga espesyalista sa IT. Sa tinuud, ngano nga ang usa ka developer kinahanglan nga responsable sa mga circuit breaker ug fault injection? React, oo, apan proseso ug paghimo kanila? Kung tangtangon nimo kining tanan gikan sa code, ang mga programmer mahimong hingpit nga magpunting sa pagpaandar sa aplikasyon. Ug ang code mismo mahimong mas mubo ug mas simple.

Serbisyo grid

Istio, nga nagpatuman sa mga gimbuhaton sa pagdumala sa mga microservice sa gawas sa ilang code - kini ang konsepto sa Service Mesh. Sa laing pagkasulti, kini usa ka koordinado nga grupo sa usa o daghang binary nga nagporma usa ka grid sa mga gimbuhaton sa network.

Giunsa pagtrabaho ni Istio sa mga microservice

Ingon niini kung giunsa ang mga sulud sa sidecar nga nagtrabaho kauban ang Kubernetes ΠΈ mini nga pagbalhin panan-aw sa mata sa langgam: maglunsad og usa ka pananglitan sa Minishift, paghimo og proyekto sa Istio (tawagon nato kini nga "istio-system"), i-install ug ipadagan ang tanang mga component nga may kalabutan sa Istio. Dayon, samtang naghimo ka og mga proyekto ug mga pod, idugang ang impormasyon sa pag-configure sa imong mga deployment ug ang imong mga pod magsugod sa paggamit sa Istio. Ang usa ka gipasimple nga diagram ingon niini:

Usa ka serye sa mga post sa Istio Service Mesh

Karon mahimo nimong usbon ang mga setting sa Istio sa, pananglitan, pag-organisar sa fault injection, suporta Pag-deploy sa Canary o uban pang mga bahin sa Istio - ug kining tanan nga wala’y paghikap sa code sa mga aplikasyon mismo. Ingnon ta nga gusto nimong i-redirect ang tanang trapiko sa web gikan sa mga tiggamit sa imong kinadak-ang kustomer (Foo Corporation) ngadto sa bag-ong bersyon sa imong site. Ang kinahanglan nimong buhaton mao ang paghimo og Istio routing rule nga nangita sa @foocorporation.com sa user ID ug nag-redirect sumala niana. Para sa tanang ubang tiggamit, walay mausab. Sa kasamtangan, hilom nimong sulayan ang bag-ong bersyon sa site. Ug timan-i nga alang niini hingpit nga dili kinahanglan nga iapil ang mga developer.

Ug pila ang imong ibayad niini?

Dili gyud. Istio mao ang medyo paspas, kini gisulat sa Go ug nagmugna og gamay kaayo nga overhead. Dugang pa, ang usa ka posible nga pagkawala sa online nga produktibo gibalanse sa usa ka pagtaas sa produktibo sa developer. Labing menos sa teorya: ayaw kalimti nga ang oras sa mga developer bililhon. Sa termino sa mga gasto sa software, ang Istio kay open source software, mao nga libre kini nga makuha ug gamiton.

I-master kini sa imong kaugalingon

Ang Red Hat Developer Experience Team nakahimo og usa ka lawom nga hands-on giya ni Istio (sa English). Nagdagan kini sa Linux, MacOS, ug Windows, ug ang code moabut sa Java ug Node.js nga mga lami.

10 Interactive Istio Leksyon

Block 1 - Para sa mga Nagsugod

Pasiuna sa Istio
30 minutos
Nasinati namo ang Service Mesh, pagkat-on unsaon pag-instalar sa Istio sa Kubernetes OpenShift cluster.
Sa pagsugod

Pag-deploy sa mga microservice sa Istio
30 minutos
Gigamit namo ang Istio aron mag-deploy og tulo ka microservices nga adunay Spring Boot ug Vert.x.
Sa pagsugod

Block 2 - intermediate nga lebel

Pag-monitor ug pagsubay sa Istio
60 minutos
Susihon ang built-in nga monitoring tool ni Istio, custom metrics, ug OpenTracing pinaagi sa Prometheus ug Grafana.
Sa pagsugod

Yano nga ruta sa Istio
60 minutos
Pagkat-on unsaon pagkontrolar sa routing sa Istio gamit ang yanong mga lagda.
Sa pagsugod

Advanced nga Ruta nga mga Lagda
60 minutos
Nasinati namo ang smart routing sa Istio, access control, load balancing ug rate limiting.
Sa pagsugod

Block 3 - Advanced User

Fault Injection sa Istio
60 minutos
Gitun-an namo ang mga senaryo sa pagdumala sa kapakyasan sa gipang-apod-apod nga mga aplikasyon, nagmugna og mga HTTP error ug mga paglangan sa network, ug nakakat-on unsaon paggamit sa chaos engineering aron mapasig-uli ang palibot.
Sa pagsugod

Circuit Breaker sa Istio
30 minutos
Among gi-install ang Siege para sa stress testing sites ug makat-on unsaon pagsiguro sa backend fault tolerance gamit ang rettry, circuit breaker ug pool ejection.
Sa pagsugod

Egress ug Istio
10 minutos
Gigamit namon ang mga ruta sa Egress aron maghimo mga lagda alang sa interaksyon sa mga internal nga serbisyo sa mga eksternal nga API ug serbisyo.
Sa pagsugod

Istio ug Kiali
15 minutos
Pagkat-on unsaon paggamit ang Kiali aron makakuha og dakong hulagway sa service mesh ug tun-an ang dagan sa mga hangyo ug datos.
Sa pagsugod

Mutual TLS sa Istio
15 minutos
Naghimo kami og Istio Gateway ug VirtualService, dayon tun-an ang mutual TLS (mTLS) ug ang mga setting niini sa detalye.
Sa pagsugod

Kahon 3.1 - Deep Dive: Istio Service Mesh para sa Microservices

Usa ka serye sa mga post sa Istio Service Mesh
Mahitungod sa unsa ang libro:

  • Unsa ang service mesh.
  • Istio system ug ang papel niini sa microservice architecture.
  • Paggamit sa Istio alang sa mosunod nga mga buluhaton:
    • Ang pagtugot sa sayup;
    • Pag-ruta;
    • Pagsulay sa kagubot;
    • Kasegurohan;
    • Koleksyon sa telemetry gamit ang pagsubay, sukatan ug Grafana.

Sa pag-download sa usa ka libro

Serye sa mga artikulo bahin sa mga meshes sa serbisyo ug Istio

Sulayi kini sa imong kaugalingon

Kini nga serye sa mga post wala gituyo aron maghatag usa ka lawom nga pag-dive sa kalibutan sa Istio. Gusto lang namon nga ipaila kanimo ang konsepto mismo ug tingali makadasig kanimo sa pagsulay sa Istio alang sa imong kaugalingon. Kini hingpit nga libre, ug ang Red Hat naghatag sa tanan nga mga himan nga imong gikinahanglan aron makasugod sa OpenShift, Kubernetes, Linux nga mga sudlanan, ug Istio, lakip ang: Ang Red Hat Developer OpenShift Container Platform, among giya sa Istio ug uban pang mga kapanguhaan sa atong serbisyo mesh micro site. Ayaw paglangan, pagsugod karon!

Istio Routing Rules: Pagdirekta sa mga Pangayo sa Serbisyo sa Tuo nga Dapit

openshift ΠΈ Kubernetes maayo kaayo sa pag-atubang microservices gipaagi sa gikinahanglan nga mga pod. Usa kini sa mga katuyoan sa paglungtad sa Kubernetes - pag-ruta ug pagbalanse sa load. Apan komosta kung kinahanglan nimo ang labi ka maliputon ug sopistikado nga ruta? Pananglitan, sa paggamit sa duha ka bersyon sa usa ka microservice sa samang higayon. Sa unsang paagi makatabang ang Istio Route Rules dinhi?

Ang mga lagda sa ruta mao ang mga lagda nga, sa tinuud, nagtino sa pagpili sa ruta. Bisan unsa pa ang pagkakomplikado sa sistema, ang kinatibuk-ang prinsipyo sa luyo niini nga mga lagda nagpabilin nga yano: ang mga hangyo gipadagan base sa pipila nga mga parameter ug mga kantidad sa header sa HTTP.
Atong tan-awon ang mga pananglitan:

Kubernetes Default: Trivial "50/50"

Sa among pananglitan, ipakita namo kung unsaon paggamit ang duha ka bersyon sa usa ka microservice sa OpenShift sa samang higayon, tawgon nato sila nga v1 ug v2. Ang matag bersyon nagdagan sa kaugalingon nga Kubernetes pod, ug ang parehas nga balanse nga pag-routing sa round robin nagtrabaho dinhi nga default. Ang matag pod makadawat sa iyang bahin sa mga hangyo sumala sa gidaghanon sa iyang microservice nga mga higayon, sa laing pagkasulti, mga replika. Gitugotan ka ni Istio nga usbon kini nga balanse nga mano-mano.

Ingnon ta nga nag-deploy kami og duha ka bersyon sa among serbisyo sa rekomendasyon, rekomendasyon-v1 ug rekomendasyon-v2, sa OpenShift.
Sa fig. Gipakita sa Figure 1 nga kung ang matag serbisyo girepresentahan sa usa ka higayon, ang mga hangyo parehas nga gi-interleave sa taliwala nila: 1-2-1-2-… Mao kini kung giunsa ang pag-ruta sa Kubernetes nga default:

Usa ka serye sa mga post sa Istio Service Mesh

Gitimbang nga Distribusyon Taliwala sa mga Bersyon

Sa fig. Gipakita sa Figure 2 kung unsa ang mahitabo kung imong dugangan ang gidaghanon sa v2 nga mga replika sa serbisyo gikan sa usa ngadto sa duha (kini gihimo sa oc scale --replicas=2 deployment/recommendation-v2 command). Sama sa imong makita, ang mga hangyo tali sa v1 ug v2 karon gibahin sa usa ngadto sa tulo nga relasyon: 1-2-2-1-2-2-...:

Usa ka serye sa mga post sa Istio Service Mesh

Ibaliwala ang bersyon sa Istio

Gipasayon ​​ni Istio ang pag-usab sa pag-apod-apod sa mga hangyo sa paagi nga atong gikinahanglan. Pananglitan, ipadala lang ang tanang trapiko sa rekomendasyon-v1 uban ang mosunod nga Istio yaml file:

Usa ka serye sa mga post sa Istio Service Mesh

Dinhi kinahanglan nimo nga hatagan pagtagad kini: ang mga pod gipili sumala sa mga label. Sa among pananglitan, gigamit ang label nga v1. Ang parameter nga "weight: 100" nagpasabot nga ang 100% sa trapiko madala sa tanang pod sa serbisyo nga adunay v1 label.

Direktibo nga pag-apod-apod tali sa mga bersyon (Canary Deployment)

Dugang pa, gamit ang gibug-aton nga parameter, mahimo nimong idirekta ang trapiko sa duha nga mga pod, nga wala magtagad sa gidaghanon sa mga microservice nga mga higayon nga nagdagan sa matag usa niini. Pananglitan, dinhi kami direkta nga nagdirekta sa 90% sa trapiko sa v1 ug 10% sa v2:

Usa ka serye sa mga post sa Istio Service Mesh

Pagbulag sa mobile user routing

Sa konklusyon, ipakita namon kung giunsa pagpugos ang trapiko sa mga tiggamit sa mobile nga madala sa serbisyo sa v2, ug ang tanan nga ubang mga tiggamit sa v1. Aron mahimo kini, gigamit namon ang mga regular nga ekspresyon aron ma-parse ang kantidad sa ahente sa gumagamit sa header sa hangyo:

Usa ka serye sa mga post sa Istio Service Mesh

Karon turno na nimo

Ang regex nga panig-ingnan alang sa pag-parse sa mga ulohan kinahanglan magdasig kanimo sa pagsusi sa imong kaugalingon nga mga paagi sa paggamit sa mga lagda sa pag-ruta ni Istio. Dugang pa, ang mga posibilidad dinhi kay daghan kaayo, tungod kay ang mga kantidad sa header mahimong maporma sa source code sa mga aplikasyon.

Ug hinumdumi nga Ops, dili Dev

Ang tanan nga among gipakita sa mga panig-ingnan sa ibabaw nahimo nga wala’y gamay nga pagbag-o sa source code, maayo, gawas sa mga kaso kung kinahanglan nga maghimo mga espesyal nga ulohan sa hangyo. Mapuslanon ang Istio alang sa mga nag-develop, kinsa, pananglitan, magamit kini sa yugto sa pagsulay, ug alang sa mga operator sa sistema sa IT, nga makatabang kaayo sa produksiyon.

Busa atong sublion ang keynote niining serye sa mga post: dili nimo kinahanglan nga usbon ang bisan unsa sa imong code. Dili kinahanglan nga magtukod og bag-ong mga imahe o magpadagan og bag-ong mga sudlanan. Kining tanan gipatuman gawas sa code.

ablihi ang imong imahinasyon

Hunahunaa lang ang mga palaaboton sa pag-parse sa mga ulohan nga adunay regular nga mga ekspresyon. Gusto nga i-redirect ang imong pinakadako nga kustomer sa usa ka espesyal nga bersyon sa imong microservices? Sayon! Nagkinahanglan ug lahi nga bersyon para sa Chrome browser? Walay problema! Mahimo nimong ruta ang trapiko sumala sa halos bisan unsang mga kinaiya niini.

Sulayi kini sa imong kaugalingon

Ang pagbasa bahin sa Istio, Kubernetes, ug OpenShift usa ka butang, apan ngano nga dili nimo hikap ang tanan? Team Red Hat Developer Program nag-andam ug usa ka detalyado nga giya (sa English) nga makatabang kanimo sa pag-master niini nga mga teknolohiya sa labing madali nga panahon. Ang giya mao usab ang 100% nga open source, mao nga kini anaa sa publiko nga domain. Ang file nagtrabaho sa macOS, Linux, ug Windows, ug ang source code anaa sa Java ug node.js nga mga bersyon (daghang mga pinulongan ang moabut sa dili madugay). Ablihi lang ang angay nga git repository sa imong browser Demo sa Red Hat Developer.

Sa sunod nga post: pag-ayo sa mga problema nga nindot

Karon imong nakita kung unsa ang mahimo sa Istio routing rules. Karon hunahunaa ang tanan nga parehas, apan may kalabotan lamang sa pagdumala sa sayup. Mao gyud ni ang atong hisgotan sa sunod nga post.

Source: www.habr.com

Idugang sa usa ka comment