An fhadhb a bhaineann le glanadh “cliste” na n-íomhánna coimeádán agus a réiteach i bhfoirgnimh

An fhadhb a bhaineann le glanadh “cliste” na n-íomhánna coimeádán agus a réiteach i bhfoirgnimh

Pléann an t-alt na fadhbanna a bhaineann le glanadh na n-íomhánna a charnann i gclárlanna coimeádán (Clárlann Docker agus a analógacha) i bhfírinní na bpíblínte CI/CD nua-aimseartha le haghaidh feidhmchláir dhúchasacha scamall a sheachadtar chuig Kubernetes. Tugtar na príomhchritéir maidir le hábharthacht na n-íomhánna agus na deacrachtaí a eascraíonn as glanadh uathoibrithe, spás a shábháil agus freastal ar riachtanais na bhfoirne. Ar deireadh, ag baint úsáide as an sampla de thionscadal Foinse Oscailte ar leith, inseoimid duit conas is féidir na deacrachtaí seo a shárú.

Réamhrá

Is féidir le líon na n-íomhánna i gclárlann coimeádán fás go tapa, ag glacadh le níos mó spáis stórála agus mar sin ag méadú a chostas go suntasach. Chun fás inghlactha an spáis a áitítear sa chlár a rialú, a theorannú nó a chothabháil, glactar leis:

  1. úsáid a bhaint as líon seasta clibeanna le haghaidh íomhánna;
  2. glan na híomhánna ar bhealach éigin.


Uaireanta tá an chéad teorannú inghlactha d'fhoirne beaga. Má tá dóthain clibeanna buana ag forbróirí (latest, main, test, boris srl.), Ní bheidh an clárlann ag dul i méid agus ar feadh i bhfad ní bheidh ort smaoineamh ar é a ghlanadh ar chor ar bith. Tar éis an tsaoil, scriostar gach íomhá nach mbaineann le hábhar, agus níl aon obair fágtha le glanadh (déantar gach rud ag bailitheoir truflais rialta).

Mar sin féin, cuireann an cur chuige seo srian mór ar fhorbairt agus is annamh a bhaineann sé le tionscadail CI/CD nua-aimseartha. Cuid lárnach den fhorbairt a bhí uathoibriú, a ligeann duit feidhmiúlacht nua a thástáil, a imscaradh agus a sheachadadh d'úsáideoirí i bhfad níos tapúla. Mar shampla, inár dtionscadail go léir, cruthaítear píblíne CI go huathoibríoch le gach gealltanas. Inti, déantar an íomhá a chur le chéile, a thástáil, a rolladh amach chuig ciorcaid éagsúla Kubernetes le haghaidh dífhabhtaithe agus seiceálacha atá fágtha, agus má tá gach rud go maith, sroicheann na hathruithe an t-úsáideoir deiridh. Agus ní eolaíocht roicéad é seo a thuilleadh, ach tarlú laethúil do go leor - is dócha duitse, ós rud é go bhfuil an t-alt seo á léamh agat.

Ós rud é go ndéantar fabhtanna a shocrú agus feidhmiúlacht nua a fhorbairt go comhthreomhar, agus gur féidir scaoileadh a dhéanamh arís agus arís eile sa lá, is léir go bhfuil líon suntasach gealltanais ag gabháil leis an bpróiseas forbartha, rud a chiallaíonn líon mór íomhánna sa chlár. Mar thoradh air sin, eascraíonn an cheist maidir le glanadh éifeachtach na clárlainne a eagrú, i.e. íomhánna nach mbaineann le hábhar a bhaint.

Ach conas a chinneann tú fiú an bhfuil íomhá ábhartha?

Critéir maidir le hábharthacht na híomhá

I bhformhór mór na gcásanna, is iad na príomhchritéir:

