Waxa aan sugaynay (oo aan anaga oo keliya ahayn) muddo dheer ayaa dhacay: , Utility our Open Source ee loogu talagalay dhisidda codsiyada iyo gaarsiinta Kubernetes, hadda waxay taageertaa codsashada isbeddelada iyadoo la adeegsanayo balastarrada isku dhafka ah ee 3-way! Taas waxaa dheer, waxaa suurtogal ah in loo isticmaalo agabyada K8s ee jira siidaynta Helm iyada oo aan dib loo dhisin agabkan.

Haddii ay aad u gaaban tahay, markaa waxaan dhignaa WERF_THREE_WAY_MERGE=enabled - Waxaan helnaa hawlgelin "sida ku jirta kubectl apply", oo ku habboon rakibaadaha Helm 2 ee jira iyo xitaa in yar oo dheeraad ah.
Laakiin aan ku bilowno aragtida: waa maxay dhabta ah ee 3-way-isku-dhafka ah, sidee ayay dadku ula yimaadeen habka loo soo saari karo, iyo sababta ay muhiim ugu yihiin hababka CI/CD ee kaabayaasha Kubernetes ku salaysan? Taas ka dib, aynu aragno waxa 3-way-merge ku jira werf, hababka loo isticmaalo default iyo sida loo maareeyo.
Waa maxay balastar 3-dariiq ah?
Marka, aan ku bilowno hawsha soo-saarida agabka lagu sifeeyay YAML-ga Kubernetes.
Si loogu shaqeeyo agabka, Kubernetes API wuxuu bixiyaa hawlgallada aasaasiga ah ee soo socda: abuur, dheji, beddel oo tirtir. Waxa loo malaynayaa in iyaga oo kaalmaynaya ay lagama maarmaan tahay in la dhiso hab ku habboon oo joogto ah oo agabka ah oo loo diro kooxda. Sidee?
kubectl amarada lama huraanka ah
Habka ugu horreeya ee loo maareeyo walxaha Kubernetes waa in la isticmaalo amarrada muhiimka ah ee kubectl si loo abuuro, wax uga beddelo, loona tirtiro walxahan. Si fudud u dhig:
- kooxda
kubectl runwaxaad samayn kartaa Deployment ama Job:kubectl run --generator=deployment/apps.v1 DEPLOYMENT_NAME --image=IMAGE - kooxda
kubectl scale- beddel tirada nuqullada:kubectl scale --replicas=3 deployment/mysql - iyo wixii la mid ah.
Habkani wuxuu u ekaan karaa mid ku habboon jaleecada hore. Si kastaba ha ahaatee waxaa jira dhibaatooyin:
- Way adag tahay otomatik.
- Sidee ka tarjumaysa qaabeynta gudaha Git? Sidee dib loogu eegayaa isbeddelada ku dhacaya kooxda?
- Sida loo bixiyo taranka qaabaynta dib u bilaabma?
- ...
Way caddahay in habkani aanu ku habboonayn kaydinta codsiga iyo kaabayaasha kood ahaan (IaC; ama xataa sida ikhtiyaarka casriga ah, helitaanka caan ka ah nidaamka deegaanka ee Kubernetes). Sidaa darteed, amarradan ma helin horumar dheeraad ah kubectl.
Abuur, hel, beddel oo tirtir hawlaha
Iyada oo aasaasiga ah abuurista way fududahay: u dir caddaynta hawlgalka create kube api iyo kheyraadka waa la abuuray. Matalaadda YAML ee muujinta waxaa lagu kaydin karaa Git waxaana la abuuray iyadoo la adeegsanayo amarka kubectl create -f manifest.yaml.
С ka saarida sidoo kale fudud: bedel isku mid ah manifest.yaml laga bilaabo Git ilaa kooxda kubectl delete -f manifest.yaml.
Hawlgalka replace Waxay kuu ogolaaneysaa inaad si buuxda u bedesho qaabeynta kheyraadka mid cusub, adigoon dib u abuurin kheyraadka. Tani waxay ka dhigan tahay in ka hor inta aan la beddelin kheyraadka, ay macquul tahay in la weydiiyo nooca hadda ee hawlgalka get, beddel oo ku cusboonaysii qalliinka replace. kube apiserver waa la dhisay iyo, haddii qaliinka ka dib get shaygu wuu isbedelay, ka dibna qaliinka replace ma shaqayn doonto.
Si aad u kaydiso qaabaynta Git oo aad u cusboonaysiiso adigoo isticmaalaya beddelka, waxaad u baahan tahay inaad samayso hawlgalka get, ku biir qaabka Git iyo waxa aan helnay, oo fuli replace. Sida caadiga ah, kubectl ayaa kaliya kuu ogolaanaya inaad isticmaasho amarka kubectl replace -f manifest.yamlhalkaas oo manifest.yaml - mar horeba si buuxda loo diyaariyey (kiiskeena, la isku daray) muujinta u baahan in la rakibo. Waxaa soo baxday in isticmaaluhu uu u baahan yahay inuu hirgeliyo bandhigyada isku-dhafka ah, tanina maaha arrin fudud ...
Waxaa kaloo xusid mudan in kastoo manifest.yaml waxaana lagu kaydiyaa Git, hore uma ogaan karno inay lagama maarmaan tahay in la abuuro shay ama la cusboonaysiiyo - tan waa in lagu sameeyaa software-ka isticmaalaha.
Wadarta: ma dhisi karnaa dib u habeyn joogto ah Isticmaalka kaliya abuurista, beddelka iyo tirtirka, hubinta in qaabeynta kaabayaasha lagu kaydiyo Git oo ay la socoto koodka iyo CI/CD habboon?
Mabda 'ahaan, waan awoodnaa... Taas awgeed waxaad u baahan doontaa inaad fuliso hawlgalka isku darka manifestos iyo nooc ka mid ah xidhidhiyaha in:
- hubisaa joogitaanka shay ku jira kooxda,
- Wuxuu sameeyaa abuurka bilowga ah,
- cusbooneysiiya ama tirtirtaa.
Markaad cusboonaysiinayso, fadlan ogow taas waxaa laga yaabaa in kheyraadku isbedelay tan iyo markii ugu dambeysay get oo si otomaatig ah u xalliso kiiska quful rajo leh - samee isku dayo cusbooneysiin ah oo soo noqnoqda.
Si kastaba ha ahaatee, sababta dib-u-cusboonaysiinta giraangiraha marka kube-apiserver ay bixiso hab kale oo lagu cusboonaysiiyo agabka: hawlgalka patch, kaas oo ka fududeeya isticmaalaha qaar ka mid ah dhibaatooyinka la tilmaamay?
Patch
Hadda waxaan helnaa balastarrada.
Xirmooyinka waa habka ugu horreeya ee lagu dabaqo isbeddelada walxaha jira Kubernetes. Hawlgalka patch waxay u shaqeysaa sidatan:
- Isticmaalaha kube-apiserver wuxuu u baahan yahay inuu soo diro balastar foomka JSON oo uu caddeeyo shayga,
- iyo apiserver laftiisa ayaa wax ka qaban doona xaaladda hadda ee shayga oo keeni doona foomka loo baahan yahay.
Quful rajo leh looma baahna kiiskan. Hawlgalkani waa ka caddayn badan yahay beddelka, inkastoo marka hore ay u ekaan karto si kale.
Sidan:
- iyadoo la isticmaalayo qalliin
createWaxaan abuurnaa shay sida ku cad muujinta Git, - iyadoo gacan ka heleysa
delete- tirtir haddii shayga aan hadda loo baahnayn, - iyadoo gacan ka heleysa
patch- waanu bedelnaa shayga, anagoo keenayna qaabka lagu sharaxay Git.
Si kastaba ha noqotee, si tan loo sameeyo, waxaad u baahan tahay inaad abuurto balastar sax ah!
Sida balastarrada ugu shaqeeyaan Helm 2: 2-way-midaynta
Marka ugu horeysa ee aad rakibto sii-deynta, Helm ayaa fulinaysa qalliinka create khayraadka shaxda.
Markaad cusboonaysiinayso siidaynta Helm ee kheyraad kasta:
- waxay tixgelisaa balastar u dhexeeya nooca kheyraadka ee jaantuskii hore iyo nooca jaantuska hadda,
- dabaqa balastarkan.
Waxaan u yeeri doonaa balastarkan 2-way balastar isku dar ah, sababtoo ah 2 manifestos ayaa ku lug leh abuurkeeda:
- caddaynta kheyraadka ee sii dayntii hore,
- caddaynta kheyraadka laga helay kheyraadka hadda.
Marka la saarayo hawlgalka delete Kube apiserver waxaa loogu yeeraa kheyraadka lagu dhawaaqay sii dayntii hore, laakiin aan lagu dhawaaqin kan hadda jira.
2da dariiqo ee isku dhafka ah ee habka balastar ayaa leh dhibaato: waxay keenaysaa ka baxsan xaaladda dhabta ah ee kheyraadka ku jira kutlada iyo muujinta Git.
Sawirka dhibaatada tusaale
- Git gudaheeda, jaantusku wuxuu kaydiyaa muujinta goobta
imagekeenista arimahaubuntu:18.04. - Isticmaalaha iyada oo loo marayo
kubectl editwax u beddelay qiimaha goobtanubuntu:19.04. - Marka dib loo hawlgelinayo shaxda Helm ma dhaliso balastar, sababtoo ah garoonka
imagein version hore ee sii deynta iyo shaxda hadda waa isku mid. - Dib-u-dejinta ka dib
imagehadhaagiiubuntu:19.04, inkastoo jaantusku leeyahayubuntu:18.04.
Waxaan helnay kala-saarid iyo caddeymo lumay.
Waa maxay kheyraadka la isku daray?
Guud ahaan dhameystiran Suurtagal ma aha in la helo isbarbardhiga u dhexeeya muujinta agabka ee kutlada socda iyo muujinta Git. Sababtoo ah muujinta dhabta ah waxaa laga yaabaa inay ku jiraan tilmaamo/calaamado adeeg, weelal dheeri ah iyo xog kale oo lagu daray oo laga saaray ilaha si firfircooni ah qaar ka mid ah kontaroolayaasha. Ma awoodno mana rabno inaan xogtan ku hayno Git. Si kastaba ha noqotee, waxaan rabnaa meelaha aan si cad u qeexnay Git si ay u qaataan qiyamka ku habboon marka la baahinayo.
Waxay soo baxday si guud xeerka kheyraadka la mideeyeyMarka aad soo saarayso kheyraadka, waxaad bedeli kartaa ama tirtiri kartaa kaliya meelaha sida cad loogu qeexay muujinta Git (ama lagu qeexay nooc hore oo hadda la tirtiray).
3-way balastar isku dar ah
Fikradda ugu weyn Samee balastar u dhexeeya nuqulkii ugu dambeeyay ee lagu dabaqay ee ka yimid Git iyo nooca bartilmaameedka muujinta ee Git, iyadoo la tixgalinayo nooca hadda ee muujinta ee kooxda socota. balastar ka dhalanaya waa in ay u hogaansantaa xeerka kheyraadka ee la mideeyey:
- beero cusub oo lagu daray nooca bartilmaameedka ayaa lagu daraa iyadoo la isticmaalayo balastar;
- Goobihii hore u jiray ee nooca ugu dambeeyay ee la dabaqay oo aan ku jirin nooca bartilmaameedka ayaa dib loo dajiyay iyadoo la isticmaalayo balastar;
- beeraha nooca hadda ee shayga ka duwan nooca bartilmaameedka ee muujinta ayaa la cusboonaysiiyaa iyadoo la isticmaalayo balastar ah.
Mabda'an ayay ku jirtaa in ay abuurto balastar kubectl apply:
- nooca ugu dambeeya ee la dabaqay ee muujinta waxa lagu kaydiyaa sharraxaadda shayga laftiisa,
- bartilmaameed - laga soo qaatay faylka YAML ee la cayimay,
- midda hadda jirta waxay ka socotaa koox ordaya.
Hadda oo aan xallinay aragtida, waa waqtigii aan kuu sheegi lahayn waxa aan ku sameynay werf.
Ku dabaqida isbeddelada werf
Markii hore, werf, sida Helm 2, waxay adeegsan jirtay balastar laba-jid ah.
Hagaajinta balastar
Si loo beddelo nooc cusub oo balastar ah - 3-way-mirge - tallaabadii ugu horreysay waxaan soo bandhignay waxa loogu yeero. balastar dayactirka.
Marka la dirayo, balastar 2-way-isku-dhafka ah ayaa la isticmaalaa, laakiin werf waxa kale oo ay soo saartaa balastar is-waafajin doona xaaladda dhabta ah ee kheyraadka iyo waxa ku qoran Git ( balastar noocan oo kale ah ayaa la sameeyay iyadoo la adeegsanayo isla xeerka kheyraadka ee la mideeyey ee kor lagu sharaxay) .
Haddii kala-saarku dhaco, dhammaadka hawlgelinta adeegsaduhu wuxuu helayaa DIGNIIN wata fariin u dhiganta iyo balastar ay tahay in lagu dabaqo si loo keeno agabka qaab la midaysan. balastarkan waxa kale oo lagu duubay qoraal gaar ah werf.io/repair-patch. Waxaa loo maleynayaa in gacmaha isticmaalaha сам waxay dabaqi doontaa balastarkan: werf gabi ahaanba ma dabaqi doono.
Abuurista balastarrada dayactirka waa cabbir ku meel gaar ah oo kuu ogolaanaya inaad si dhab ah u tijaabiso abuurista balastarrada iyadoo lagu salaynayo mabda'a 3-dariiq ee isku-dhafka ah, laakiin si toos ah ha u isticmaalin balastaradan. Waqtigan xaadirka ah, qaabkan hawlgalka waxa loo dajiyay si toos ah.
3-way-isku xidh balastar ah oo kaliya siidaynta cusub
Laga bilaabo Disembar 1, 2019, noocyada beta iyo alfa ee werf ayaa bilaabmaya iyada oo loo eegayo qaddarka Isticmaal balastar-isku-dhafka 3-jid oo buuxa si aad u dabaqdo isbeddellada kaliya ee Helm-ka cusub ee lagu soo rogay werf. Siidaynta hadda jirta waxay sii wadi doontaa adeegsiga habka laba-jid-isku-dhafka ah ee hagaajinta.
Habkan hawlgelinta waxa loo hawlgelin karaa si cad marka la dejiyo WERF_THREE_WAY_MERGE_MODE=onlyNewReleases hadda.
tacliiq: muuqaalku wuxuu ka soo muuqday werf in ka badan dhowr sii dayn: kanaalka alfa wuxuu noqday mid u diyaarsan nooca , iyo kanaalka beta - oo leh .
3-way-isku-dhafka balastar ee dhammaan sii-deynta
Laga bilaabo Diseembar 15, 2019, noocyada beta iyo alfa ee werf waxay bilaabayaan inay isticmaalaan balastar 3-jid ah oo buuxa si ay ugu dabaqaan isbeddelada dhammaan sii deynta.
Habkan hawlgelinta waxa loo hawlgelin karaa si cad marka la dejiyo WERF_THREE_WAY_MERGE_MODE=enabled hadda.
Maxaa lagu sameeyaa qalabaynta autoscaling?
Waxaa jira 2 nooc oo autoscaling gudaha Kubernetes: HPA (horizontal) iyo VPA (vertical).
Horizontal waxay si toos ah u doorataa tirada nuqullada, toosan - tirada kheyraadka. Tirada nuqulada iyo shuruudaha kheyraadka labaduba waxay ku qeexan yihiin muujinta kheyraadka (eeg Warbixinta Kheyraadka). spec.replicas ama spec.containers[].resources.limits.cpu, spec.containers[].resources.limits.memory и ).
Dhibaatada: haddii adeegsaduhu u habeeyo kheyraadka shaxda si uu u qeexo qiyamka qaar ee agabka ama nuqullada iyo autoscalers ayaa awood loo siiyay kheyraadkan, ka dib werf kasta oo la geynayo wuxuu dib u dejin doonaa qiyamkan waxa ku qoran jaantuska muuqda. .
Waxaa jira laba xal oo dhibaatada. Si aad u bilawdo, waxa fiican inaad iska ilaaliso in si cad loo qeexo qiyamka autoscaled ee jaantuska. Haddii doorashadani aysan ku habboonayn sabab qaar ka mid ah (tusaale ahaan, sababtoo ah way ku habboon tahay in la dejiyo xaddidaadda kheyraadka bilowga ah iyo tirada nuqullada jaantuska), ka dib werf waxay soo bandhigaysaa faallooyinka soo socda:
-
werf.io/set-replicas-only-on-creation=true -
werf.io/set-resources-only-on-creation=true
Haddii sharraxaadda noocan oo kale ah ay jirto, werf dib uma dejin doonto qiyamka u dhigma ee hawlgal kasta, laakiin wuxuu dejin doonaa oo keliya marka kheyraadka marka hore la abuuro.
Faahfaahin dheeraad ah, ka eeg dukumentiga mashruuca и .
Mamnuuci isticmaalka balastar 3-jid ah
Isticmaaluhu wuxuu hadda mamnuuci karaa isticmaalka balastar cusub ee werf isagoo isticmaalaya doorsoom deegaan WERF_THREE_WAY_MERGE_MODE=disabled. Si kastaba ha ahaatee, bilawga Laga bilaabo Maarso 1, 2020, mamnuucidani ma sii socon doonto. waxaana suurtagal noqon doonta oo keliya in la isticmaalo balastar-isku-dhafan oo saddex-dhinac ah.
Qaadashada kheyraadka werf
Lahaanshaha habka loo adeegsado isbeddelada ee balastar-isku-dhafka 3-daba waxay noo ogolaatay inaan isla markaaba hirgelinno sifada ka mid ah qaadashada agabka jira ee kutlada ee sii deynta Helm.
Helm 2 waxa uu leeyahay dhibaato: kuma dari kartid agab jaantusyada ka jira kooxda adiga oo aan dib uga soo saarin agabkan meel eber (eeg. , ). Waxaan barnay werf inuu aqbalo agabka jira si loo sii daayo. Si tan loo sameeyo, waxaad u baahan tahay inaad ku rakibto qoraal ku saabsan nooca hadda ee kheyraadka ee kooxda socodsiisa (tusaale, adigoo isticmaalaya kubectl edit):
"werf.io/allow-adoption-by-release": RELEASE_NAMEHadda agabku wuxuu u baahan yahay in lagu qeexo jaantuska iyo marka xigta ee werf ay geyso sii-deynta magaca ku habboon, kheyraadka jira waa la aqbali doonaa siideyntan oo ay ku sii jiri doonaan gacanteeda. Waxaa intaa dheer, inta lagu guda jiro habka aqbalida kheyraadka siideynta, werf waxay ka keeni doontaa xaaladda hadda ee kheyraadka ee kooxda socodsiisa ilaa gobolka lagu sharraxay shaxanka, iyada oo la adeegsanayo dhejisyada isku-dhafka ah ee 3-dariiqa ah iyo xeerka kheyraadka ee isku-dhafka ah.
tacliiq: dejinta WERF_THREE_WAY_MERGE_MODE ma saameynayso qaadashada kheyraadka - marka la eego korsashada, mar walba waxaa la isticmaalaa balastar 3-jid ah.
Faahfaahin - gudaha .
Gabagabada iyo qorshayaasha mustaqbalka
Waxaan rajeynayaa in maqaalkan ka dib ay si cad u caddaatay waxa ay yihiin balastar-isku-dhafka 3-way iyo sababta ay u yimaadeen. Marka laga eego dhinaca wax ku oolka ah ee horumarinta mashruuca werf, hirgelintoodu waxay ahayd tallaabo kale oo lagu horumarinayo hawlgelinta Helm-ka oo kale. Hadda waxaad illoobi kartaa dhibaatooyinka isku-dhafka qaabeynta, taas oo inta badan kacday marka la isticmaalayo Helm 2. Isla mar ahaantaana, muuqaal cusub oo faa'iido leh oo ku saabsan qaadashada agabka Kubernetes ee horay loo soo dejiyey ayaa lagu daray siideynta Helm.
Weli waxaa jira arrimo iyo caqabado la xiriira hawlgelinta Helm-ka oo kale, sida adeegsiga qaab-dhismeedka Go, oo aan sii wadi doono wax ka qabashada.
Macluumaadka ku saabsan hababka cusboonaysiinta agabka iyo korsashada waxa kale oo laga heli karaa at .
Helm 3
Xusid gaar ah mudan Maalintii kale nooc cusub oo weyn oo Helm - v3 - kaas oo sidoo kale adeegsada balastar 3-way ah oo ka takhalusa Tiller. Nooca cusub ee Helm wuxuu u baahan yahay Rakibaadaha jira si loogu beddelo qaabka cusub ee kaydinta siideynta.
Werf, dhankeeda, hadda way ka takhalustay isticmaalka Tiller, waxay u wareegtay 3-way-isku-dhafka oo ku daray. , halka ay ku sii soconayso rakibaadda Helm 2 ee jira (looma baahna qoraal guuritaan oo loo baahan yahay in la fuliyo). Sidaa darteed, ilaa werf u wareego Helm 3, isticmaalayaasha werf ma luminayaan faa'iidooyinka ugu muhiimsan ee Helm 3 marka loo eego Helm 2 (werf sidoo kale iyagaa leh).
Si kastaba ha ahaatee, u wareejinta werf ee Helm 3 codebase waa lama huraan waxayna dhici doontaa mustaqbalka dhow. Malaha tani waxay noqon doontaa werf 1.1 ama werf 1.2 (hadda la joogo, nooca ugu weyn ee werf waa 1.0; Macluumaad dheeraad ah oo ku saabsan aaladda nooca werf, eeg ). Inta lagu jiro wakhtigan, Helm 3 waxay heli doontaa wakhti ay ku xasiliso.
PS
Sidoo kale ka akhri boggayaga:
- Qoraallo taxane ah oo ku saabsan hal-abuurka werf:
- «";
- «";
- «".
- «";
- «";
- «".
Source: www.habr.com
