Clibeáil ábhar-bhunaithe sa tógálaí weirf: cén fáth agus conas a oibríonn sé?

Clibeáil ábhar-bhunaithe sa tógálaí weirf: cén fáth agus conas a oibríonn sé?

caoirigh Is é ár bhfóntas foinse oscailte GitOps CLI chun feidhmchláir a thógáil agus a sheachadadh chuig Kubernetes. IN scaoileadh v1.1 tugadh isteach gné nua sa bhailitheoir íomhánna: íomhánna a chlibeáil de réir ábhair nó clibeáil ábhar-bhunaithe. Go dtí seo, bhain an scéim chlibeála tipiciúil i werf le clibeáil íomhánna Docker le clib Git, brainse Git nó gealltanas Git. Ach tá míbhuntáistí ag baint leis na scéimeanna seo go léir a réitítear go hiomlán leis an straitéis nua clibeála. Tá sonraí faoi agus cén fáth go bhfuil sé chomh maith sin faoi na gearrtha.

Sraith de mhicrisheirbhísí a rolladh amach ó stór amháin Git

Tarlaíonn cás go minic nuair a roinntear iarratas i go leor seirbhísí neamhspleácha níos mó nó níos lú. Is féidir le scaoileadh na seirbhísí seo tarlú go neamhspleách: is féidir seirbhís amháin nó níos mó a scaoileadh ag an am, agus caithfidh an chuid eile leanúint ar aghaidh ag obair gan aon athruithe. Ach ó thaobh stórála cód agus bainistíocht tionscadail, tá sé níos áisiúla seirbhísí iarratais den sórt sin a choinneáil i stór amháin.

Bíonn cásanna ann nuair a bhíonn seirbhísí fíor neamhspleách agus nach bhfuil baint acu le feidhmchlár amháin. Sa chás seo, beidh siad lonnaithe i dtionscadail ar leith agus déanfar iad a scaoileadh trí phróisis CI/CD ar leith i ngach ceann de na tionscadail.

Mar sin féin, i ndáiríre, is minic a scoilteann forbróirí feidhmchlár amháin ina roinnt micriseirbhísí, ach is léir go gcruthaítear stór agus tionscadal ar leith do gach ceann acu. Is é an cás seo a dhéanfar a phlé tuilleadh: tá roinnt micriseirbhísí den sórt sin suite in aon stór tionscadail amháin agus tarlaíonn eisiúintí trí phróiseas amháin in CI/CD.

Clibeáil de réir brainse Git agus clib Git

Ligean le rá go n-úsáidtear an straitéis chlibeála is coitianta - tag-nó-brainse. Maidir le brainsí Git, déantar íomhánna a chlibeáil le hainm an bhrainse, do bhrainse amháin ag an am níl ach íomhá foilsithe amháin faoi ainm an bhrainse sin. I gcás clibeanna Git, déantar íomhánna a chlibeáil de réir ainm na clibe.

Nuair a chruthaítear clib Git nua - mar shampla, nuair a scaoiltear leagan nua - cruthófar clib Docker nua do gach íomhá tionscadail i gClárlann an Docker:

  • myregistry.org/myproject/frontend:v1.1.10
  • myregistry.org/myproject/myservice1:v1.1.10
  • myregistry.org/myproject/myservice2:v1.1.10
  • myregistry.org/myproject/myservice3:v1.1.10
  • myregistry.org/myproject/myservice4:v1.1.10
  • myregistry.org/myproject/myservice5:v1.1.10
  • myregistry.org/myproject/database:v1.1.10

Cuirtear na hainmneacha íomhá nua seo ar aghaidh trí theimpléid Helm chuig cumraíocht Kubernetes. Nuair a bheidh an t-imscaradh á thosú leis an ordú werf deploy réimse á nuashonrú image i Kubernetes acmhainn manifests agus restarting na hacmhainní comhfhreagracha mar gheall ar an ainm íomhá athraithe.

fadhb: i gcás, i ndáiríre, nach bhfuil an t-ábhar ar an íomhá athrú ó rolladh amach roimhe seo (Git tag), ach amháin a chlib Docker, tharlaíonn sé seo breise an feidhmchlár seo a atosú agus, dá réir sin, is féidir roinnt aga neamhfhónaimh a dhéanamh. Cé nach raibh aon chúis dáiríre leis an atosú seo a dhéanamh.

