Tsaus Launch hauv Istio: Kev Pabcuam zais cia

"Kev phom sij yog kuv lub npe nruab nrab," Austin Powers, tus txiv neej paub tsis meej thoob ntiaj teb, tau hais. Tab sis dab tsi yog tuav hauv kev hwm los ntawm cov neeg sawv cev super thiab cov kev pabcuam kev txawj ntse tsis yog txhua qhov tsim nyog rau cov kev pabcuam hauv computer, qhov kev dhuav zoo dua li qhov txaus ntshai.

Tsaus Launch hauv Istio: Kev Pabcuam zais cia

Thiab Istio, ua ke nrog OpenShift thiab Kubernetes, ua rau kev xa cov microservices tiag tiag boring thiab kwv yees - thiab qhov ntawd zoo heev. Peb mam li tham txog qhov no thiab ntau ntxiv nyob rau hauv plaub thiab zaum kawg tshaj tawm hauv Istio series.

Thaum dhuav yog lawm

Nyob rau hauv peb cov ntaub ntawv, dhuav tshwm sim tsuas yog nyob rau hauv lub kawg theem, thaum tag nrho cov seem yog zaum thiab saib cov txheej txheem. Tab sis rau qhov no koj yuav tsum tau teeb tsa txhua yam ua ntej, thiab ntau yam nthuav dav tos koj ntawm no.

Thaum xa tawm ib qho tshiab ntawm koj cov software, nws tsim nyog xav txog txhua txoj hauv kev los txo qhov pheej hmoo. Kev sib tw ua ke yog ib txoj hauv kev muaj zog heev thiab muaj pov thawj los sim, thiab Istio tso cai rau koj siv "kev pabcuam zais cia" (ib qho zais zais ntawm koj lub microservice) ua qhov no yam tsis muaj kev cuam tshuam nrog cov txheej txheem tsim khoom. Muaj txawm tias ib lub sij hawm tshwj xeeb rau qhov no - "Dark Launch", uas nyob rau hauv lem yog qhib los ntawm ib tug muaj nuj nqi nrog ib tug sib npaug zos neeg soj xyuas lub npe "traffic mirroring".

Thov nco ntsoov tias thawj kab lus ntawm kab lus dhau los siv lo lus "deploy" es tsis yog "tso tawm". Koj yuav tsum muaj peev xwm siv tau-thiab, tau kawg, siv-koj lub microservice ntau npaum li koj xav tau. Qhov kev pabcuam no yuav tsum muaj peev xwm tau txais thiab ua cov tsheb khiav, tsim cov txiaj ntsig, thiab tseem sau rau cov cav thiab saib xyuas. Tab sis tib lub sijhawm, qhov kev pabcuam no nws tus kheej tsis tas yuav tsum tau muab tso rau hauv kev tsim khoom. Kev xa tawm thiab tso tawm software tsis yog ib txwm zoo ib yam. Koj tuaj yeem xa tawm thaum twg koj xav tau, tab sis tso tawm tsuas yog thaum koj npaj tau.

Kev txhim kho kev ntxhov siab yog qhov nthuav

Ua tib zoo saib ntawm Istio routing txoj cai hauv qab no, uas ua rau tag nrho HTTP thov rau microservice pom zoo v1 (tag nrho cov piv txwv coj los ntawm Istio Tutorial GitHub repo), thaum ib txhij mirroring lawv mus rau qhov kev pom zoo v2 microservice:

Tsaus Launch hauv Istio: Kev Pabcuam zais cia
Ua tib zoo saib rau daim ntawv lo mirror: nyob rau hauv qab ntawm qhov screen - nws yog qhov no uas teev cov tsheb mirroring. Yog, nws yog qhov yooj yim!

