Appoġġ għal monorepo u multirepo f'werf u x'għandu x'jaqsam miegħu r-Reġistru Docker

Appoġġ għal monorepo u multirepo f'werf u x'għandu x'jaqsam miegħu r-Reġistru Docker

Is-suġġett ta 'monorepożitorju ġie diskuss aktar minn darba u, bħala regola, jikkawża dibattitu attiv ħafna. Il-ħolqien werf Bħala għodda Open Source iddisinjata biex ittejjeb il-proċess tal-bini tal-kodiċi tal-applikazzjoni minn Git f'immaġini Docker (u mbagħad twassalhom lil Kubernetes), ma naħsbux ħafna dwar liema għażla hija l-aħjar. Għalina, huwa primarju li nipprovdu dak kollu meħtieġ għall-partitarji ta 'opinjonijiet differenti (jekk dan ma jikkontradixxix is-sens komun, ovvjament).

L-appoġġ introdott reċentement għal mono-repo fil-werf huwa eżempju tajjeb ta 'dan. Imma l-ewwel, ejja nsemmu kif dan l-appoġġ huwa ġeneralment relatat mal-użu tal-werf u x'għandu x'jaqsam miegħu Docker Registry...

Kwistjonijiet

Ejja nimmaġinaw din is-sitwazzjoni. Il-kumpanija għandha ħafna timijiet ta 'żvilupp li jaħdmu fuq proġetti indipendenti. Il-biċċa l-kbira tal-applikazzjonijiet joperaw f'Kubernetes u, għaldaqstant, huma f'kontejners. Biex taħżen kontenituri u stampi, huwa meħtieġ reġistru. Il-kumpanija tuża Docker Hub b'kont wieħed bħala tali reġistru. COMPANY. Simili għall-biċċa l-kbira tas-sistemi tal-ħażna tal-kodiċi tas-sors, Docker Hub ma jippermettilekx toħloq ġerarkija ta' repożitorji mdaħħla, bħal COMPANY/PROJECT/IMAGE. F'dan il-każ... kif nistgħu naħżnu applikazzjonijiet mhux monolitiċi fir-reġistru b'din il-limitazzjoni mingħajr ma noħolqu kont separat għal kull proġett?

Appoġġ għal monorepo u multirepo f'werf u x'għandu x'jaqsam miegħu r-Reġistru Docker

Forsi s-sitwazzjoni deskritta hija familjari għal xi ħadd mill-ewwel, iżda ejja nħarsu lejn il-kwistjoni tal-organizzazzjoni tal-ħażna tal-applikazzjoni b'mod ġenerali, i.e. mingħajr referenza għall-eżempju ta 'hawn fuq u Docker Hub.

Soluzzjonijiet

Jekk l-applikazzjoni monolitikament, jiġi f'immaġni waħda, allura ma tqum l-ebda mistoqsija u aħna sempliċement insalvaw l-immaġini fir-reġistru tal-kontejners tal-proġett.

Meta applikazzjoni tiġi ppreżentata bħala komponenti multipli, mikroservizzi, allura għandek bżonn tagħżel ċertu approċċ. Bl-użu ta' l-eżempju ta' applikazzjoni web tipika li tikkonsisti f'żewġ immaġini: frontend и backend - l-għażliet possibbli huma:

  1. Aħżen immaġini f'repożitorji mdaħħla separati:

    Appoġġ għal monorepo u multirepo f'werf u x'għandu x'jaqsam miegħu r-Reġistru Docker

  2. Aħżen kollox f'repożitorju wieħed, u inkludi l-isem tal-immaġni fit-tikketta, pereżempju, kif ġej:

    Appoġġ għal monorepo u multirepo f'werf u x'għandu x'jaqsam miegħu r-Reġistru Docker

NB: Fil-fatt, hemm għażla oħra bl-iffrankar f'diversi repożitorji, PROJECT-frontend и PROJECT-backend, iżda mhux se nqisuh minħabba l-kumplessità tal-appoġġ, l-organizzazzjoni u d-distribuzzjoni tad-drittijiet bejn l-utenti.

appoġġ werf

Inizjalment, werf kien limitat għal repożitorji nested - fortunatament, ħafna reġistri jappoġġjaw din il-karatteristika. Mill-verżjoni v1.0.4-alpha.3, xogħol miżjud ma 'reġistri li fihom it-tbejjit mhux appoġġjat, u Docker Hub huwa wieħed minnhom. Minn dan il-mument 'il quddiem, l-utent kellu għażla ta' kif jaħżen l-immaġini tal-applikazzjoni.