Mar thoradh air sin, leis an scéim chlibeála atá ann faoi láthair is gá fálú a dhéanamh ar roinnt stórtha Git ar leith agus tá fadhb ann maidir le feidhmiú céimneach na stórtha éagsúla seo a eagrú. Go ginearálta, bíonn a leithéid de scéim ró-ualaithe agus casta. Is fearr go leor seirbhísí a chomhcheangal i stór amháin agus clibeanna Docker a chruthú ionas nach mbeidh aon atosú gan ghá.

Clibeáil ag gealltanas Git

Tá straitéis chlibeála ag werf freisin a bhaineann le gealltanais Git.

Is aitheantóir é Git-commit le haghaidh ábhar stór Git agus braitheann sé ar stair eagarthóireachta na gcomhad i stór Git, mar sin dealraíonn sé go bhfuil sé loighciúil é a úsáid chun íomhánna a chlibeáil i gClárlann an Docker.

Mar sin féin, tá na míbhuntáistí céanna ag clibeáil de réir Git tiomanta le clibeáil de réir brainsí Git nó clibeanna Git:

  • D’fhéadfaí gealltanas folamh a chruthú nach n-athraíonn aon chomhaid, ach athrófar clib Docker na híomhá.
  • D’fhéadfaí gealltanas cumaisc a chruthú nach n-athraíonn na comhaid, ach athrófar clib Docker na híomhá.
  • D’fhéadfaí gealltanas a dhéanamh a athraíonn na comhaid sin i Git nach n-allmhairítear isteach san íomhá, agus athrófar clib Docker na híomhá arís.

Ní léiríonn clibeáil ainm brainse Git leagan na híomhá

Tá fadhb eile ag baint leis an straitéis chlibeála do chraobhacha Git.

Oibríonn clibeáil de réir ainm brainse chomh fada agus a bhailítear na gealltanais ar an mbrainse sin go seicheamhach in ord croineolaíoch.

Más rud é sa scéim reatha go dtosaíonn an t-úsáideoir ag atógáil sean-tiomantas a bhaineann le brainse áirithe, ansin déanfaidh werf an íomhá a athscríobh ag baint úsáide as an gclib Docker comhfhreagrach le leagan nuathógtha den íomhá don seanchiomantas. Tá an baol ann go mbainfidh imscaradh a úsáideann an chlib seo as seo amach leagan difriúil den íomhá a tharraingt agus na pods á atosú, agus mar thoradh air sin caillfidh ár bhfeidhmchlár nasc leis an gcóras CI agus déanfar é a dhíshioncrónú.

Ina theannta sin, le brú leanúnach isteach i mbrainse amháin le tréimhse ghearr ama eatarthu, féadfar an sean-tiomantas a thiomsú níos déanaí ná an ceann is nuaí: déanfaidh an seanleagan den íomhá an ceann nua a fhorscríobh ag baint úsáide as an gclib brainse Git. Is féidir fadhbanna den sórt sin a réiteach trí chóras CI/CD (mar shampla, i GitLab CI seoltar píblíne an dara ceann le haghaidh sraith gealltanas). Mar sin féin, ní thacaíonn gach córas leis seo agus ní mór bealach níos iontaofa a bheith ann chun fadhb bhunúsach den sórt sin a chosc.

Cad is clibeáil ábharbhunaithe ann?

Mar sin, cad atá i gceist le clibeáil ábhar-bhunaithe - íomhánna a chlibeáil de réir ábhair.

Chun clibeanna Docker a chruthú, ní primitives Git (brainse Git, clib Git ...) a úsáidtear, ach seiceálacha a bhaineann le:

  • ábhar na híomhá. Léiríonn an chlib aitheantais íomhá a ábhar. Agus leagan nua á thógáil, ní athrófar an t-aitheantóir seo mura bhfuil na comhaid san íomhá athraithe;
  • stair chruthú na híomhá seo i Git. Beidh clibeanna aitheantais difriúla ag íomhánna a bhaineann le brainsí Git éagsúla agus stair tógála éagsúla trí werf.

Tá a leithéid de chlib aitheantóra mar a thugtar air síniú stáitse íomhá.

Tá sraith céimeanna i ngach íomhá: from, before-install, git-archive, install, imports-after-install, before-setup, ... git-latest-patch srl. Tá aitheantóir ag gach céim a léiríonn a bhfuil ann − síniú stáitse (síniú stáitse).

Tá an íomhá deiridh, comhdhéanta de na céimeanna seo, clibáilte le síniú sraith na gcéimeanna seo mar a thugtar air - síniú céimeanna, - atá ginearálaithe do gach céim den íomhá.

I gcás gach íomhá as an chumraíocht werf.yaml sa chás ginearálta, beidh a shíniú féin agus, dá réir sin, clib Docker.