Qhov tshwm sim ntawm txoj cai no yuav yog tias koj cov txheej txheem tsim khoom (v1) yuav txuas ntxiv ua cov ntawv thov tuaj, tab sis qhov kev thov lawv tus kheej yuav yog asynchronously mirrored rau v2, uas yog, lawv cov duplicates tiav yuav mus rau ntawd. Txoj kev no, koj tuaj yeem sim v2 hauv cov xwm txheej tiag tiag - ntawm cov ntaub ntawv tiag tiag thiab kev khiav tsheb - tsis muaj kev cuam tshuam rau txhua txoj hauv kev nrog kev ua haujlwm ntawm cov txheej txheem tsim khoom. Qhov no puas ua rau kev teeb tsa kev sim tho txawv? Yog, twv yuav raug hu. Tab sis nws tau ua tiav hauv txoj kev nthuav dav.

Wb ntxiv ua yeeb yam

Thov nco ntsoov tias hauv v2 code nws yog qhov tsim nyog los muab rau cov xwm txheej uas cov kev thov tuaj yeem ua rau cov ntaub ntawv hloov pauv. Cov kev thov lawv tus kheej yog mirrored yooj yim thiab pob tshab, tab sis kev xaiv ntawm kev ua cov txheej txheem nyob rau hauv qhov kev xeem yog nyob ntawm koj - thiab qhov no yog me ntsis txhawj xeeb.

Cia peb rov hais dua ib qho tseem ceeb

Kev tso tawm zais cia nrog kev tsom iav tsheb (Dark Launch / Thov Mirroring) tuaj yeem ua tau yam tsis muaj kev cuam tshuam cov cai hauv txhua txoj kev.

Khoom noj rau kev xav

Yuav ua li cas yog tias qhov chaw thov yog mirrored xa ib co ntawm lawv tsis mus rau v1, tab sis rau v2? Piv txwv li, ib feem pua ​​​​ntawm tag nrho cov kev thov lossis tsuas yog thov los ntawm qee pawg neeg siv. Thiab tom qab ntawd, twb saib yuav ua li cas v2 ua haujlwm, maj mam hloov txhua qhov kev thov mus rau qhov tshiab version. Los yog vice versa, rov qab txhua yam rau v1 yog tias muaj qee yam yuam kev nrog v2. Kuv xav tias nws hu ua Canary Deployment. rov qab mus rau mining, thiab yog hais tias nws yog los ntawm Lavxias teb sab keeb kwm, nws tej zaum yuav muaj ib tug siv rau miv), thiab tam sim no peb yuav saib qhov no hauv kev nthuav dav ntxiv.

Canary Deployment hauv Istio: simplifying commissioning

Ua tib zoo thiab maj mam

Lub ntsiab lus ntawm Canary Deployment qauv yog qhov yooj yim heev: thaum koj tso tawm ib qho tshiab ntawm koj cov software (hauv peb cov ntaub ntawv, microservice), koj thawj zaug muab nkag rau nws rau ib pab pawg neeg siv me me. Yog tias txhua yam mus zoo, koj maj mam nce cov pab pawg no kom txog rau thaum cov tshiab version pib ua, lossis - yog tias nws tsis ua - nws thiaj li tsiv tag nrho cov neeg siv mus rau nws. Los ntawm kev xav thiab maj mam qhia tus tshiab version thiab hloov cov neeg siv rau nws raws li kev tswj hwm, koj tuaj yeem txo cov kev pheej hmoo thiab ua kom cov lus pom zoo.

Tau kawg, Istio ua kom yooj yim rau Canary Deployment los ntawm muab ob peb txoj hauv kev zoo rau kev thov kev txawj ntse. Thiab yog, txhua yam no tuaj yeem ua tiav yam tsis tas kov koj qhov chaws hauv txhua txoj kev.

Lim qhov browser

Ib qho ntawm cov txheej txheem routing yooj yim tshaj plaws yog browser-raws li redirection. Wb hais tias koj xav tau tsuas yog thov los ntawm Safari browsers mus rau v2. Nov yog qhov nws ua tiav:

Tsaus Launch hauv Istio: Kev Pabcuam zais cia
Cia peb siv txoj cai routing no thiab tom qab ntawd siv cov lus txib curl Peb yuav simulate qhov kev thov tiag tiag rau microservice hauv lub voj voog. Raws li koj tuaj yeem pom hauv lub screenshot, lawv txhua tus mus rau v1:

Tsaus Launch hauv Istio: Kev Pabcuam zais cia
Cov tsheb khiav nyob qhov twg v2? Txij li hauv peb qhov piv txwv txhua qhov kev thov tsuas yog los ntawm peb tus kheej cov kab hais kom ua, nws tsuas tsis muaj nyob. Tab sis ua tib zoo mloog cov kab hauv qab hauv qhov screen saum toj no: qhov no yog qhov tshwm sim rau qhov tseeb tias peb tau ua tiav qhov kev thov los ntawm Safari browser, uas dhau los ua qhov no:

Tsaus Launch hauv Istio: Kev Pabcuam zais cia

Unlimited zog

Peb twb tau sau tias cov lus hais tsis tu ncua muab lub peev xwm muaj zog heev rau kev thov kev xa mus. Ua tib zoo saib cov piv txwv hauv qab no (peb xav tias koj yuav nkag siab tias nws ua li cas):

Tsaus Launch hauv Istio: Kev Pabcuam zais cia
Los ntawm tam sim no tej zaum koj yuav muaj ib lub tswv yim ntawm cov lus hais li cas tuaj yeem ua tau.

Ua Ntse

Smart routing, tshwj xeeb tshaj yog ua cov pob ntawv headers siv cov lus qhia tsis tu ncua, tso cai rau koj tswj cov tsheb khiav raws li koj xav tau. Thiab qhov no ua kom yooj yim rau kev siv cov cai tshiab - nws yooj yim, nws tsis tas yuav hloov txoj cai nws tus kheej, thiab yog tias tsim nyog, txhua yam tuaj yeem xa rov qab sai li sai tau.

txaus siab?

Koj puas xav sim nrog Istio, Kubernetes thiab OpenShift ntawm koj lub computer? Pab neeg Red Hat Developer Team npaj ib qho zoo heev phau ntawv nyeem ntawm lub ncauj lus no thiab ua kom tag nrho cov ntaub ntawv nrog rau pej xeem. Yog li mus tom ntej thiab tsis txhob tso tseg koj tus kheej ib yam dab tsi.
 

Istio Egress: tawm ntawm lub khw muag khoom plig

Los ntawm kev siv Istio ua ke nrog Red Hat OpenShift thiab Kubernetes, koj tuaj yeem ua rau koj lub neej nrog microservices yooj yim dua. Istio cov kev pabcuam mesh tau muab zais rau hauv Kubernetes pods, thiab koj cov lej khiav (feem ntau) nyob rau hauv kev sib cais. Kev ua tau zoo, kev hloov pauv yooj yim, taug qab, thiab lwm yam - txhua yam no yooj yim siv ua tsaug rau kev siv cov thawv sab hauv. Tab sis yuav ua li cas yog tias koj lub microservice xav tau kev sib txuas lus nrog lwm cov kev pabcuam uas nyob sab nraum koj lub OpenShift-Kubernetes?

Qhov no yog qhov uas Istio Egress los cawm. Hauv cov ntsiab lus, nws tsuas tso cai rau koj nkag mus rau cov peev txheej (nyeem: "kev pabcuam") uas tsis yog ib feem ntawm koj qhov system ntawm Kubernetes pods. Yog tias koj tsis ua qhov kev teeb tsa ntxiv, tom qab ntawd hauv Istio Egress ib puag ncig kev tsheb khiav tsuas yog nyob hauv ib pawg ntawm cov pods thiab nruab nrab ntawm pawg raws li cov rooj sab hauv IP. Thiab xws li pupation ua haujlwm zoo heev yog tias koj tsis xav tau kev pabcuam los ntawm sab nraud.

Egress tso cai rau koj hla dhau cov lus IP saum toj no, raws li cov cai Egress lossis ntawm ntau qhov chaw nyob IP.

Cia peb hais tias peb muaj Java program uas ua rau GET thov rau httpbin.org/headers.

(httpbin.org tsuas yog ib qho chaw yooj yim rau kev sim cov kev pab cuam tawm mus.)

