An duilgheadas a thaobh glanadh “smart” de dhealbhan soithichean agus am fuasgladh ann an weath

An duilgheadas a thaobh glanadh “smart” de dhealbhan soithichean agus am fuasgladh ann an weath

Tha an artaigil a’ beachdachadh air na duilgheadasan a thaobh glanadh ìomhaighean a bhios a’ cruinneachadh ann an clàran soithichean (Clàr Docker agus na analogues aige) ann an da-rìribh pìoban CI / CD an latha an-diugh airson tagraidhean dùthchasach sgòthan air an lìbhrigeadh gu Kubernetes. Thathas a’ toirt seachad na prìomh shlatan-tomhais airson iomchaidheachd ìomhaighean agus na duilgheadasan a thig às ann an glanadh fèin-ghluasadach, sàbhaladh àite agus coinneachadh ri feumalachdan sgiobaidhean. Mu dheireadh, a’ cleachdadh eisimpleir de phròiseact sònraichte le Open Source, innsidh sinn dhut mar a gheibhear thairis air na duilgheadasan sin.

Ro-ràdh

Faodaidh an àireamh de dhealbhan ann an clàr container fàs gu luath, a ’gabhail barrachd àite stòraidh agus mar sin a’ meudachadh a chosgais gu mòr. Gus smachd a chumail air, cuingealachadh no cumail suas fàs iomchaidh de rùm anns a’ chlàr, thathar a’ gabhail ris:

  1. cleachd àireamh shuidhichte de tagaichean airson ìomhaighean;
  2. glan na dealbhan ann an dòigh air choireigin.


Tha a’ chiad chuingealachadh uaireannan iomchaidh airson sgiobaidhean beaga. Ma tha tagaichean maireannach gu leòr aig luchd-leasachaidh (latest, main, test, boris msaa), cha bhith an clàr a’ dol suas ann am meud agus airson ùine mhòr cha bhith agad ri smaoineachadh air a ghlanadh idir. Às deidh na h-uile, thèid a h-uile dealbh neo-iomchaidh a dhubhadh às, agus gu sìmplidh chan eil obair air fhàgail airson glanadh (tha a h-uile càil air a dhèanamh le neach-cruinneachaidh sgudail àbhaisteach).

Ach, tha an dòigh-obrach seo gu mòr a’ cuingealachadh leasachadh agus is ann ainneamh a bhios e iomchaidh do phròiseactan CI/CD an latha an-diugh. Bha pàirt riatanach den leasachadh fèin-ghluasad, a leigeas leat comas-gnìomh ùr a dhearbhadh, a chleachdadh agus a lìbhrigeadh do luchd-cleachdaidh fada nas luaithe. Mar eisimpleir, anns a h-uile pròiseact againn, thèid loidhne-phìoban CI a chruthachadh gu fèin-ghluasadach le gach gealltanas. Ann, tha an ìomhaigh air a chruinneachadh, air a dhearbhadh, air a sgaoileadh a-mach gu diofar chuairtean Kubernetes airson debugging agus sgrùdaidhean a tha air fhàgail, agus ma tha a h-uile càil gu math, ruigidh na h-atharrachaidhean an neach-cleachdaidh deireannach. Agus chan e saidheans rocaid a tha seo tuilleadh, ach tachartas làitheil dha mòran - is coltaiche dhutsa, leis gu bheil thu a’ leughadh an artaigil seo.

Leis gu bheilear a’ càradh bhiteagan agus a’ leasachadh comas-gnìomh ùr aig an aon àm, agus faodar fiosan a dhèanamh grunn thursan san latha, tha e follaiseach gu bheil àireamh mhòr de gheallaidhean an cois a’ phròiseas leasachaidh, a tha a’ ciallachadh àireamh mhòr de dhealbhan anns a 'chlàr. Mar thoradh air an sin, tha a’ cheist mu bhith a’ cur air dòigh glanadh èifeachdach air a’ chlàr ag èirigh, i.e. toirt air falbh ìomhaighean neo-iomchaidh.

Ach ciamar a nì thu eadhon co-dhùnadh a bheil ìomhaigh buntainneach?

Slatan-tomhais airson iomchaidheachd an ìomhaigh

Anns a 'mhòr-chuid de chùisean, is iad na prìomh shlatan-tomhais:

1. Is e a' chiad (an fheadhainn as fhollaisiche agus as breithneachaile dhiubh uile) na dealbhan a tha an-dràsta ga chleachdadh ann an Kubernetes. Le bhith a’ toirt air falbh na h-ìomhaighean sin dh’ fhaodadh cosgaisean mòra cinneasachaidh a bhith ann (mar eisimpleir, dh’ fhaodadh gum bi feum air na h-ìomhaighean airson ath-riochdachadh) no cuir às do oidhirpean an sgioba a’ dì-bhugachadh air gin de na lùban. (Air an adhbhar seo rinn sinn eadhon prògram sònraichte Prometheus às-mhalairt, a bhios a’ cumail sùil air dìth ìomhaighean mar sin ann am buidheann Kubernetes sam bith.)

2. Dàrna (nas lugha follaiseach, ach cuideachd glè chudromach agus a-rithist a 'buntainn ri brathaidh) - ìomhaighean a tha a dhìth airson tilleadh air ais ma lorgar fìor dhuilgheadasan anns an tionndadh làithreach. Mar eisimpleir, ann an cùis Helm, is iad sin ìomhaighean a thathas a’ cleachdadh ann an dreachan sàbhalaidh den fhoillseachadh. (Co-dhiù, gu bunaiteach ann an Helm is e 256 ath-sgrùdaidhean a th’ anns a’ chrìoch, ach chan eil e coltach gum feum duine sam bith sàbhaladh leithid a àireamh mhòr de dhreachan?..) Às deidh na h-uile, bidh sinn, gu sònraichte, a’ stòradh tionndaidhean gus an urrainn dhuinn an cleachdadh nas fhaide air adhart, i.e. “Rol air ais” thuca ma tha sin riatanach.

3. San treas àite - feumalachdan luchd-leasachaidh: A h-uile dealbh a tha co-cheangailte ris an obair làithreach aca. Mar eisimpleir, ma tha sinn a 'beachdachadh air PR, tha e ciallach ìomhaigh fhàgail a fhreagras ris a' ghealladh mu dheireadh agus, abair, an gealladh roimhe: mar seo faodaidh an leasaiche tilleadh gu luath gu gnìomh sam bith agus obrachadh leis na h-atharrachaidhean as ùire.

4. An ceathramh - ìomhaighean a tha a’ freagairt ris na dreachan den tagradh againn, i.e. a bheil an toradh deireannach: v1.0.0, 20.04.01/XNUMX/XNUMX, sierra, msaa.

NB: Chaidh na slatan-tomhais a tha air am mìneachadh an seo a dhealbhadh a rèir eòlas a bhith ag eadar-obrachadh le dusanan de sgiobaidhean leasachaidh bho dhiofar chompanaidhean. Ach, gu dearbh, a rèir na mion-fhiosrachaidh anns na pròiseasan leasachaidh agus am bun-structar a thathar a’ cleachdadh (mar eisimpleir, chan eilear a’ cleachdadh Kubernetes), faodaidh na slatan-tomhais sin a bhith eadar-dhealaichte.

In-ghabhail agus fuasglaidhean a tha ann mar-thà

Bidh seirbheisean mòr-chòrdte le clàran container, mar riaghailt, a ’tabhann na poileasaidhean glanaidh ìomhaighean aca fhèin: annta faodaidh tu na cumhaichean a mhìneachadh airson an tèid taga a thoirt a-mach às a’ chlàr. Ach, tha na cumhaichean sin cuingealaichte le paramadairean leithid ainmean, ùine cruthachaidh, agus àireamh nan tagaichean *.

* An urra ri gnìomhachd clàraidh sònraichte container. Bheachdaich sinn air comasachd nam fuasglaidhean a leanas: Azure CR, Docker Hub, ECR, GCR, GitHub Packages, GitLab Container Registry, Harbour Registry, JFrog Artifactory, Quay.io - bhon t-Sultain ’2020.

Tha an seata seo de pharamadairean gu leòr gus an ceathramh slat-tomhais a shàsachadh - is e sin, gus ìomhaighean a thaghadh a fhreagras ris na dreachan. Ach, airson a h-uile slat-tomhais eile, feumaidh aon seòrsa de fhuasgladh co-rèiteachaidh a thaghadh (poileasaidh nas cruaidhe no, air an làimh eile, nas tròcairiche) - a rèir dùilean agus comasan ionmhais.

Mar eisimpleir, faodar an treas slat-tomhais - co-cheangailte ri feumalachdan luchd-leasachaidh - a rèiteachadh le bhith a 'cur air dòigh pròiseasan taobh a-staigh sgiobaidhean: ainmeachadh ìomhaighean sònraichte, a' cumail liostaichean cead sònraichte agus aontaidhean a-staigh. Ach mu dheireadh feumaidh e a bhith fèin-ghluasadach fhathast. Agus mura h-eil comasan fuasglaidhean deiseil gu leòr, feumaidh tu rudeigin a dhèanamh leat fhèin.

Tha an suidheachadh leis a 'chiad dà shlatan-tomhais coltach: chan urrainn dhaibh a bhith riaraichte gun a bhith a' faighinn dàta bho shiostam taobh a-muigh - an tè far a bheilear a 'cleachdadh iarrtasan (anns a' chùis againn, Kubernetes).