Réitíonn an síniú stáitse na fadhbanna seo go léir:

  • Frithsheasmhach in aghaidh Git a fholmhú.
  • Geallann Resistant to Git go n-athróidh sé comhaid nach mbaineann leis an íomhá.
  • Ní bhíonn an fhadhb le hathchóiriú a dhéanamh ar an leagan reatha den íomhá mar thoradh air nuair a athchóirítear tógáil le haghaidh sean-git geallta de bhrainse.

Is í seo an straitéis chlibeála atá molta anois agus is é an réamhshocrú maidir le werf do gach córas CI.

Conas a chumasú agus a úsáid i werf

Tá rogha comhfhreagrach ag an ordú anois werf publish: --tag-by-stages-signature=true|false

I gcóras CI, tá an straitéis clibeála sonraithe ag an ordú werf ci-env. Roimhe seo, sainíodh an paraiméadar dó werf ci-env --tagging-strategy=tag-or-branch. Anois, má shonraíonn tú werf ci-env --tagging-strategy=stages-signature nó ná sonraigh an rogha seo, úsáidfidh werf an straitéis chlibeála de réir réamhshocraithe stages-signature. Foireann werf ci-env socróidh sé go huathoibríoch na bratacha is gá don ordú werf build-and-publish (Nó werf publish), mar sin ní gá aon roghanna breise a shonrú do na horduithe seo.

Mar shampla, an t-ordú:

werf publish --stages-storage :local --images-repo registry.hello.com/web/core/system --tag-by-stages-signature

...na híomhánna seo a leanas a chruthú:

  • registry.hello.com/web/core/system/backend:4ef339f84ca22247f01fb335bb19f46c4434014d8daa3d5d6f0e386d
  • registry.hello.com/web/core/system/frontend:f44206457e0a4c8a54655543f749799d10a9fe945896dab1c16996c6

Anseo 4ef339f84ca22247f01fb335bb19f46c4434014d8daa3d5d6f0e386d is síniú de chéimeanna na híomhá backendAgus f44206457e0a4c8a54655543f749799d10a9fe945896dab1c16996c6 - síniú céimeanna íomhá frontend.

Nuair a bhíonn feidhmeanna speisialta á n-úsáid agat werf_container_image и werf_container_env Ní gá aon rud a athrú sna teimpléid Helm: ginfidh na feidhmeanna seo na hainmneacha cearta íomhá go huathoibríoch.

Cumraíocht shamplach i gcóras CI:

type multiwerf && source <(multiwerf use 1.1 beta)
type werf && source <(werf ci-env gitlab)
werf build-and-publish|deploy

Tá tuilleadh eolais ar chumraíocht ar fáil sna doiciméid:

Ar an iomlán

  • Rogha nua werf publish --tag-by-stages-signature=true|false.
  • Luach rogha nua werf ci-env --tagging-strategy=stages-signature|tag-or-branch (mura bhfuil sé sonraithe, beidh an réamhshocraithe stages-signature).
  • Má d'úsáid tú na roghanna clibeála le haghaidh gealltanas Git roimhe seo (WERF_TAG_GIT_COMMIT nó rogha werf publish --tag-git-commit COMMIT), ansin bí cinnte aistriú chuig an straitéis chlibeála céimeanna-síniú.
  • Is fearr tionscadail nua a aistriú láithreach chuig an scéim chlibeála nua.
  • Nuair a aistrítear go werf 1.1, tá sé inmholta sean-thionscadail a aistriú go dtí an scéim clibeála nua, ach an sean tag-nó-brainse tá tacaíocht fós.

Réitíonn clibeáil ábharbhunaithe na fadhbanna go léir a chlúdaítear san alt:

  • Tiomnaíonn ainm chlib an docker in aghaidh Git folamh.
  • Geallann athléimneacht an ainm chlib Docker go Git go n-athraíonn comhaid nach mbaineann leis an íomhá.
  • Ní bhíonn sé mar thoradh ar an bhfadhb a bhaineann le hathchóiriú a dhéanamh ar an leagan reatha den íomhá nuair a athchóirítear foirgnimh le haghaidh sean-geallta Git do bhrainsí Git.

Úsáid é! Agus ná déan dearmad cuairt a thabhairt orainn ag GitHubchun saincheist a chruthú nó chun ceann atá ann cheana a aimsiú, cuir móide leis, cruthaigh caidreamh poiblí nó go simplí féachaint ar fhorbairt an tionscadail.

PS

Léigh freisin ar ár mblag:

Foinse: will.com

Add a comment