Problema "doloris" purgatio imaginum continens eiusque solutionem in werf

Problema "doloris" purgatio imaginum continens eiusque solutionem in werf

Articulus de quaestionibus purgatarum imaginum, quae in vasis registris (Docker Registry et ejus analogis accumulant) in realitatibus modernorum CI/CD pipelines tractat pro nube applicationum indigenarum Kubernetes traditas. Praecipua criteria ad imaginum congruentiam et inde difficultates in purgando automando, salvis spatiis et necessitatibus iunctorum occurrentium dantur. Denique, exemplo propositi Fons apertae specificae, docebimus quomodo hae difficultates superari possint.

introduction

Numerus imaginum in vase registro celeriter crescere potest, plus spatii repositionis sumens et sic signanter sumptus augens. Imperare, limitare vel conservare gratum incrementum spatii in registro occupato, acceptatur;

  1. uti certum numerum tags pro imaginibus;
  2. imagines emundare aliqualiter.


Prima limitatio interdum pro parvis iugis acceptabilis est. Si developers have satis permanens tags (latest, main, test, boris etc.), subcriptio magnitudine non intumescit et diu cogitandum de purgando omnino non habebis. Post omnes, omnes imagines inexorabilis erasae sunt, et nihil aliud ad purgandum opus relictum est (omnia a iusto exactore purgamenta fiunt).

Attamen hic modus progressionis valde limitat ac raro in inceptis CI/CD modernis applicabilis est. Pars integra evolutionis erat automation, quae sino ut probes, explicas et novas functiones trades usoribus multo citius. Exempli gratia, in omnibus nostris inceptis, sponte CI pipeline creatur cum singulis committis. In ea imago colligitur, probata, evolvit ad varios Kubernetes circuitus ad debugging et reliquos compescendos, et, si bene habet, mutationes ad finem user. Et haec scientia non iam erucae, sed cottidianae rei eventum pro multis - tibi maxime verisimile est, cum hunc articulum legis.

Cum cimices fixio et nova functionalitas enucleandi in parallelis exerceatur et solvo pluries in die perfici possit, manifestum est processum evolutionis comitatur cum notabili numero commissorum, quod significat. numerus imaginum in registro. Quam ob rem exitus ordinandi registri efficax purgatio oritur, i.e. irrelevant imagines sublatis.

Sed quomodo etiam statues an imago pertineat?

Criteria congruentia imaginis

In plurimis casibus, praecipuae normae erunt:

1. Primum (omnium maxime conspicuum ac criticum) est imagines currently in Kubernetes. Imagines removere possunt in significantibus productionis temporis sumptibus (exempli gratia, imagines requiri ad replicationem) vel negare conatus bigae debugging in quibusvis loramenta. (Quam ob causam etiam specialem fecimus" Prometheus exportatorquae absentiam talium imaginum vestigat in quovis botro Kubernetes).

2. Secundae (minus notae, sed etiam magni ponderis et rursus ad abusionem pertinentes) - imagines quae requiritur ad reverti si deprehensio gravium quaestionum in emendatione. Exempli gratia, in casu Helm hae imagines sunt quae in versionibus emissionis servatis adhibitae sunt. (Obiter per defaltam in Helm limes est 256 revisions, sed probabile est aliquem vere servandum esse. haec numerus versionum? "Revolve" illis, si necesse est.

3. Tertium - elit eget: Omnes imagines ad currenti opus referuntur. Exempli gratia, si consideramus PR, tum efficit sensum relinquere imaginis quae ultimo commisit debitam et, dicam, priorem committamus: hoc modo elit celeriter reverti potest ad aliquod negotium et operandum cum recentissimis mutationibus.

4. Quartum - quod imagines correspondent versiones nostrae applicationis, i.e. producti finales sunt: ​​v1.0.0, 20.04.01/XNUMX/XNUMX, sierra, etc.

NB: Normae hic definitae positae sunt experientiae mutuae cum justo iunctorum evolutionis e diversis societatibus. Attamen, sane, secundum specialia in processibus evolutionis et infrastructura adhibitis (exempli gratia Kubernetes non adhibetur), hae criteria differre possunt.

Eligibility et solutiones existentium

Popularia officia cum registris continentibus, pro regula sua imaginem politiae tersus praebent: in illis condiciones definire potes, sub quibus tag e registro removetur. Attamen hae condiciones per parametris ut nomina, tempus creationis, numerus tags limitantur*.

* Dependet ex instrumentis specificis continens registratum. Facultates sequentium solutionum consideravimus: Azure CR, Docker Hub, ECR, GCR, Packages GitHub, GitLab Continens Subcriptio, Harbour Subcriptio, JFrog Artifactorius, Quay.io - sicut Septembris'2020.

Haec parametrorum institutio satis est ad satisfaciendum quartum criterium, id est ad imagines selectas quae versionibus respondent. Nihilominus, omnibus aliis indiciis, solutionem compromissi eligere oportet (a duriori vel e contrario leniorem consilium) - secundum expectationes et facultates oeconomicas.

Exempli gratia: tertia norma - relata ad necessitates electronicarum - solvi potest processibus in iunctionibus ordinandis: specifica imaginum nuncupatio, speciales permittit indices et conventiones internas servans. sed tandem adhuc ut automated necesse est. Et si facultates solutionum paratarum non sufficiunt, aliquid de tuo faciendum habes.

Res cum primis duobus criteriis similis est: satiari non possunt quin recipiantur ab externa systemate - alterum ubi applicationes explicantur (nostro casu Kubernetes).

Illustration of workflow in Git

Dicamus te aliquid simile hoc in Git laborasse:

Problema "doloris" purgatio imaginum continens eiusque solutionem in werf

Icon cum capite in schemate denotat continens imagines quae nunc in Kubernetes explicantur pro quibusvis utentibus (finis utentibus, testers, procuratoribus, etc.) vel ab tincidunt ad debugging et similium causa adhibita.

Quid accidit, si consilia tersus tantum imagines retineri sinunt (non deleta) per datum tag nomina?

Problema "doloris" purgatio imaginum continens eiusque solutionem in werf

Patet, quod talis sem non faciet beatum.

Quid mutabit si consilia deleri non sinunt imagines? secundum tempus datum / numerum ultimum committit?

Problema "doloris" purgatio imaginum continens eiusque solutionem in werf

Effectus multo melior factus est, sed adhuc longe aberat. Post omnes, adhuc habemus machinos qui imagines in registro (vel etiam in K8s explicant) habent ut cimices debug...

Ad summatim hodiernae rerum condiciones: functiones in vasis registris praesto non satis mollitiem cum purgatione offerunt, et praecipua ratio est. nullo modo se occurrunt cum extra mundum. Evenit ut iugis quae talem flexibilitatem requirunt cogantur independenter ad effectum deducendi imaginem "ab extra", adhibito API Docker Registry (vel indigena API exsecutionis respondentis).

Autem, solutionem universalem quaerebamus quae imago automatis tersus esset pro diversis iugis diversis registris utentes.

Via nostra ad imaginem universalem purgatio

Unde hoc opus est? Ita res est nos non separatim e numero tincidunt, sed manipulus, qui multis simul inservit, adiuvans ut quaestiones CI/CD comprehendendo solvat. Et principale instrumentum technicum ad hoc est utilitas Open Source werf *. Proprium eius est quod non unum munus exercet, sed continuos processus partus comitatur omnibus gradibus: a coetu instruere.

Imagines evulgatae in registro* (statim postquam aedificatae sunt) evidens est talis utilitatis functio. Et cum imagines ibi positae sint pro repositione, tunc - si repositio tua non est illimitata -, debes esse responsabilis emundationis eorum posterioris. Quomodo successum in hoc gessimus, omnibus definitis criteriis satisfacientes, ulterius dicetur.

* Quamvis ipsae registria diversae sint (Docker Registry, GitLab Container Registry, Harbour, etc.), utentes utentes easdem difficultates opponunt. Universalis solutio in nostro casu non pendet a registro exsecutione, quia extra registra se decurrit et eosdem mores pro omnibus offert.

Tametsi werf ad exemplum exsecutionis utimur, speramus aditus usui fore aliis iugis similibus difficultatibus versantibus.

Itaque nos got occupatus externum exsequendum mechanismum ad imagines purgandas - pro illis facultatibus quae iam in registris pro vasis aedificatae sunt. Primus gradus erat uti Docker Registry API ut easdem rationes primitivas creare pro numero tags et tempore creationis suae (supra memoratum). Addidit eis patitur album secundum imagines in deployed infrastructure, i.e. Kubernetes. Ad haec, satis erat Kubernetes API uti per omnes facultates explicandas et indicem valorum repetere. image.

Haec trivialis solutio problema criticum difficillimum solvitur (crimen No. 1), sed solum initium fuit itineris nostri ut purgationem mechanismum emendaret. Proximus - multoque magis interesting - gradus erat sententiae adiunctus imagines editae cum Git history.

Tagging consilia

Inprimis accessum elegimus in quo ultima imago necessarias informationes ad purgandum reconderet et processum in cogitationibus tagging fabricavit. Cum imaginem evulgandam, user optio certae tagging electus est (git-branch, git-commit aut git-tag) et usus valorem respondentem. In systematis CI, hi valores automatice positae sunt in variabilium ambitu. In facto ultima imago est cum certis Git primitivaenecessarias notitias ad purgandum in pittaciis recondens.

Hic aditus consecutus est in certa ratione agendi quae Git utendum est tamquam unico veritatis fonte:

  • Cum ramum/tag in Git delendo, imagines consociatae in registro ipso erant deletae.
  • Numerus imaginum cum Git tags coniungitur et committit, numero tags in schemate delecto adhibito temperari potuit et tempus quo iuncta committere creata est.

Super, exsecutio consequens nostris necessitatibus satisfecit, sed nova provocatio mox nos exspectavit. Ita res est quod, cum tagging technis in Git primitivis fundatis, aliquot delicta invenimus. (Cum extra ambitum huius articuli descriptio eorum sit, quilibet se perscrutari potest hic.) Itaque cum magis efficacem accessum ad tagging (content-based tagging) flectendum decrevimus), exsequendam imaginis purgationem retractare debebamus.

Novum algorithmus

Quare? Cum content-substructio tagging, singula tag in Git committit multipliciter satisfacere potest. Cum imagines purgat, amplius assumere non potes tantum a committo ubi novum tag subcriptio adiectum est.

Ad novum algorithmum purgandum, placuit a tagging technis removere et aedificare meta-image processusquorum quilibet fasciculum reponit;

  • committo in quo publicatio fiebat (neque refert utrum imago addita, mutata an eadem manserit in registro continens);
  • et identificatorium internum nostrum correspondens imagini congregatae.

Id est, cautum erat Conjunctio editae tags cum committit in Git.

Configuratio finalis et generalis algorithmus

Cum emundationem configurans, users nunc aditus ad rationes quae selectas imaginum currentium habent. Uterque tale consilium definitur:

  • multis indiciis, i.e. Git tags vel Git rami qui in intuendo adhibentur;
  • et modus imaginum inquisitorum pro singulis respectibus ex statuto.

Ad illustrandum, hoc est quod consilium default configuratione quasi spectare coepit.

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

Configuratio haec tria continet consilia quae praeceptis sequentibus observabuntur:

  1. Serva imaginem pro ultimis 10 Git tags (by tag creationis date).
  2. Nihil plus quam 2 imagines in novissima septimana editas non plus quam 10 fila cum actione in novissima hebdomade.
  3. Salvum 10 imagines in ramis main, staging ΠΈ production.

Postrema algorithmus ulcera usque ad sequentia vestigia;

  • Receptum manifestat ex registro continens.
  • Imagines exclusis in Kubernetes, quia Iam prae-electis datorum K8s API.
  • ENARRATIO Git historiam et imagines exclusis sub certa rationibus.
  • Reliquias removere imagines.

Redeundo ad nostram illustrationem, hoc fit cum werf;

Problema "doloris" purgatio imaginum continens eiusque solutionem in werf

Attamen, etiamsi werf non uteris, similis accessus ad purgationem imaginis provectae - in una exsecutione vel alia (iuxta praelatum accessum ad imaginem tagging) - applicari potest ad alia systemata/utilitatem. Ad hoc faciendum, satis est meminisse problematum quae oriuntur et illas opportunitates in ACERVUS inveniunt, quae solutionem earum quam aequaliter fieri permittunt integrare. Speramus quod iter peregimus adiuvabit ut tuam particularem causam spectes novis rebus et cogitationibus.

conclusio,

  • Serius vel serius, plerique iugis problema subcriptio redundant.
  • Cum solutiones quaerendas, primum necesse est normas determinare quae ad imaginem referuntur.
  • Instrumenta quae a populari continentis registri servitio permittunt te instituere mundissimo simplicissimo, qui rationem "extra mundum" non attendit: imagines in Kubernetes adhibitae et propriae operarum operarum quadrigis.
  • Algorithmus flexibilis et efficax intellectus CI/CD processuum habere debet et non solum cum data imaginis Docker operare.

PS

Lege etiam in nostro diario:

Source: www.habr.com