Yog tias koj nkag mus rau ntawm kab hais kom ua curl http://httpbin.org/headers, peb yuav pom cov hauv qab no:

Tsaus Launch hauv Istio: Kev Pabcuam zais cia
Lossis koj tuaj yeem qhib tib qhov chaw nyob hauv browser:

Tsaus Launch hauv Istio: Kev Pabcuam zais cia
Raws li koj tuaj yeem pom, qhov kev pabcuam nyob rau ntawd tsuas yog rov qab cov headers dhau mus rau nws.

Peb tab tom hloov imports head-on

Tam sim no cia peb coj Java code ntawm qhov kev pabcuam no, sab nraud rau peb lub cev, thiab khiav nws ntawm peb tus kheej, qhov twg, nco qab, Istio tau teeb tsa. (Koj tuaj yeem ua qhov no koj tus kheej los ntawm kev tiv tauj peb Istio tutorial.) Tau tsim cov duab tsim nyog thiab tso tawm rau ntawm OpenShift platform, peb yuav hu rau qhov kev pabcuam no nrog cov lus txib curl egresshttpbin-istioegress.$(minishift ip).nip.ioTom qab ntawd peb yuav pom qhov no ntawm qhov screen:

Tsaus Launch hauv Istio: Kev Pabcuam zais cia
Oops, ua li cas? Txhua yam ua haujlwm xwb. Tsis pom txhais li cas? Peb tsuas yog ua rau nws curl.

Txuas IP rooj rau tag nrho Is Taws Nem

Istio yuav tsum tau cem (los yog ua tsaug) rau qhov no. Tom qab tag nrho, Istio tsuas yog cov thawv ntim tsheb uas muaj lub luag haujlwm rau kev tshawb nrhiav thiab kev mus ncig (thiab ntau yam uas peb tau tham txog ua ntej). Vim li no, cov rooj IP tsuas paub dab tsi hauv koj pawg pawg. Thiab httpbin.org nyob sab nraud thiab yog li nkag tsis tau. Thiab qhov no yog qhov uas Istio Egress los cawm - tsis muaj qhov hloov me ntsis rau koj qhov chaws.

Txoj cai Egress hauv qab no yuam Istio tshawb nrhiav (yog tias tsim nyog, tom qab ntawd thoob plaws hauv Is Taws Nem) rau cov kev pabcuam xav tau, qhov no, httpbin.org. Raws li koj tuaj yeem pom los ntawm cov ntaub ntawv no (egress_httpbin.yml), kev ua haujlwm ntawm no yog qhov yooj yim heev:

Tsaus Launch hauv Istio: Kev Pabcuam zais cia
Txhua yam uas tseem tshuav yog siv txoj cai no:

istioctl create -f egress_httpbin.yml -n istioegress

Koj tuaj yeem saib Egress cov cai nrog cov lus txib istioctl get egressrules:

Tsaus Launch hauv Istio: Kev Pabcuam zais cia
Thiab thaum kawg, peb khiav cov lus txib dua curl - thiab peb pom tias txhua yam ua haujlwm:

Tsaus Launch hauv Istio: Kev Pabcuam zais cia

Peb xav qhib siab

Raws li koj tuaj yeem pom, Istio tso cai rau koj los teeb tsa kev sib tham nrog lub ntiaj teb sab nraud. Hauv lwm lo lus, koj tseem tuaj yeem tsim cov kev pabcuam OpenShift thiab tswj lawv los ntawm Kubernetes, khaws txhua yam hauv cov pods uas nce thiab nqis raws li xav tau. Thiab tib lub sijhawm, koj tuaj yeem nkag mus rau cov kev pabcuam sab nraud rau koj qhov chaw nyab xeeb. Thiab yog, peb rov hais dua ib zaug ntxiv tias txhua qhov no tuaj yeem ua tiav yam tsis tau kov koj cov cai hauv txhua txoj kev.

Qhov no yog qhov kawg tshaj tawm hauv koob ntawm Istio. Nyob twj ywm - muaj ntau yam nthuav ua ntej!

Tau qhov twg los: www.hab.com

Ntxiv ib saib