Implimentazzjoni disponibbli bħala parti mill-għażla --images-repo-mode=multirepo|monorepo (default multirepo, i.e. ħażna f'repożitorji nested). Jiddefinixxi l-mudelli li bihom l-immaġini huma maħżuna fir-reġistru. Huwa biżżejjed li tagħżel il-mod mixtieq meta tuża l-kmandi bażiċi, u kull ħaġa oħra tibqa 'mhux mibdula.

Peress li ħafna għażliet werf jistgħu jiġu stabbiliti varjabbli ambjentali, F'sistemi CI/CD, il-mod ta 'ħażna huwa ġeneralment faċli biex jiġi stabbilit globalment għall-proġett kollu. Pereżempju, fil-każ ta’ GitLab Żid biss varjabbli ambjentali fis-settings tal-proġett: Settings -> CI / CD -> Varjabbli: WERF_IMAGES_REPO_MODE: multirepo|monorepo.

Jekk nitkellmu dwar il-pubblikazzjoni ta' stampi u t-tnedija ta' applikazzjonijiet (tista' taqra dwar dawn il-proċessi fid-dettall fl-artikoli tad-dokumentazzjoni rilevanti: Ippubblika proċess и Skjerament proċess), allura l-mod tiddetermina biss il-mudell li bih tista 'taħdem bl-immaġni.

Ix-xitan jinsab fid-dettalji

Id-differenza u d-diffikultà ewlenija meta żżid metodu ġdid ta 'ħażna tinsab fil-proċess tat-tindif tar-reġistru (karatteristiċi tat-tindif appoġġjati fil-werf, ara Proċess ta ’tindif).

Meta tnaddaf, werf iqis l-immaġini użati fil-clusters ta' Kubernetes, kif ukoll politiki kkonfigurati mill-utent. Il-politiki huma bbażati fuq il-qsim tat-tikketti fi strateġiji. Strateġiji appoġġjati bħalissa:

  1. 3 strateġiji relatati ma 'primittivi Git bħal tag, fergħa u kommit;
  2. 1 strateġija għal tikketti tad-dwana tad-dwana.

Aħna niffrankaw l-informazzjoni dwar l-istrateġija tat-tikketta meta nippubblikaw l-immaġni fit-tikketti tal-immaġni finali. It-tifsira nnifisha hija l-hekk imsejħa meta tag — meħtieġa għall-applikazzjoni ta' xi politiki. Pereżempju, meta tħassar fergħa jew tikketta minn repożitorju Git, huwa loġiku li tħassar assoċjati mhux użat immaġini mir-reġistru, li huwa kopert minn parti mill-politiki tagħna.

Meta tissejvja f'repożitorju wieħed (monorepo), fit-tikketta tal-immaġni, minbarra l-meta tag, l-isem tal-immaġni jista 'jinħażen ukoll: PROJECT:frontend-META-TAG. Biex nisseparawhom, aħna ma daħħalna l-ebda separatur speċifiku, iżda sempliċement żidna l-valur meħtieġ mat-tikketta tal-immaġni finali meta ppublikajna.

NB: Jekk inti interessat li tħares lejn dak kollu deskritt fil-kodiċi sors werf, allura l-punt tat-tluq jista 'jkun PR 1684.

F'dan l-artikolu mhux se nagħtu aktar attenzjoni lill-problemi u l-ġustifikazzjoni tal-approċċ tagħna: dwar l-istrateġiji tat-tikkettar, il-ħażna tad-dejta fit-tikketti u l-proċess ta 'pubblikazzjoni b'mod ġenerali - dan kollu huwa deskritt fid-dettall fir-rapport reċenti minn Dmitry Stolyarov: "werf hija l-għodda tagħna għal CI/CD f'Kubernetes".

Fil-qosor

In-nuqqas ta' appoġġ għar-reġistri mingħajr nesting ma kienx fattur ta' mblukkar għalina jew għall-utenti werf magħrufa minna - wara kollox, tista' dejjem tgħolli reġistru separat ta' immaġini (jew taqleb għar-Reġistru tal-Kontenituri kondizzjonali f'Google Cloud) ... Madankollu , it-tneħħija ta 'tali restrizzjoni dehret loġika sabiex tagħmel l-għodda aktar konvenjenti għall-komunità DevOps usa'. Waqt l-implimentazzjoni tagħha, iltqajna mad-diffikultà ewlenija biex naħdmu mill-ġdid il-mekkaniżmu tat-tindif tar-reġistru tal-kontejners. Issa li kollox huwa lest, huwa sabiħ li tkun taf li sar aktar faċli għal xi ħadd, u aħna (bħala l-iżviluppaturi ewlenin tal-proġett) ma nipprevedu l-ebda diffikultajiet notevoli biex nappoġġaw aktar din il-karatteristika.

Oqgħod magħna u dalwaqt ngħidulek dwar innovazzjonijiet oħra fi werf!

PS

Aqra wkoll fuq il-blog tagħna:

Sors: www.habr.com

Żid kumment