Dealbh de shruth-obrach ann an Git

Canaidh sinn gu bheil thu ag obair rudeigin mar seo ann an Git:

An duilgheadas a thaobh glanadh “smart” de dhealbhan soithichean agus am fuasgladh ann an weath

Tha an ìomhaigh le ceann san diagram a’ sealltainn ìomhaighean de shoithichean a tha air an cleachdadh an-dràsta ann an Kubernetes airson luchd-cleachdaidh sam bith (luchd-cleachdaidh deireannach, luchd-dearbhaidh, manaidsearan, msaa) no a tha air an cleachdadh le luchd-leasachaidh airson adhbharan deasbaid is eile.

Dè thachras mura leig poileasaidhean glanaidh ach dealbhan a chumail (gun a sguabadh às) le ainmean tagaichean ainmichte?

An duilgheadas a thaobh glanadh “smart” de dhealbhan soithichean agus am fuasgladh ann an weath

Gu dearbh, cha dèan suidheachadh mar seo duine toilichte.

Dè a dh’ atharraicheas ma leigeas poileasaidhean nach tèid dealbhan a dhubhadh às? a rèir eadar-ama sònraichte / àireamh de gheallaidhean mu dheireadh?

An duilgheadas a thaobh glanadh “smart” de dhealbhan soithichean agus am fuasgladh ann an weath

Tha an toradh air fàs mòran nas fheàrr, ach tha e fhathast fada bho bhith air leth freagarrach. Às deidh na h-uile, tha luchd-leasachaidh againn fhathast a dh’ fheumas ìomhaighean sa chlàr (no eadhon air an cleachdadh ann an K8n) gus bugaichean deasbaid a dhèanamh ...

Gus geàrr-chunntas a dhèanamh air suidheachadh a’ mhargaidh làithreach: chan eil na gnìomhan a tha rim faighinn ann an clàran soithichean a ’tabhann sùbailteachd gu leòr nuair a bhios iad a’ glanadh, agus is e am prìomh adhbhar airson seo chan eil dòigh ann air eadar-obrachadh leis an t-saoghal a-muigh. Tha e a ’tionndadh a-mach gum feum sgiobaidhean a dh’ fheumas a leithid de shùbailteachd cuir às do dhealbhan gu neo-eisimeileach “bhon taobh a-muigh”, a’ cleachdadh an Docker Registry API (no an API dùthchasach den bhuileachadh co-fhreagarrach).

Ach, bha sinn a’ coimhead airson fuasgladh uile-choitcheann a dhèanadh fèin-ghluasad air glanadh ìomhaighean airson diofar sgiobaidhean a’ cleachdadh diofar chlàran...

Ar slighe gu glanadh ìomhaighean uile-choitcheann

Cò às a tha am feum seo a’ tighinn? Is e an fhìrinn nach e buidheann de luchd-leasachaidh fa-leth a th’ annainn, ach sgioba a bhios a’ frithealadh mòran dhiubh aig an aon àm, a’ cuideachadh le bhith a’ fuasgladh chùisean CI/CD gu coileanta. Agus is e am prìomh inneal teicnigeach airson seo an goireas Open Source gaoir. Is e an rud sònraichte nach bi e a’ coileanadh aon ghnìomh, ach gu bheil e an cois pròiseasan lìbhrigidh leantainneach aig a h-uile ìre: bho cho-chruinneachadh gu cleachdadh.

Tha foillseachadh ìomhaighean don chlàr * (dìreach às deidh dhaibh a bhith air an togail) na ghnìomh follaiseach de ghoireas mar sin. Agus leis gu bheil na h-ìomhaighean air an cur an sin airson an stòradh, an uairsin - mura h-eil an stòradh agad gun chrìoch - feumaidh tu a bhith cunntachail airson an glanadh às deidh sin. Bithear a’ bruidhinn nas fhaide air mar a choilean sinn soirbheachas le seo, a’ sàsachadh nan slatan-tomhais ainmichte gu lèir.