1. Is é an chéad cheann (an ceann is soiléire agus is criticiúla ar fad) na híomhánna a a úsáidtear faoi láthair i Kubernetes. Má bhaintear na híomhánna seo, d'fhéadfadh costais shuntasacha aga neamhfhónaimh a bheith mar thoradh ar tháirgeadh (mar shampla, d'fhéadfadh go mbeadh gá leis na híomhánna chun iad a mhacasamhlú) nó d'fhéadfadh sé go ndéanfaí iarrachtaí na foirne a dhífhabhtú ar aon cheann de na lúba a dhiúltú. (Ar an gcúis seo rinneamar fiú speisialta Prometheus onnmhaireora, a rianaíonn easpa íomhánna den sórt sin in aon bhraisle Kubernetes.)

2. Dara (níos lú soiléir, ach freisin an-tábhachtach agus arís a bhaineann le saothrú) - íomhánna go riachtanach le haghaidh aisiompú i gcás fadhbanna tromchúiseacha a bhrath sa leagan reatha. Mar shampla, i gcás Helm, is íomhánna iad seo a úsáidtear i leaganacha sábháilte den scaoileadh. (Dála an scéil, de réir réamhshocraithe in Helm is é an teorainn ná 256 athbhreithniú, ach ní dócha go gcaithfidh aon duine airgead a shábháil i ndáiríre a leithéid de líon mór leaganacha?..) Tar éis an tsaoil, déanaimid, go háirithe, leaganacha a stóráil ionas gur féidir linn iad a úsáid níos déanaí, i.e. “rolladh ar ais” chucu más gá.

3. Tríú - riachtanais fhorbróra: Gach íomhá a bhaineann lena saothar reatha. Mar shampla, má táimid ag smaoineamh ar PR, ansin déanann sé ciall íomhá a fhreagraíonn don gheallúint dheireanach a fhágáil agus, abair, an gealltanas roimhe seo: ar an mbealach seo is féidir leis an bhforbróir filleadh go tapa ar aon tasc agus oibriú leis na hathruithe is déanaí.

4. Ceathrú - íomhánna go fhreagraíonn do na leaganacha dár bhfeidhmchlár, i.e. an bhfuil an táirge deiridh: v1.0.0, 20.04.01/XNUMX/XNUMX, siarra, etc.

NB: Ceapadh na critéir atá sainithe anseo bunaithe ar thaithí ag idirghníomhú le mórán foirne forbartha ó chuideachtaí éagsúla. Mar sin féin, ar ndóigh, ag brath ar na sonraí sna próisis forbartha agus an bonneagar a úsáidtear (mar shampla, ní úsáidtear Kubernetes), féadfaidh na critéir seo a bheith difriúil.

Incháilitheacht agus réitigh atá ann cheana féin

Cuireann seirbhísí coitianta le clárlanna coimeádán, mar riail, a gcuid polasaithe glanta íomhá féin ar fáil: iontu is féidir leat na coinníollacha a shainiú faoina mbaintear clib ón gclár. Mar sin féin, tá na coinníollacha seo teoranta ag paraiméadair mar ainmneacha, am cruthaithe, agus líon na gclibeanna*.

* Ag brath ar implementations clárlainne coimeádán ar leith. Mheasamar féidearthachtaí na réitigh seo a leanas: Azure CR, Docker Hub, ECR, GCR, Pacáistí GitHub, Clárlann Coimeádán GitLab, Clárlann an Chuain, JFrog Artiffactory, Quay.io - ó Mheán Fómhair '2020.

Tá an sraith paraiméadair seo sách go leor chun an ceathrú critéar a shásamh - is é sin, íomhánna a fhreagraíonn do na leaganacha a roghnú. Mar sin féin, i gcás gach critéar eile, ní mór réiteach comhréitigh de chineál éigin a roghnú (polasaí níos déine nó, os a choinne sin, níos boige) - ag brath ar ionchais agus cumais airgeadais.

Mar shampla, is féidir an tríú critéar - a bhaineann le riachtanais fhorbróirí - a réiteach trí phróisis a eagrú laistigh d'fhoirne: ainmniú sonrach na n-íomhánna, liostaí ceadú speisialta agus comhaontuithe inmheánacha a chothabháil. Ach ar deireadh thiar ní mór é a uathoibriú go fóill. Agus mura leor cumais réitigh réidh, caithfidh tú rud éigin a dhéanamh de do chuid féin.

