"Ang kapeligrohan mao ang akong tunga-tunga nga ngalan," Austin Powers, usa ka internasyonal nga tawo sa misteryo, ang giingon kaniadto. Apan kung unsa ang gipalabi sa mga super ahente ug serbisyo sa paniktik dili gyud angay alang sa mga serbisyo sa kompyuter, diin ang kalaay labi ka maayo kaysa peligro.
Ug ang Istio, kauban ang OpenShift ug Kubernetes, naghimo sa pag-deploy sa mga microservice nga tinuod nga makalaay ug matag-an - ug maayo kana. Atong hisgotan kini ug daghan pa sa ikaupat ug kataposang post sa seryeng Istio.
Kung tama na ang kalaay
Sa among kaso, ang kalaay mahitabo lamang sa katapusang hugna, kung ang nahabilin mao ang paglingkod ug pagtan-aw sa proseso. Apan alang niini kinahanglan nimo nga i-configure una ang tanan, ug daghang makapaikag nga mga butang ang naghulat kanimo dinhi.
Kung nag-deploy og bag-ong bersyon sa imong software, angay nga hunahunaon ang tanan nga mga kapilian sa pagminus sa mga peligro. Ang pagdagan nga managsama usa ka kusgan kaayo ug napamatud-an nga paagi sa pagsulay, ug gitugotan ka sa Istio nga mogamit usa ka "tinago nga serbisyo" (usa ka tinago nga bersyon sa imong microservice) aron mahimo kini nga dili makabalda sa sistema sa produksiyon. Adunay bisan usa ka espesyal nga termino alang niini - "Dark Launch", nga sa baylo gi-aktibo sa usa ka function nga adunay parehas nga ngalan sa espiya nga "pagsalamin sa trapiko".
Palihug timan-i nga ang unang sentence sa miaging paragraph naggamit sa termino nga "deploy" kay sa "release". Kinahanglan gyud nimo nga ma-deploy-ug, siyempre, gamiton-ang imong microservice sa kanunay nga gusto nimo. Kini nga serbisyo kinahanglan nga makadawat ug makaproseso sa trapiko, makapatunghag mga resulta, ug makasulat usab sa mga troso ug magmonitor. Apan sa parehas nga oras, kini nga serbisyo mismo dili kinahanglan nga ipagawas sa produksiyon. Ang pag-deploy ug pagpagawas sa software dili kanunay parehas nga butang. Mahimo nimong i-deploy bisan kanus-a nimo gusto, apan buhian ra kung andam ka na.
Ang pag-organisar sa kalaay makapainteres
Tan-awa ang mosunod nga Istio routing rule, nga nag-ruta sa tanang HTTP requests ngadto sa microservice recommendation v1 (tanan nga mga ehemplo gikuha gikan sa
Hatagi'g pagtagad ang label mirror:
sa ubos sa screen - kini mao ang nagtakda sa trapiko mirroring. Oo, yano ra kana!
Ang resulta sa kini nga lagda mao nga ang imong sistema sa produksiyon (v1) magpadayon sa pagproseso sa umaabot nga mga hangyo, apan ang mga hangyo sa ilang kaugalingon mahimong asynchronously nga salamin sa v2, nga mao, ang ilang kompleto nga mga duplicate moadto didto. Niining paagiha, mahimo nimong sulayan ang v2 sa tinuud nga mga kahimtang - sa tinuud nga datos ug trapiko - nga wala manghilabot sa bisan unsang paagi sa operasyon sa sistema sa produksiyon. Gihimo ba niini nga makalaay ang pag-organisar sa pagsulay? Oo, sigurado. Apan kini gihimo sa usa ka makapaikag nga paagi.
Dugangan ta ug drama
Palihug timan-i nga sa v2 code gikinahanglan ang paghatag alang sa mga sitwasyon diin ang umaabot nga mga hangyo mahimong mosangpot sa mga kausaban sa datos. Ang mga hangyo sa ilang kaugalingon dali ra ug klaro, apan ang pagpili sa pamaagi sa pagproseso sa pagsulay naa kanimo - ug kini medyo nabalaka.
Atong sublion ang usa ka importanteng punto
Ang tinago nga paglansad nga adunay pagsalamin sa trapiko (Dark Launch/Request Mirroring) mahimong himuon nga dili maapektuhan ang code sa bisan unsang paagi.
Pagkaon alang sa paghunahuna
Unsa kaha kung ang lugar diin gisalamin ang mga hangyo nagpadala sa pipila niini dili sa v1, apan sa v2? Pananglitan, usa ka porsyento sa tanan nga mga hangyo o mga hangyo lamang gikan sa usa ka grupo sa mga tiggamit. Ug unya, nagtan-aw na kung giunsa paglihok ang v2, hinayhinay nga ibalhin ang tanan nga mga hangyo sa bag-ong bersyon. O vice versa, ibalik ang tanan sa v1 kung adunay sayup sa v2. Sa akong hunahuna kini gitawag nga Canary Deployment.
Canary Deployment sa Istio: pagpayano sa pag-commissioning
Pag-amping ug hinayhinay
Ang esensya sa modelo sa pag-deploy sa Canary Deployment labi ka yano: kung maglansad ka usa ka bag-ong bersyon sa imong software (sa among kaso, usa ka microservice), gihatagan nimo una ang pag-access sa gamay nga grupo sa mga tiggamit. Kung maayo ang tanan, hinayhinay nimo nga dugangan kini nga grupo hangtod nga ang bag-ong bersyon magsugod sa paglihok, o - kung dili - sa katapusan ibalhin ang tanan nga tiggamit niini. Pinaagi sa mahunahunaon ug anam-anam nga pagpaila sa usa ka bag-ong bersyon ug pagbalhin sa mga tiggamit niini sa kontroladong paagi, mahimo nimong makunhuran ang mga risgo ug mapadako ang feedback.
Siyempre, gipasimple ni Istio ang Canary Deployment pinaagi sa pagtanyag sa daghang maayong mga kapilian alang sa intelihenteng pagruta sa hangyo. Ug oo, kining tanan mahimo nga walay paghikap sa imong source code sa bisan unsang paagi.
Pagsala sa browser
Usa sa pinakasimple nga sukdanan sa pag-ruta mao ang pag-redirect nga nakabase sa browser. Ingnon ta nga gusto nimo ang mga hangyo lamang gikan sa mga browser sa Safari nga moadto sa v2. Ania kung giunsa kini nahimo:
Atong i-apply kini nga routing rule ug dayon gamiton ang command curl
Atong i-simulate ang tinuod nga mga hangyo sa microservice sa usa ka loop. Sama sa imong makita sa screenshot, silang tanan moadto sa v1:
Asa ang trapiko sa v2? Tungod kay sa among panig-ingnan ang tanan nga mga hangyo gikan lamang sa among kaugalingon nga linya sa mando, wala kini. Apan hatagi'g pagtagad ang ubos nga mga linya sa screen sa ibabaw: kini usa ka reaksyon sa kamatuoran nga nagpatuman kami sa usa ka hangyo gikan sa Safari browser, nga sa baylo naghimo niini:
walay kinutuban nga gahum
Gisulat na namo nga ang mga regular nga ekspresyon naghatag og kusog kaayo nga kapabilidad alang sa mga hangyo sa pagruta. Tan-awa ang mosunod nga pananglitan (sa among hunahuna masabtan nimo kung unsa ang gibuhat niini):
Karon tingali adunay ka ideya kung unsa ang mahimo sa mga regular nga ekspresyon.
Act Smart
Ang Smart routing, ilabi na ang pagproseso sa mga packet header gamit ang regular nga mga ekspresyon, nagtugot kanimo sa paggiya sa trapiko sa paagi nga imong gusto. Ug kini labi nga gipasimple ang pagpatuman sa bag-ong code - kini yano, wala kini kinahanglan nga usbon ang code mismo, ug kung gikinahanglan, ang tanan dali nga mabalik ingon kaniadto.
Interesado?
Gusto ka ba nga mag-eksperimento sa Istio, Kubernetes ug OpenShift sa imong kompyuter? Team
β
Istio Egress: paggawas pinaagi sa souvenir shop
Pinaagi sa paggamit sa Istio kauban ang Red Hat OpenShift ug Kubernetes, mahimo nimong mapadali ang imong kinabuhi sa mga microservice. Ang service mesh ni Istio gitago sa sulod sa mga Kubernetes pod, ug ang imong code nagdagan (kasagaran) nga nag-inusara. Performance, kasayon ββsa pagbag-o, pagsubay, ug uban pa - kining tanan sayon ββββgamiton salamat sa paggamit sa mga sudlanan sa sidecar. Apan unsa man kung ang imong microservice kinahanglan nga makigkomunikar sa ubang mga serbisyo nga nahimutang sa gawas sa imong OpenShift-Kubernetes nga sistema?
Dinhi giluwas ni Istio Egress. Sa laktod nga pagkasulti, gitugotan ka lang nga maka-access sa mga kapanguhaan (basaha ang: "mga serbisyo") nga dili bahin sa imong sistema sa mga pod sa Kubernetes. Kung dili ka magbuhat og dugang nga pag-configure, unya sa Istio Egress nga palibot ang trapiko madala lamang sulod sa usa ka pungpong sa mga pod ug tali sa maong mga cluster base sa internal nga IP tables. Ug ang ingon nga pupation maayo kaayo basta dili nimo kinahanglan ang pag-access sa mga serbisyo gikan sa gawas.
Gitugotan ka sa Egress nga laktawan ang mga lamesa sa ibabaw sa IP, base sa mga lagda sa Egress o sa lainlaing mga adres sa IP.
Ingnon ta nga naa tay Java program nga muhimo ug GET request sa httpbin.org/headers.
(Ang httpbin.org usa lang ka kombenyente nga kapanguhaan alang sa pagsulay sa mga nanggawas nga hangyo sa serbisyo.)
Kung mosulod ka sa command line curl http://httpbin.org/headers
, atong makita ang mosunod:
O mahimo nimong ablihan ang parehas nga adres sa browser:
Sama sa imong nakita, ang serbisyo nga nahimutang didto nagbalik lang sa mga ulohan nga gipasa niini.
Pag-import nga substitution head-on
Karon atong kuhaon ang Java code niini nga serbisyo, gawas sa atong sistema, ug ipadagan kini sa atong kaugalingon, diin, hinumdomi, ang Istio na-install. (Mahimo nimo kini sa imong kaugalingon pinaagi sa pagkontak curl egresshttpbin-istioegress.$(minishift ip).nip.io
, pagkahuman atong makita kini sa screen:
Oops, unsay nahitabo? Ang tanan nagtrabaho lang. Unsay buot ipasabot sa Not Found? Gibuhat ra namo to para niya curl
.
Pagpalapad sa mga IP table sa tibuok Internet
Dapat basulon (o pasalamatan) si Istio niini. Tuod man, ang Istio kay sidecar container lang nga maoy responsable sa pag-detect ug routing (ug daghan pang mga butang nga atong gihisgutan sa sayo pa). Tungod niini nga hinungdan, ang mga lamesa sa IP nahibal-an ra kung unsa ang naa sa sulod sa imong cluster system. Ug ang httpbin.org nahimutang sa gawas ug busa dili ma-access. Ug kini diin ang Istio Egress moabut sa pagluwas - nga walaβy bisan gamay nga pagbag-o sa imong gigikanan nga code.
Ang Egress nga lagda sa ubos nagpugos sa Istio sa pagpangita (kon gikinahanglan, unya sa tibuok Internet) alang sa gikinahanglan nga serbisyo, sa niini nga kaso, httpbin.org. Sama sa imong makita gikan sa kini nga file (egress_httpbin.yml), ang pagpaandar dinhi yano ra:
Ang nahabilin mao ang paggamit niini nga lagda:
istioctl create -f egress_httpbin.yml -n istioegress
Mahimo nimong tan-awon ang mga lagda sa Egress gamit ang mando istioctl get egressrules
:
Ug sa katapusan, gipadagan namon ang mando pag-usab curl - ug among nakita nga ang tanan molihok:
Kita naghunahuna sa dayag
Sama sa imong nakita, gitugotan ka ni Istio nga mag-organisar og interaksyon sa gawas nga kalibutan. Sa laing pagkasulti, makahimo ka gihapon sa paghimo og mga serbisyo sa OpenShift ug pagdumala niini pinaagi sa Kubernetes, nga gitipigan ang tanan sa mga pod nga nagsaka ug paubos kung gikinahanglan. Ug sa samang higayon, luwas ka nga maka-access sa mga serbisyo sa gawas sa imong palibot. Ug oo, gisubli namo pag-usab nga kining tanan mahimo nga dili mahikap ang imong code sa bisan unsang paagi.
Kini ang katapusang post sa serye sa Istio. Pagbantay - adunay daghang makapaikag nga mga butang sa unahan!
Source: www.habr.com