* Ged a dh’ fhaodadh na clàran fhèin a bhith eadar-dhealaichte (Docker Registry, GitLab Container Registry, Harbour, msaa), tha na h-aon dhuilgheadasan aig an luchd-cleachdaidh aca. Chan eil am fuasgladh uile-choitcheann sa chùis againn an urra ri buileachadh a’ chlàr, oir a’ ruith taobh a-muigh nan clàran fhèin agus a’ tabhann an aon ghiùlan airson a h-uile duine.

Ged a tha sinn a’ cleachdadh werf mar eisimpleir de bhuileachadh, tha sinn an dòchas gum bi na dòighean-obrach a chleachdar feumail do sgiobaidhean eile aig a bheil duilgheadasan coltach ris.

Mar sin dh’ fhàs sinn trang taobh a-muigh buileachadh uidheamachd airson dealbhan a ghlanadh - an àite nan comasan sin a tha mar-thà air an togail ann an clàran airson soithichean. B ’e a’ chiad cheum an API Clàraidh Docker a chleachdadh gus na h-aon phoileasaidhean prìomhadail a chruthachadh airson an àireamh de thagaichean agus àm an cruthachadh (air ainmeachadh gu h-àrd). Air a chur riutha liosta a cheadachadh stèidhichte air ìomhaighean a chaidh a chleachdadh ann am bun-structar a chaidh a chleachdadh, i.e. Cubernetes. Airson an fheadhainn mu dheireadh, bha e gu leòr an Kubernetes API a chleachdadh gus ath-aithris tro na goireasan a chaidh a chleachdadh agus liosta luachan fhaighinn. image.

Dh’ fhuasgail am fuasgladh beag seo an duilgheadas as deatamaiche (slat-tomhais Àir. 1), ach cha robh ann ach toiseach ar turais gus an inneal glanaidh a leasachadh. B 'e an ath cheum - agus mòran nas inntinniche - an co-dhùnadh ceangail ìomhaighean foillsichte ri eachdraidh Git.

Sgeama tagaidh

An toiseach, thagh sinn dòigh-obrach anns am bu chòir don ìomhaigh dheireannach am fiosrachadh riatanach a stòradh airson glanadh, agus thog sinn am pròiseas air sgeamaichean tagaidh. Nuair a dh'fhoillsicheas e ìomhaigh, thagh an neach-cleachdaidh roghainn tagaidh sònraichte (git-branch, git-commit no git-tag) agus chleachd e an luach co-fhreagarrach. Ann an siostaman CI, chaidh na luachan sin a shuidheachadh gu fèin-ghluasadach stèidhichte air caochladairean àrainneachd. Leis an fhìrinn innse bha an ìomhaigh mu dheireadh co-cheangailte ri Git primitive sònraichte, a 'stòradh an dàta riatanach airson glanadh ann an bileagan.

Mar thoradh air an dòigh-obrach seo thàinig seata de phoileasaidhean a leig le Git a chleachdadh mar aon thùs fìrinn:

  • Nuair a sguabas tu às meur/tag ann an Git, chaidh na h-ìomhaighean co-cheangailte ris a’ chlàr a dhubhadh às gu fèin-ghluasadach.
  • Dh’ fhaodadh an àireamh de dh’ ìomhaighean co-cheangailte ri tagaichean Git agus geallaidhean a bhith air an smachd leis an àireamh de thagaichean a chaidh a chleachdadh san sgeama taghte agus an ùine aig an deach an gealltanas co-cheangailte a chruthachadh.

Uile gu lèir, bha am buileachadh a thàinig às a sin a’ sàsachadh ar feumalachdan, ach bha dùbhlan ùr a’ feitheamh oirnn a dh’ aithghearr. Is e an fhìrinn, fhad ‘s a bha sinn a’ cleachdadh sgeamaichean tagaidh stèidhichte air prìomh-amasan Git, choinnich sinn ri grunn easbhaidhean. (Leis gu bheil an tuairisgeul aca taobh a-muigh raon an artaigil seo, faodaidh a h-uile duine eòlas fhaighinn air mion-fhiosrachadh an seo.) Mar sin, às deidh dhuinn co-dhùnadh atharrachadh gu dòigh-obrach nas èifeachdaiche a thaobh tagadh (tagadh stèidhichte air susbaint), bha againn ri ath-bheachdachadh air buileachadh glanadh ìomhaighean.

Algorithm ùr

Carson? Le tagadh stèidhichte air susbaint, faodaidh gach taga grunn gheallaidhean a shàsachadh ann an Git. Nuair a bhios tu a’ glanadh dhealbhan, chan urrainn dhut gabhail ris tuilleadh a-mhàin bhon gheall far an deach an taga ùr a chur ris a’ chlàr.

