Thachair na tha sinn (agus chan e sinne a-mhĂ in) air a bhith aâ feitheamh airson Ăšine mhòr: , an goireas stòr fosgailte againn airson aplacaidean a thogail agus an lĂŹbhrigeadh gu Kubernetes, a-nis aâ toirt taic do bhith aâ cur atharrachaidhean an sĂ s le bhith aâ cleachdadh badan co-aonaidh 3-shligheach! A bharrachd air an sin, tha e comasach a-nis goireasan K8s a tha ann mar-thĂ a ghabhail a-steach do fhoillseachaidhean Helm gun an ath-chruthachadh.

Ann an Ăšine ghoirid, chuir sinn WERF_THREE_WAY_MERGE=enabled â gheibh sinn cleachdadh âmar a tha ann an kubectl apply", co-chòrdail ri stĂ laidhean Helm 2 a tha ann mar-thĂ agus beagan a bharrachd.
Ach tòisichidh sinn leis an teòiridh: dè a thâ ann am badan co-aonaidh 3-shligheach, ciamar a smaoinich daoine air an dòigh-obrach airson an gineadh, agus carson a tha iad cudromach ann am pròiseasan CI/CD le bun-structar stèidhichte air Kubernetes? Ăs deidh sin, coimheadaidh sinn air dè a thâ ann an co-aonadh 3-shligheach ann an werf, dè na modhan a thathas aâ cleachdadh gu bunaiteach, agus mar a stiĂšireas sinn e.
Dè a thâ ann am pasgan co-aonaidh 3-shligheach?
Mar sin, tòisichidh sinn leis an obair a bhith aâ cur ghoireasan a-mach a tha air am mĂŹneachadh ann am manifestean YAML gu Kubernetes.
Tha na h-obrachaidhean bunaiteach a leanas aig API Kubernetes airson obrachadh le goireasan: cruthachadh, pasgadh, ath-chur, agus sguab Ă s. Tha iad sin an dĂšil an cleachdadh gus sgaoileadh ghoireasan goireasach, leantainneach a thogail don chruinneachadh. Ciamar?
Ărdughan kubectl riatanach
Is e aâ chiad dhòigh air nithean a riaghladh ann an Kubernetes òrdughan kubectl èiginneach a chleachdadh gus na nithean sin a chruthachadh, atharrachadh agus a dhubhadh Ă s. Gu sĂŹmplidh:
- sgioba
kubectl runFaodaidh tu Deployment no Job a ruith:kubectl run --generator=deployment/apps.v1 DEPLOYMENT_NAME --image=IMAGE - sgioba
kubectl scaleâ atharraich an Ă ireamh de leth-bhreacan:kubectl scale --replicas=3 deployment/mysql - agus mar sin air adhart.
Dhâfhaodadh an dòigh-obrach seo a bhith coltach ri rud goireasach an toiseach. Ach, tha duilgheadasan ann:
- Tha e duilich dha fèin-ghluasad.
- Ciamar meòrachadh rèiteachadh ann an Git? Ciamar a nĂŹ mi ath-sgrĂšdadh air atharrachaidhean a chaidh a dhèanamh air aâ chnuasach?
- Mar a nÏ thu cinnteach ath-ghin rèiteachaidhean aig ath-thòiseachadh?
- ...
Tha e soilleir nach eil an dòigh-obrach seo aâ freagairt gu math ri bhith aâ stòradh còd is bun-structar an tagraidh mar chòd (IaC; no eadhon (mar roghainn nas Ăšire a tha aâ sĂŹor fhĂ s mòr-chòrdte ann an eag-shiostam Kubernetes). Mar sin, cha deach na h-òrdughan seo ann an kubectl a leasachadh tuilleadh.
GnĂŹomhan a chruthachadh, fhaighinn, a chur nan Ă ite, agus a sguabadh Ă s
Le bun-sgoil cruthachadh Tha e sÏmplidh: cuiridh sinn am manifesto chun na h-obrachaidh create Tha an kube API agus an goireas air an cruthachadh. Faodar riochdachadh YAML den manifesto a stòradh ann an Git, agus gus a chruthachadh, cleachd an à ithne kubectl create -f manifest.yaml.
ĐĄ toirt air falbh tha e sĂŹmplidh cuideachd: bidh sinn aâ cur an aon rud na Ă ite manifest.yaml bho Git gu sgioba kubectl delete -f manifest.yaml.
Obrachadh replace Leigidh seo leat rèiteachadh goireas a chur an Ă ite rèiteachadh Ăšr gu tur, gun an goireas ath-chruthachadh. Tha seo aâ ciallachadh, mus dèanar atharrachadh air goireas, gu bheil e reusanta an dreach lĂ ithreach iarraidh leis an obrachadh. get, atharraich e agus Ăšraich e leis an obrachadh replaceTha apiserver togte a-steach aig Kube. agus ma tha Ă s dèidh lannsaireachd get tha an nĂŹ air atharrachadh, an uairsin an obrachadh replace cha obraich e.
Gus an rèiteachadh a stòradh ann an Git agus Ăšrachadh a dhèanamh air le bhith aâ cleachdadh replace, feumaidh tu an gnĂŹomh a dhèanamh get, cuir an rèiteachadh bho Git còmhla ris na fhuair sinn, agus ruith e replaceGu gnĂ thach, chan eil kubectl aâ leigeil leat ach an Ă ithne a chleachdadh kubectl replace -f manifest.yamlcĂ ite manifest.yaml â manifesto lĂ n-ullaichte (nar cĂšis-ne, co-aonaichte) a dhâ fheumar a stĂ ladh. Tha seo aâ ciallachadh gum feum an neach-cleachdaidh na manifestos a chur còmhla, rud nach eil na chĂšis bheagâŚ
Is fhiach a thoirt fa-near cuideachd, ged a tha manifest.yaml agus air a stòradh ann an Git, chan urrainn dhuinn fios a bhith againn ro-lĂ imh am feum nĂŹ a chruthachadh no Ăšrachadhâfeumaidh bathar-bog an neach-cleachdaidh seo a dhèanamh.
Iomlan: An urrainn dhuinn sgaoileadh leantainneach a thogail? aâ cleachdadh dĂŹreach cruthachadh, ath-chur, agus cuir Ă s, aâ dèanamh cinnteach gu bheil rèiteachadh aâ bhun-structair air a stòradh ann an Git còmhla ris aâ chòd agus CI/CD goireasach?
Ann am prionnsabal, is urrainn dhuinn... Airson seo bidh e riatanach an obair aonaidh a chur an gnÏomh manifestos agus seòrsa de cheangal, a tha:
- aâ sgrĂšdadh lĂ thaireachd nĂŹ anns aâ chruinneachadh,
- aâ dèanamh cruthachadh tĂšsail goireas,
- ga Ăšrachadh no ga sguabadh Ă s.
Nuair a bhios tu ag Ăšrachadh, cumaibh cuimhne air sin dhâ fhaodadh an goireas a bhith air atharrachadh bhon uair mu dheireadh get agus aâ lĂ imhseachadh cĂšis glasaidh dòchasach gu fèin-ghluasadach - dèan oidhirpean a-rithist is a-rithist airson Ăšrachadh.
Ach, carson a dhâath-chruthaicheas tu an roth nuair a tha kube-apiserver aâ tabhann dòigh eile air goireasan Ăšrachadh: an obrachadh patch, a bheir faochadh don neach-cleachdaidh bho chuid de na duilgheadasan a chaidh a mhĂŹneachadh?
Patch
Mar sin, tha sinn air ruighinn air na badan mu dheireadh.
âS e badan aâ phrĂŹomh dhòigh air atharrachaidhean a chur an sĂ s ann an nithean a tha ann mar-thĂ ann an Kubernetes. patch ag obair ann an dòigh mar sin:
- Feumaidh an neach-cleachdaidh kube-apiserver pasgan a chuir ann an cruth JSON agus an nÏ a shònrachadh,
- agus dèiligeadhidh an apiserver fhèin ri staid là ithreach an nÏ agus bheir e chun chruth a tha a dhÏth e.
Chan eil feum air glasadh dòchasach sa chĂšis seo. Tha an gnĂŹomh seo nas dearbhaiche na ath-chur, ged a dhâ fhaodadh e a bhith coltach ris an toiseach.
San dòigh seo:
- tro obair-lannsa
createbidh sinn aâ cruthachadh nĂŹ stèidhichte air an manifesto bho Git, - le cuideachadh
delete- cuir Ă s mura h-eil feum air an nĂŹ tuilleadh, - le cuideachadh
patchâ bidh sinn ag atharrachadh an nĂŹ, ga thoirt chun chruth a tha air a mhĂŹneachadh ann an Git.
Ach, gus seo a dhèanamh, feumaidh tu a chruthachadh paiste ceart!
Mar a bhios Pasganan ag Obrachadh ann an Helm 2: Co-aonaidhean 2-Shligheach
Nuair a stĂ laicheas tu brath-naidheachd an toiseach, bidh Helm aâ dèanamh an obrachaidh create airson goireasan chairtean.
Nuair a bhios tu ag Ăšrachadh brath Helm airson gach goireas:
- aâ tomhas aâ phaiste eadar an dreach ghoireasan bhon chairt roimhe agus an dreach lĂ ithreach den chairt,
- aâ cur aâ phasgan seo an sĂ s.
Canaidh sinn paiste mar sin Paiste co-aonaidh dĂ -shligheach, leis gu bheil dĂ mhanifesto an sĂ s ann a chruthachadh:
- manifest ghoireasan bhon fhoillseachadh roimhe,
- manifest ghoireasan bhon ghoireas lĂ ithreach.
Nuair a sguabas tu às an obrachadh delete Ann an kube, thèid apiserver a ghairm airson goireasan a chaidh ainmeachadh san fhoillseachadh roimhe ach nach deach ainmeachadh san fhear là ithreach.
Tha duilgheadas aig an dòigh-obrach paiste aonaidh dĂ -shligheach: bidh e aâ leantainn gu dĂŹ-shioncronachadh staid fhĂŹor an ghoireis anns aâ chruinneachadh agus am manifest ann an Git.
Aâ mĂŹneachadh na trioblaid le eisimpleir
- Ann an Git, bidh an graf aâ stòradh manifest anns a bheil an raon
imageTha luach aig an sgaoileadhubuntu:18.04. - Cleachdaiche tro
kubectl editdhâatharraich luach an raoin seo guubuntu:19.04. - Nuair a bhios cairt Helm ga ath-chleachdadh chan eil e aâ cruthachadh pasgan, oir an raon
imageanns an dreach roimhe den fhoillseachadh agus anns aâ chairt lĂ ithreach tha iad mar an ceudna. - Ăs dèidh ath-shuidheachadh
imagefhĂ gailubuntu:19.04, ged a tha an clĂ r ag rĂ dhubuntu:18.04.
Chaill sinn ar comas dearbhaidh agus chaidh sinn air chall ann an sioncronachadh.
Dè a thâ ann an goireas sioncronaichte?
San fharsaingeachd crĂŹochnaich Tha e do-dhèanta maidseadh fhaighinn eadar manifesto goireas ann an cruinneachadh a tha aâ ruith agus manifesto bho Git. Tha seo air sgĂ th gum faodadh manifesto fĂŹor a bhith aâ toirt a-steach notaichean/leubail seirbheis, soithichean a bharrachd, agus dĂ ta eile a chaidh a chur ris agus a thoirt air falbh bhon ghoireas gu dinamach le cuid de luchd-riaghlaidh. Chan urrainn dhuinn agus chan eil sinn airson an dĂ ta seo a stòradh ann an Git. Ach, tha sinn ag iarraidh gum bi na luachan iomchaidh aig na raointean a shònraich sinn gu soilleir ann an Git rè an cleachdaidh.
Tha e aâ tionndadh a-mach gu bheil e cho coitcheann riaghailt ghoireasan sioncronaichteNuair a bhios tu aâ cur goireas air bhog, chan urrainn dhut ach na raointean sin atharrachadh no a dhubhadh Ă s a tha air an sònrachadh gu soilleir ann am manifesto Git (no a chaidh a shònrachadh san dreach roimhe agus a chaidh a thoirt air falbh a-nis).
Paiste co-aonaidh dĂ -shligheach
PrĂŹomh bheachd Cruthaich pasgan eadar an dreach mu dheireadh a chaidh a chur an sĂ s den manifesto Git agus an dreach targaid den manifesto Git, aâ toirt aire don dreach lĂ ithreach den manifesto bhon chruinneachadh a tha aâ ruith. Feumaidh am pasgan a thig Ă s a sin gèilleadh ris an riaghailt ghoireasan sioncronaichte:
- thèid raointean Úra a chur ris an dreach targaid a chur ris tro phaiste;
- thèid raointean a bha ann roimhe san dreach mu dheireadh a chaidh a chur an sĂ s agus an fheadhainn nach eil ann san dreach targaid ath-shuidheachadh le bhith aâ cleachdadh pasgan;
- Thèid raointean san dreach lĂ ithreach den nĂŹ a tha eadar-dhealaichte bhon dreach targaid den manifesto Ăšrachadh le bhith aâ cleachdadh pasgan.
Is e seo am prionnsabal leis a bheilear aâ cruthachadh phĂŹosan. kubectl apply:
- tha an dreach mu dheireadh den manifesto a chaidh a chur an sàs air a stòradh ann an anotachadh an nÏ fhèin,
- targaid - air a thoirt bhon fhaidhle YAML ainmichte,
- gnĂ thach - bho chruinneachadh ruith.
A-nis gu bheil sinn air an teòiridh a chòmhdach, tha an t-à m ann innse dhut dè a rinn sinn ann an werf.
Aâ cur atharrachaidhean an sĂ s ann an werf
Roimhe seo, chleachd werf, mar Helm 2, badan co-aonaidh 2-shligheach.
PĂŹos cĂ raidh
Gus gluasad gu seòrsa Ăšr de phĂŹosan - co-aonadh 3-shligheach - bâ e aâ chiad cheum a ghabh sinn a bhith aâ toirt a-steach an rud ris an canar badan cĂ raidh.
Nuair a thathar ga chur an gnĂŹomh, thathar aâ cleachdadh pasgan Ă bhaisteach dĂ -shligheach-aonaidh, ach bidh werf cuideachd aâ gineadh pasgan a bhiodh aâ sioncronachadh fĂŹor staid aâ ghoireis leis na tha sgrĂŹobhte ann an Git (chithear am pasgan seo aâ cleachdadh an aon riaghailt ghoireasan sioncronaichte a chaidh a mhĂŹneachadh gu h-Ă rd).
Ma thachras dĂŹ-shioncronachadh, aig deireadh an cleachdaidh, gheibh an neach-cleachdaidh teachdaireachd RABHADH le teachdaireachd co-fhreagarrach agus pasgan a dhâ fheumar a chur an sĂ s gus an goireas a thoirt air ais gu sioncronachadh. Tha am pasgan seo cuideachd sgrĂŹobhte gu nota sònraichte. werf.io/repair-patchThathar aâ gabhail ris gu bheil an neach-cleachdaidh aâ cleachdadh a lĂ mhan ŃаП cuiridh e am pasgan seo an sĂ s: cha chuir werf an sĂ s e air prionnsabal.
âS e ceum sealach a thâ ann a bhith aâ gineadh badan cĂ raidh a leigeas leat deuchainn a dhèanamh air aâ phròiseas gineadh badan co-aonaidh 3-shligheach, ach chan eil e aâ cur nam badan sin an sĂ s gu fèin-ghluasadach. Tha am modh seo air a chomasachadh gu bunaiteach an-drĂ sta.
Pasgan co-aonaidh 3-shligheach airson fiosan Ăšra a-mhĂ in
Bho 1 DĂšbhlachd 2019, tòisichidh dreachan beta is alpha de werf gu gnĂ thach Cleachd badan lĂ n-aonaidh 3-shligheach gus atharrachaidhean a chur an sĂ s a-mhĂ in ann am brathan Helm Ăšra a thèid a chleachdadh tro werf. Cumaidh brathan a thâ ann mar-thĂ orra aâ cleachdadh an dòigh-obrach 2-shligheach-aonaidh + badan cĂ raidh.
Faodar am modh obrachaidh seo a chomasachadh gu soilleir le bhith aâ suidheachadh WERF_THREE_WAY_MERGE_MODE=onlyNewReleases nis.
thuirtnochd am feart ann an werf thar grunn fhoillseachaidhean: anns an t-sianal alpha thĂ inig e gu bhith deiseil le dreach , agus anns an t-sianal beta - le .
Pasgan co-aonaidh 3-shligheach airson a h-uile foillseachadh
Aâ tòiseachadh air 15 DĂšbhlachd 2019, cleachdaidh dreachan beta is alpha de werf badan co-aonaidh 3-shligheach gu bunaiteach gus atharrachaidhean a chur an sĂ s airson a h-uile brath.
Faodar am modh obrachaidh seo a chomasachadh gu soilleir le bhith aâ suidheachadh WERF_THREE_WAY_MERGE_MODE=enabled nis.
Ciamar a dhèiligeas tu ri fèin-sgèileadh ghoireasan?
Tha dà sheòrsa fèin-sgèileadh ann an Kubernetes: HPA (còmhnard) agus VPA (inghearach).
Bidh an tè chòmhnard aâ taghadh an Ă ireamh de leth-bhreacan gu fèin-ghluasadach, agus bidh an tè dhĂŹreach aâ taghadh an Ă ireamh de ghoireasan. Tha an dĂ chuid an Ă ireamh de leth-bhreacan agus riatanasan ghoireasan air an sònrachadh ann am manifesto nan goireasan (faic spec.replicas no spec.containers[].resources.limits.cpu, spec.containers[].resources.limits.memory и ).
Duilgheadas: Ma rèiticheas neach-cleachdaidh goireas ann an cairt gus am bi e aâ sònrachadh luachan sònraichte airson goireasan no leth-bhreacan, agus ma tha autoscalers air an comasachadh airson aâ ghoireis seo, an uairsin le gach cleachdadh, ath-shuidhichidh werf na luachan sin chun na tha sgrĂŹobhte ann am manifesto aâ chairt.
Tha dĂ fhuasgladh ann airson na trioblaid seo. Is e an dòigh as fheĂ rr air tòiseachadh a bhith aâ seachnadh luachan fèin-sgèileachaidh a shònrachadh gu soilleir ann am manifest aâ chairt. Mura h-eil an roghainn seo freagarrach airson adhbhar air choireigin (mar eisimpleir, leis gu bheil e goireasach crĂŹochan ghoireasan tĂšsail agus an Ă ireamh de leth-bhreacan sa chairt a shònrachadh), tha werf aâ tabhann nan notaichean a leanas:
-
werf.io/set-replicas-only-on-creation=true -
werf.io/set-resources-only-on-creation=true
Leis aâ chomharradh seo, cha dèan werf ath-shuidheachadh air na luachan co-fhreagarrach air gach cleachdadh, ach cha suidhich e iad ach nuair a thèid an goireas a chruthachadh an toiseach.
Airson tuilleadh fiosrachaidh, faic sgrĂŹobhainnean aâ phròiseict. и .
Cuir dheth cleachdadh aâ phaiste co-aonaidh 3-shligheach
Faodaidh an neach-cleachdaidh cleachdadh phĂŹosan Ăšra ann an werf a dhĂŹ-cheadachadh an-drĂ sta le bhith aâ cleachdadh caochladair Ă rainneachd. WERF_THREE_WAY_MERGE_MODE=disabledAch, aâ tòiseachadh Cha bhi an casg seo an sĂ s tuilleadh bho 1 MĂ rt 2020. agus cha bhith e comasach ach badan co-aonaidh 3-shligheach a chleachdadh.
Gabhail ri goireasan ann an werf
Le bhith aâ maighstireachd an dòigh paiste 3-shligheach airson atharrachaidhean a chur an sĂ s, bâ urrainn dhuinn feart a chuir an gnĂŹomh sa bhad leithid gabhail ri goireasan cruinneachaidh a thâ ann mar-thĂ ann am brath Helm.
Tha duilgheadas aig Helm 2: chan urrainn dhut goireas a chur ri taisbeanaidhean cairt a tha ann mu thrĂ th sa chruinneachadh gun an goireas sin ath-chruthachadh bhon fhĂŹor thoiseach (faic gu h-ĂŹosal). , ). Tha sinn air werf a theagasg gus goireasan a tha ann mar-thĂ a ghabhail a-steach do fhoillseachadh. Gus seo a dhèanamh, feumaidh tu anotachadh a stĂ ladh air an dreach lĂ ithreach de ghoireas bho chruinneachadh a tha aâ ruith (mar eisimpleir, aâ cleachdadh kubectl edit):
"werf.io/allow-adoption-by-release": RELEASE_NAMEA-nis feumar an goireas a mhĂŹneachadh sa chairt, agus an ath thuras a chuireas werf brath-naidheachd leis an ainm co-fhreagarrach an gnĂŹomh, thèid an goireas a thâ ann a ghabhail a-steach don bhrath-naidheachd sin agus fuirichidh e fo a riaghladh. A bharrachd air sin, rè aâ phròiseas gabhail ris aâ ghoireas a-steach don bhrath-naidheachd, atharraichidh werf staid lĂ ithreach aâ ghoireis bhon chruinneachadh a tha aâ ruith chun na staid a tha air a mhĂŹneachadh sa chairt, aâ cleachdadh nan aon phĂŹosan 3-shligheach-aonaidh agus riaghailt nan goireasan sioncronaichte.
thuirt: suidheachadh WERF_THREE_WAY_MERGE_MODE chan eil buaidh aige air gabhail ri goireasan - ma thèid gabhail riutha, thathar an-còmhnaidh aâ cleachdadh am pasgan aonaidh 3-shligheach.
Tha mion-fhiosrachadh ann .
Co-dhĂšnaidhean agus planaichean san Ă m ri teachd
Tha mi an dòchas gun do rinn an t-artaigil seo nas soilleire dè a thâ ann am badan co-aonaidh 3-shligheach agus carson a chaidh an taghadh. Bho shealladh practaigeach airson pròiseact werf, tha an cur an gnĂŹomh aâ comharrachadh ceum eile a dhâionnsaigh leasachadh cleachdadh coltach ri Helm. Faodar cĂšisean sioncronaidh rèiteachaidh a dhâèirich gu tric le Helm 2 a dhĂŹochuimhneachadh a-nis. Aig an aon Ă m, chaidh feart Ăšr, feumail a chur ris: aâ gabhail ri goireasan Kubernetes a chaidh a chleachdadh mu thrĂ th ann an sgaoileadh Helm.
Tha cuid de chÚisean agus dhÚbhlain ann fhathast le cleachdadh coltach ri Helm, leithid cleachdadh theamplaidean Go, agus cumaidh sinn oirnn gan dèiligeadh.
Gheibhear fiosrachadh mu dhòighean Úrachadh ghoireasan agus gabhail riutha aig cuideachd .
StiĂšir 3
Airidh air iomradh sònraichte DĂŹreach an latha eile, chaidh prĂŹomh dhreach Ăšr de Helmâv3âa leigeil ma sgaoil, a bhios cuideachd aâ cleachdadh badan co-aonaidh 3-shligheach agus aâ toirt air falbh Tiller. Tha an dreach Ăšr de Helm ag iarraidh⌠stĂ laidhean a thâ ann mar-thĂ gus an tionndadh chun chruth stòraidh sgaoilidh Ăšr.
Tha Werf, air a thaobh fhèin, a-nis air faighinn cuidhteas cleachdadh Tiller, air gluasad gu co-aonadh 3-shligheach agus air a chur ris , fhad âs a tha e fhathast co-chòrdail ri stĂ laidhean Helm 2 a tha ann mar-thĂ (chan eil feum air sgriobtaichean imrich). Mar sin, gus an gluais werf gu Helm 3, cha chaill luchd-cleachdaidh werf na prĂŹomh bhuannachdan a tha aig Helm 3 thairis air Helm 2 (tha na buannachdan sin aig werf cuideachd).
Ach, tha e do-sheachanta gun tèid werf a ghluasad chun stòr-còd Helm 3 agus tachair e a dhâ aithghearr. Is coltach gur e werf 1.1 no werf 1.2 a bhios ann (an-drĂ sta, is e 1.0 am prĂŹomh dhreach de werf; airson tuilleadh fiosrachaidh mu bhith aâ cleachdadh dreachan werf, faic Rè na h-Ăšine seo, bidh Ăšine aig Helm 3 gus seasmhachd a ruighinn.
PS
Leugh cuideachd air ar blog:
- Sreath de notaichean mu innleachdan Ăšra ann an werf:
- ÂŤ";
- ÂŤ";
- ÂŤ".
- ÂŤ";
- ÂŤ";
- ÂŤ".
Source: www.habr.com
