
Is-suġġett ta 'monorepożitorju ġie diskuss aktar minn darba u, bħala regola, jikkawża dibattitu attiv ħafna. Il-ħolqien 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?

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:
- Aħżen immaġini f'repożitorji mdaħħla separati:

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

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 , 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: и ), 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 ).
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:
- 3 strateġiji relatati ma 'primittivi Git bħal tag, fergħa u kommit;
- 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 .
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: "".
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 !
PS
Aqra wkoll fuq il-blog tagħna:
- «»;
- «".
Sors: www.habr.com