Tá an cás leis an gcéad dá chritéar comhchosúil: ní féidir iad a shásamh gan sonraí a fháil ó chóras seachtrach - an ceann ina n-imlonnaítear iarratais (Kubernetes inár gcás).

Léiriú ar shreabhadh oibre i Git

Ligean le rá go bhfuil tú ag obair rud éigin mar seo i Git:

An fhadhb a bhaineann le glanadh “cliste” na n-íomhánna coimeádán agus a réiteach i bhfoirgnimh

Léiríonn an deilbhín le ceann sa léaráid íomhánna coimeádáin atá imscaradh faoi láthair i Kubernetes d'úsáideoirí ar bith (úsáideoirí deiridh, tástálaithe, bainisteoirí, etc.) nó a úsáideann forbróirí chun críocha dífhabhtaithe agus comhchosúla.

Cad a tharlóidh mura gceadaíonn polasaithe glanta ach íomhánna a choinneáil (gan a scriosadh) de réir ainmneacha clibeanna tugtha?

An fhadhb a bhaineann le glanadh “cliste” na n-íomhánna coimeádán agus a réiteach i bhfoirgnimh

Ar ndóigh, ní dhéanfaidh cás den sórt sin aon duine sásta.

Cad a athróidh má cheadaíonn polasaithe gan íomhánna a scriosadh? de réir eatramh ama tugtha / líon na ngealltanas deiridh?

An fhadhb a bhaineann le glanadh “cliste” na n-íomhánna coimeádán agus a réiteach i bhfoirgnimh

Tá an toradh tar éis éirí i bhfad níos fearr, ach tá sé fós i bhfad ó idéalach. Tar éis an tsaoil, tá forbróirí fós againn a bhfuil íomhánna de dhíth orthu sa chlár (nó fiú imlonnaithe i K8anna) chun fabhtanna a dhífhabhtú...

Chun achoimre a dhéanamh ar staid reatha an mhargaidh: ní thairgeann na feidhmeanna atá ar fáil i gclárlanna coimeádáin go leor solúbthachta nuair a bhíonn siad ag glanadh, agus is é an chúis is mó leis seo aon bhealach chun idirghníomhú leis an domhan lasmuigh. Tharlaíonn sé go bhfuil iallach ar fhoirne a dteastaíonn solúbthacht den sórt sin uathu scriosadh íomhá a chur i bhfeidhm go neamhspleách “ón taobh amuigh”, ag baint úsáide as API Chlárlann Docker (nó API dúchais an fhorfheidhmithe chomhfhreagraigh).

Mar sin féin, bhíomar ag lorg réiteach uilíoch a dhéanfadh glanadh íomhá a uathoibriú d’fhoirne éagsúla ag baint úsáide as clárlanna éagsúla...

Ár cosán chuig glanadh íomhá uilíoch

Cad as a dtagann an riachtanas seo? Is é fírinne an scéil nach grúpa forbróirí ar leith sinn, ach foireann a fhreastalaíonn ar go leor acu ag an am céanna, ag cabhrú le saincheisteanna CI/CD a réiteach go cuimsitheach. Agus is é an príomh-uirlis theicniúil le haghaidh seo an fóntais Foinse Oscailte caoirigh. Is é a shainiúlacht ná nach ndéanann sé feidhm amháin, ach go dtéann sé le próisis seachadta leanúnacha ag gach céim: ó thionól go dtí imscaradh.

Is feidhm shoiléir d’fhóntas den sórt sin íomhánna a fhoilsiú sa chlár* (go díreach tar éis iad a thógáil). Agus ós rud é go gcuirtear na híomhánna ann le haghaidh stórála, ansin - mura bhfuil do stóráil gan teorainn - ní mór duit a bheith freagrach as a ghlanadh ina dhiaidh sin. Déanfar tuilleadh plé ar an gcaoi ar éirigh linn é seo a bhaint amach, ag comhlíonadh na gcritéar sonraithe go léir.

* Cé go bhféadfadh na clárlanna féin a bheith difriúil (Clárlann Docker, Clárlann Coimeádán GitLab, Cuan, etc.), bíonn na fadhbanna céanna ag a n-úsáideoirí. Níl an réiteach uilíoch inár gcás ag brath ar chur i bhfeidhm na clárlainne, mar gheall ar a ritheann lasmuigh de na clárlanna féin agus cuireann an t-iompar céanna ar fáil do gach duine.