Airson an algairim glanaidh ùr, chaidh co-dhùnadh gluasad air falbh bho sgeamaichean tagaidh agus togail pròiseas meta-ìomhaigh, agus bidh gach fear dhiubh a’ stòradh dòrlach de:

  • an gealladh air an deach am foillseachadh a dhèanamh (chan eil e gu diofar an deach an ìomhaigh a chur ris, atharrachadh no fuireach mar a bha e ann an clàr a’ bhogsa);
  • agus an aithnichear a-staigh againn a tha co-chosmhail ris an ìomhaigh a chaidh a chruinneachadh.

Ann am faclan eile, chaidh a thoirt seachad a’ ceangal tagaichean foillsichte le geallaidhean ann an Git.

An rèiteachadh deireannach agus algorithm coitcheann

Nuair a bhios iad a’ rèiteachadh glanadh, tha cothrom aig luchd-cleachdaidh a-nis air poileasaidhean a tha a’ taghadh ìomhaighean gnàthach. Tha gach poileasaidh mar seo air a mhìneachadh:

  • iomadh iomradh, i.e. Tagaichean Git no meuran Git a thathas a’ cleachdadh aig àm sganaidh;
  • agus an àireamh de dhealbhan a chaidh a sgrùdadh airson gach iomradh bhon t-seata.

Gus sealltainn, seo mar a thòisich an suidheachadh poileasaidh bunaiteach:

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

Tha trì poileasaidhean anns an rèiteachadh seo a tha a’ cumail ris na riaghailtean a leanas:

  1. Sàbhail an ìomhaigh airson na tagaichean 10 Git mu dheireadh (a rèir ceann-latha cruthachadh tagaichean).
  2. Na sàbhail barrachd air ìomhaighean 2 a chaidh fhoillseachadh an t-seachdain sa chaidh airson gun a bhith nas fhaide na 10 snàithlean le gnìomhachd san t-seachdain a chaidh.
  3. Sàbhail 10 dealbhan airson meuran main, staging и production.

Tha an algairim dheireannach a 'dol sìos gu na ceumannan a leanas:

  • A luchdachadh a-nuas bho clàr na tancaichean.
  • Às aonais ìomhaighean a chaidh a chleachdadh ann an Kubernetes, air sgàth Tha sinn mu thràth air an taghadh ro-làimh le bhith a’ bhòtadh an K8s API.
  • A’ sganadh eachdraidh Git agus a’ dùnadh a-mach ìomhaighean stèidhichte air poileasaidhean sònraichte.
  • A 'toirt air falbh dealbhan a tha air fhàgail.

A’ tilleadh chun dealbh againn, is e seo a thachras leis an fheur:

An duilgheadas a thaobh glanadh “smart” de dhealbhan soithichean agus am fuasgladh ann an weath

Ach, eadhon ged nach cleachd thu were, faodar dòigh-obrach coltach ri glanadh ìomhaighean adhartach - ann an aon bhuileachadh no ann an dòigh eile (a rèir an dòigh as fheàrr leat tagadh ìomhaighean) - a chuir an sàs ann an siostaman / goireasan eile. Gus seo a dhèanamh, tha e gu leòr cuimhneachadh air na duilgheadasan a tha ag èirigh agus na cothroman sin a lorg anns a’ chruach agad a leigeas leat am fuasgladh fhilleadh a-steach cho rèidh sa ghabhas. Tha sinn an dòchas gun cuidich an t-slighe air an do shiubhail sinn thu gus coimhead air a’ chùis shònraichte agad le mion-fhiosrachadh agus smuaintean ùra.

co-dhùnadh

  • Nas luaithe no nas fhaide air adhart, bidh a’ mhòr-chuid de sgiobaidhean a’ tighinn tarsainn air duilgheadas thar-shruth clàraidh.
  • Nuair a bhios tu a’ lorg fhuasglaidhean, feumar an toiseach na slatan-tomhais airson iomchaidheachd na h-ìomhaigh a dhearbhadh.
  • Leigidh na h-innealan a tha air an tabhann le seirbheisean clàraidh soithichean mòr-chòrdte dhut glanadh gu math sìmplidh a chuir air dòigh nach eil a’ toirt aire don “saoghal a-muigh”: na h-ìomhaighean a thathas a ’cleachdadh ann an Kubernetes agus feartan sruth-obrach na sgioba.
  • Feumaidh tuigse a bhith aig algorithm sùbailte agus èifeachdach air pròiseasan CI / CD agus obrachadh chan ann a-mhàin le dàta ìomhaigh Docker.

PS

Leugh cuideachd air ar blog:

Source: www.habr.com

Cuir beachd ann