
D'Thema vun engem Mono-Repository ass méi wéi eemol diskutéiert ginn an, als Regel, verursaacht ganz aktiv Kontrovers. Duerch Schafung als Open Source Tool entwéckelt fir de Prozess vum Bau vun Applikatiounscode vu Git op Docker Biller ze verbesseren (an se dann op Kubernetes ze liwweren), denken mir net vill iwwer wéi eng Wiel am Beschten ass. Fir eis ass et primÀr alles wat néideg ass fir UnhÀnger vu verschiddene Meenungen ze bidden (wann dat natierlech net dem gesonde Mënscheverstand widdersprécht).
werf rezent Mono-Repo ĂnnerstĂ«tzung ass e gutt Beispill vun dĂ«ser. Awer als Ă©ischt, loosst eis erausfannen wĂ©i dĂ«s ĂnnerstĂ«tzung allgemeng mat der Benotzung vu Werf verbonnen ass a wat den Docker Registry domat ze dinn huet ...
Problemer
Loosst eis esou eng Situatioun virstellen. D'Firma huet vill EntwĂ©cklungsteams dĂ©i un onofhĂ€ngege Projete schaffen. DĂ©i meescht Uwendungen lafen op Kubernetes a sinn dofir containerisĂ©iert. Fir Container, Biller ze spĂ€icheren, braucht Dir e Registry (Registry). Als esou e Registry benotzt d'Firma Docker Hub mat engem eenzege Kont COMPANY. Ăhnlech wĂ©i dĂ©i meescht Quellcode SpĂ€ichersystemer, Docker Hub erlaabt net nested Repository Hierarchie, sou wĂ©i COMPANY/PROJECT/IMAGE. An deem Fall ... wĂ©i kĂ«nnt Dir net-monolithesch Uwendungen am Registry mat dĂ«ser Begrenzung spĂ€icheren ouni e separate Kont fir all Projet ze kreĂ©ieren?

VlÀicht ass déi beschriwwe Situatioun fir een aus der éischter Hand vertraut, awer loosst eis d'Thema vun der Organisatioun vun der ApplikatiounspÀicherung am Allgemengen betruechten, d.h. ouni Referenz op dat uewe Beispill an Docker Hub.
Léisungen
Wann d'Applikatioun monolithesch, kënnt an engem Bild, da gëtt et keng Froen a mir spÀicheren d'Biller einfach an de Containerregister vum Projet.
Wann eng Applikatioun als Multiple Komponente presentéiert gëtt, microservices, dann ass eng gewëssen Approche néideg. Am Beispill vun enger typescher Webapplikatioun déi aus zwee Biller besteet: frontend О backend - déi méiglech Optiounen sinn:
- SpÀichert Biller an getrennten nested Repositories:

- SpÀichert alles an engem Repository, a betruecht den Numm vum Bild am Tag, zum Beispill, wéi follegt:

NB: Eigentlech gĂ«tt et eng aner Optioun mat Spueren a verschiddene Repositories, PROJECT-frontend Đž PROJECT-backend, awer mir wĂ€erten et net betruechten wĂ©inst der KomplexitĂ©it vun der ĂnnerstĂ«tzung, der Organisatioun an der Verdeelung vu Rechter tĂ«scht de Benotzer.
werf ĂnnerstĂ«tzung
Am Ufank huet werf sech op nestet Repositories limitéiert - glécklecherweis ënnerstëtzen déi meescht Registry dës Feature. Vun der Versioun un , dobÀi Aarbecht mat registries an deem Nesting gëtt net ënnerstëtzt, an Docker Hub ass ee vun hinnen. Vun deem Punkt un huet de Benotzer e Choix wéi d'Applikatiounsbiller gespÀichert ginn.
Ămsetzung verfĂŒgbar Ă«nner Optioun --images-repo-mode=multirepo|monorepo (Standard multirepo, d.h. Stockage an nested Repositories). Et definĂ©iert d'Mustere mat deenen d'Biller am Registry gespĂ€ichert ginn. Et ass genuch fir de gewĂ«nschte Modus ze wielen wann Dir d'Basisbefehle benotzt, an alles anescht bleift onverĂ€nnert.
Well dĂ©i meescht werf Optiounen kĂ«nnen agestallt ginn ĂmweltverĂ€nnerlechen, an CI / CD Systemer ass de SpĂ€ichermodus normalerweis einfach global fir de ganze Projet ze setzen. Zum Beispill, am Fall vu GitLab fĂŒĂŒgt just eng Ămfeldvariabel an de Projet Astellunge derbĂ€i: Astellungen -> CI / CD -> Variablen: WERF_IMAGES_REPO_MODE: multirepo|monorepo.
Wa mir iwwer d'Verëffentlechung vu Biller an d'Ausrollen vun Uwendungen schwÀtzen (Dir kënnt iwwer dës Prozesser am Detail an den zoustÀnnegen Dokumentatiounsartikelen liesen: О ), da bestëmmt de Modus eleng d'Schabloun mat dÀr Dir mam Bild schaffe kënnt.
Den DĂ€iwel ass an den Detailer
Den Ănnerscheed an d'Haaptschwieregkeet wann Dir eng nei SpĂ€ichermethod bĂ€idrĂ©it ass am Prozess vun der Reinigung vum Registry (fir Purge Features Ă«nnerstĂ«tzt vu werf, kuckt ).
Beim Botzen berĂŒcksichtegt werf d'Biller dĂ©i a Kubernetes Cluster benotzt ginn, souwĂ©i Politiken dĂ©i vum Benotzer konfigurĂ©iert sinn. Politik basĂ©iert op der Divisioun vun Tags an Strategien. Aktuell Ă«nnerstĂ«tzt Strategien:
- 3 Strategien verbonne mat Git Primitiv wéi Tag, Branche, a Commit;
- 1 Strategie fir arbitrÀr personaliséiert Tags.
Mir spÀicheren Informatioun iwwer d'Tagstrategie beim Verëffentlechen vum Bild an den Etiketten vum finalen Bild. D'Bedeitung selwer ass de sougenannte meta tag - Obligatoresch fir e puer vun de Politiken ze gëllen. Zum Beispill, wann Dir eng Branche oder Tag aus engem Git Repository lÀschen, ass et logesch fir Zesummenhang ze lÀschen onbenotzt Biller aus dem Registry, deen duerch en Deel vun eiser Politik ofgedeckt ass.
Wann an engem Repository gespĂ€ichert ass (monorepo), am Bildtag, nieft dem Metatag, kann den Numm vum Bild och gespĂ€ichert ginn: PROJECT:frontend-META-TAG. Fir se ze trennen, hu mir kee spezifesche Separator agefouert, mee einfach den nĂ©idege WĂ€ert op de Label vum finalen Bild bĂ€igefĂŒĂŒgt beim VerĂ«ffentlechung.
NB: Wann Dir interesséiert sidd fir alles ze kucken wat am werf Quellcode beschriwwe gëtt, da kann de Startpunkt sinn .
An dësem Artikel wÀerte mir net méi Opmierksamkeet op d'Problemer an d'Begrënnung vun eiser Approche bezuelen: iwwer Taggingstrategien, Daten an Etiketten an de Verëffentlechungsprozess als Ganzt - all dat ass am Detail an engem rezente Bericht vum Dmitry Stolyarov beschriwwen: "".
Ze resuméieren
De Manktem un ĂnnerstĂ«tzung fir onbeschiedegt Registry war net e BlockĂ©ierungsfaktor fir eis oder d'werf Benotzer dĂ©i eis bekannt sinn - schliisslech kĂ«nnt Dir Ă«mmer e separat BildregistrĂ©ieren erhĂ©ijen (oder op eng bedingt Container Registry an Google Cloud wiesselen) ... WĂ©i och Ă«mmer, sou eng Restriktioun ewechzehuelen schĂ©ngt logesch ze sinn fir datt d'Tool mĂ©i bequem ass dĂ©i breet DevOps Gemeinschaft. Duerch et Ă«mzesetzen, hu mir d'Haaptschwieregkeet konfrontĂ©iert fir de Containerregistrierungsreinigungsmechanismus Ă«mzeschaffen. Elo datt alles fĂ€erdeg ass, ass et schĂ©in ze realisĂ©ieren datt et mĂ©i einfach ginn ass fir een, a mir (als HaaptentwĂ©ckler vum Projet) wĂ€erte keng merkbar Schwieregkeeten hunn fir dĂ«s Feature weider z'Ă«nnerstĂ«tzen.
Bleift bei eis a ganz geschwënn wÀerte mir Iech iwwer aner Innovatiounen soen an !
PS
Liest och op eisem Blog:
- «";
- «".
Source: will.com