Cé go bhfuil muid ag baint úsáide as werf mar shampla den chur i bhfeidhm, tá súil againn go mbeidh na cuir chuige a úsáidtear úsáideach d'fhoirne eile a bhfuil deacrachtaí comhchosúla acu.

Mar sin d’éirigh muid gnóthach seachtrach meicníocht a chur i bhfeidhm chun íomhánna a ghlanadh - in ionad na gcumas sin atá ionsuite cheana féin i gclárlanna do choimeádáin. Ba é an chéad chéim ná API Clárlann Docker a úsáid chun na polasaithe primitive céanna a chruthú maidir le líon na gclibeanna agus am a gcruthú (luaite thuas). Curtha leo liosta a cheadú bunaithe ar íomhánna a úsáidtear i mbonneagar imlonnaithe, i.e. Cubernetes. Maidir leis an dara ceann, ba leor an Kubernetes API a úsáid chun athrá a dhéanamh trí na hacmhainní imlonnaithe go léir agus liosta luachanna a fháil image.

Réitigh an réiteach fánach seo an fhadhb is tábhachtaí (critéar Uimh. 1), ach ní raibh ann ach tús ár dturas chun an mheicníocht glantacháin a fheabhsú. Ba é an chéad chéim eile - agus i bhfad níos suimiúla - an cinneadh íomhánna foilsithe a chomhlachú le stair Git.

Scéimeanna clibeála

Chun tús a chur leis, roghnaigh muid cur chuige inar cheart don íomhá deiridh an fhaisnéis is gá a stóráil le haghaidh glanadh, agus tógadh an próiseas ar scéimeanna clibeála. Agus íomhá á fhoilsiú, roghnaigh an t-úsáideoir rogha chlibeála ar leith (git-branch, git-commitgit-tag) agus d’úsáid sé an luach comhfhreagrach. I gcórais CI, socraíodh na luachanna seo go huathoibríoch bunaithe ar athróga timpeallachta. Go deimhin bhain an íomhá deiridh le Git primitive ar leith, na sonraí is gá a stóráil i lipéid.

Ba é an toradh a bhí ar an gcur chuige seo ná sraith beartas a cheadaigh Git a úsáid mar fhoinse aonair na fírinne:

  • Agus brainse/clib á scriosadh in Git, scriosadh na híomhánna gaolmhara sa chlár go huathoibríoch.
  • D’fhéadfaí líon na n-íomhánna a bhaineann le clibeanna agus gealltanais Git a rialú ag líon na gclibeanna a úsáidtear sa scéimre roghnaithe agus an t-am ar cruthaíodh an tiomantas gaolmhar.

Tríd is tríd, shásaigh an cur i bhfeidhm mar thoradh air sin ár riachtanais, ach bhí dúshlán nua ag fanacht linn go luath. Is é fírinne an scéil, agus scéimeanna clibeála á n-úsáid againn bunaithe ar phrimitives Git, thángamar ar roinnt easnamh. (Ós rud é go bhfuil a gcur síos lasmuigh de raon feidhme an ailt seo, is féidir le gach duine eolas a chur ar na sonraí anseo.) Mar sin, tar éis dúinn cinneadh a dhéanamh aistriú go cur chuige níos éifeachtaí maidir le clibeáil (clibeáil bunaithe ar ábhar), bhí orainn athmhachnamh a dhéanamh ar chur i bhfeidhm glanadh íomhá.

Algartam nua

Cén fáth? Le clibeáil ábhar-bhunaithe, is féidir le gach clib gealltanais iolracha in Git a shásamh. Agus tú ag glanadh íomhánna, ní féidir leat glacadh leis a thuilleadh ach ón gceangal inar cuireadh an chlib nua leis an gclárlann.

Maidir leis an algartam glantacháin nua, socraíodh bogadh ar shiúl ó scéimeanna clibeála agus tógáil próiseas meitea-íomhá, a stórálann gach ceann acu a bunch de:

  • an gealltanas ar a ndearnadh an foilsiú (is cuma ar cuireadh an íomhá leis, ar athraíodh é nó ar fhan sé mar a chéile sa chlár coimeádán);
  • agus ár n-aitheantóir inmheánach a fhreagraíonn don íomhá le chéile.

