Mangitngit nga Paglusad sa Istio: Sekreto nga Serbisyo

"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.

Mangitngit nga Paglusad sa Istio: Sekreto nga Serbisyo

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 Istio Tutorial GitHub repo), samtang dungan nga nagsalamin kanila sa rekomendasyon v2 microservice:

Mangitngit nga Paglusad sa Istio: Sekreto nga Serbisyo
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. mobalik sa pagmina, ug kon kini gikan sa Russian nga gigikanan, kini lagmit adunay usa ka reperensiya sa mga iring), ug karon atong tan-awon kini sa mas detalyado.

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:

Mangitngit nga Paglusad sa Istio: Sekreto nga Serbisyo
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:

Mangitngit nga Paglusad sa Istio: Sekreto nga Serbisyo
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:

Mangitngit nga Paglusad sa Istio: Sekreto nga Serbisyo

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):

Mangitngit nga Paglusad sa Istio: Sekreto nga Serbisyo
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 Red Hat Developer Team nag-andam usa ka maayo kaayo libro nga libro sa kini nga hilisgutan ug gihimo ang tanan nga kauban nga mga file nga magamit sa publiko. Busa padayon ug ayaw paglimud sa imong kaugalingon bisan unsa.
 

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:

Mangitngit nga Paglusad sa Istio: Sekreto nga Serbisyo
O mahimo nimong ablihan ang parehas nga adres sa browser:

Mangitngit nga Paglusad sa Istio: Sekreto nga Serbisyo
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 among Istio tutorial.) Sa paghimo sa angay nga imahe ug gilansad kini sa OpenShift nga plataporma, among tawgon kini nga serbisyo uban ang mando curl egresshttpbin-istioegress.$(minishift ip).nip.io, pagkahuman atong makita kini sa screen:

Mangitngit nga Paglusad sa Istio: Sekreto nga Serbisyo
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:

Mangitngit nga Paglusad sa Istio: Sekreto nga Serbisyo
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:

Mangitngit nga Paglusad sa Istio: Sekreto nga Serbisyo
Ug sa katapusan, gipadagan namon ang mando pag-usab curl - ug among nakita nga ang tanan molihok:

Mangitngit nga Paglusad sa Istio: Sekreto nga Serbisyo

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

Idugang sa usa ka comment