I bhfocail eile, cuireadh ar fáil é ag nascadh clibeanna foilsithe le gealltanais in Git.

Cumraíocht deiridh agus algartam ginearálta

Agus an glanadh á chumrú, tá rochtain ag úsáideoirí anois ar bheartais a roghnaíonn íomhánna reatha. Sainmhínítear gach polasaí dá leithéid:

  • go leor tagairtí, i.e. Clibeanna Git nó brainsí Git a úsáidtear le linn scanadh;
  • agus teorainn na n-íomhánna cuardaigh do gach tagairt ón tacar.

Mar léiriú, is é seo an chuma a thosaigh ar chumraíocht réamhshocraithe an bheartais:

cleanup:
  keepPolicies:
  - references:
      tag: /.*/
      limit:
        last: 10
  - references:
      branch: /.*/
      limit:
        last: 10
        in: 168h
        operator: And
    imagesPerReference:
      last: 2
      in: 168h
      operator: And
  - references:  
      branch: /^(main|staging|production)$/
    imagesPerReference:
      last: 10

Tá trí bheartas sa chumraíocht seo a chomhlíonann na rialacha seo a leanas:

  1. Sábháil an íomhá do na 10 gclibeanna Git deiridh (de réir dáta cruthaithe na clibeanna).
  2. Sábháil níos mó ná 2 íomhá a foilsíodh le linn na seachtaine seo caite le haghaidh níos mó ná 10 snáitheanna le gníomhaíocht le linn na seachtaine seo caite.
  3. Sábháil 10 n-íomhánna le haghaidh brainsí main, staging и production.

Téann an t-algartam deiridh síos go dtí na céimeanna seo a leanas:

  • Léirmheasanna a aisghabháil ó chlár na gcoimeádán.
  • Gan íomhánna a úsáidtear i Kubernetes a áireamh, mar gheall ar Rinneamar iad a réamhroghnú cheana féin trí vótaíocht a dhéanamh ar an K8s API.
  • Stair Git a scanadh agus íomhánna bunaithe ar bheartais shonraithe a eisiamh.
  • Íomhánna atá fágtha a bhaint.

Ag filleadh ar ár léaráid, seo é a tharlaíonn le fíréan:

An fhadhb a bhaineann le glanadh “cliste” na n-íomhánna coimeádán agus a réiteach i bhfoirgnimh

Mar sin féin, fiú mura n-úsáideann tú werf, is féidir cur chuige comhchosúil maidir le hardghlanadh íomhánna - i bhfeidhmiú amháin nó i gceann eile (de réir an chur chuige roghnaithe maidir le clibeáil íomhánna) - a chur i bhfeidhm ar chórais/áiseanna eile. Chun seo a dhéanamh, is leor cuimhneamh ar na fadhbanna a thagann chun cinn agus na deiseanna sin a aimsiú i do chruach a ligeann duit a réiteach a chomhtháthú chomh réidh agus is féidir. Tá súil againn go gcabhróidh an cosán a thaistileamar leat breathnú ar do chás ar leith le sonraí agus smaointe nua.

Conclúid

  • Luath nó mall, tagann formhór na bhfoirne i ngleic le fadhb an ró-sreafa clárlainne.
  • Agus tú ag cuardach réitigh, is gá ar dtús na critéir maidir le hábharthacht na híomhá a chinneadh.
  • Ligeann na huirlisí a thairgeann seirbhísí clárlainne coimeádán móréilimh duit glantachán an-simplí a eagrú nach gcuireann an “domhan lasmuigh” san áireamh: na híomhánna a úsáidtear i Kubernetes agus tréithe sreafaí oibre na foirne.
  • Ní mór go mbeadh tuiscint ag algartam solúbtha agus éifeachtach ar phróisis CI/CD agus ní mór oibriú le sonraí íomhá Docker amháin.

PS

Léigh freisin ar ár mblag:

Foinse: will.com

Add a comment