Nyaya ye mono-repository yakakurukurwa kanopfuura kamwe uye, sekutonga, inokonzera kukakavara kwakanyanya. Nekugadzira
werf ichangoburwa mono-repo rutsigiro muenzaniso wakanaka weizvi. Asi chekutanga, ngationei kuti rutsigiro urwu rwunowanzoenderana sei nekushandisa werf uye izvo Docker Registry ine chekuita nazvo ...
Nyaya
Ngatimbofungidzira mamiriro ezvinhu akadaro. Iyo kambani ine zvikwata zvakawanda zvebudiriro zvinoshanda pamapurojekiti akazvimirira. Zvizhinji zvekushandisa zvinomhanya paKubernetes uye saka zvakaiswa mumidziyo. Kuti uchengetedze midziyo, mifananidzo, unoda registry (registry). Seregistry yakadai, kambani inoshandisa Docker Hub ine account imwe chete COMPANY
. Zvakafanana neakawanda sosi kodhi yekuchengetedza masisitimu, Docker Hub haitenderi nested repository hierarchy, zvakaita se COMPANY/PROJECT/IMAGE
. Kana zvakadaro... ungachengeta sei asiri-monolithic application muregistry neichi chinogumira pasina kugadzira yakaparadzana account yepurojekiti yega yega?
Zvichida, mamiriro ezvinhu anotsanangurwa anozivikanwa kune mumwe munhu pachake, asi ngationei nyaya yekuronga kuchengetedza kwekushandisa muhuwandu, i.e. pasina kunongedzera kumuenzaniso wepamusoro uye Docker Hub.
Solutions
Kana chikumbiro monolithic, inouya mumufananidzo mumwe, saka hapana mibvunzo uye isu tinongo chengetedza iyo mifananidzo kune yeprojekiti mudziyo registry.
Kana chikumbiro chikaunzwa sezvikamu zvakawanda, microservices, ipapo imwe nzira inodiwa. Pamuenzaniso weyakajairwa pawebhu application ine mifananidzo miviri: frontend
ΠΈ backend
- zvingasarudzwa ndezvi:
- Chengetedza mifananidzo munzvimbo dzakasiyana-siyana dzekuchengetedza:
- Chengetedza zvese mune imwe repository, uye funga zita remufananidzo mune iyo tag, semuenzaniso, seinotevera:
NB: Chaizvoizvo, pane imwe sarudzo nekuchengetedza mune dzakasiyana repositori, PROJECT-frontend
ΠΈ PROJECT-backend
, asi isu hatizozvifungidzire nekuda kwekuoma kwekutsigirwa, kurongeka uye kugoverwa kwekodzero pakati pevashandisi.
werf support
Pakutanga, werf yakagumira kune nested repositori - nerombo rakanaka, mazhinji maregistries anotsigira ichi chimiro. Kutanga kubva pane shanduro
Implementation inowanikwa pasi pechisarudzo --images-repo-mode=multirepo|monorepo
(default multirepo
, i.e. chengetedzo munzvimbo dzakaiswa dendere). Inotsanangura maitiro ayo mifananidzo inochengetwa murejista. Zvakakwana kusarudza nzira yaunoda paunenge uchishandisa mirairo yekutanga, uye zvimwe zvose zvicharamba zvisina kuchinjwa.
Nekuti akawanda werf sarudzo anogona kusetwa nharaunda variables, muCI / CD masisitimu, iyo yekuchengetedza modhi inowanzo kuve nyore kuseta pasi rose kune iyo purojekiti yese. Semuyenzaniso, munyaya yeGitLab ingo wedzera shanduko yemamiriro ekunze muzvirongwa zveprojekiti: Settings -> CI / CD -> Variables: WERF_IMAGES_REPO_MODE: multirepo|monorepo
.
Kana tikataura nezve kuburitsa mifananidzo uye kuburitsa maapplication (unogona kuverenga nezve maitiro aya zvakadzama mune akakodzera zvinyorwa zvinyorwa:
Dhiyabhorosi ari muhuwandu
Musiyano uye kuoma kukuru pakuwedzera nzira nyowani yekuchengetedza iri munzira yekuchenesa registry (yekuchenesa maficha anotsigirwa ne werf, ona
Paunenge uchichenesa, werf inofunga nezvemifananidzo inoshandiswa muKubernetes masumbu, pamwe nemitemo yakagadziriswa nemushandisi. Mitemo yakavakirwa pakupatsanurwa kwema tags kuita mazano. Parizvino mazano anotsigirwa:
- 3 mazano akabatanidzwa neGit primitives senge tag, bazi, uye kuzvipira;
- 1 zano remadiro etsika tags.
Isu tinochengetedza ruzivo nezve tag zano kana tichiburitsa chifananidzo mumalebel emufananidzo wekupedzisira. Chirevo pachacho ndicho chinonzi meta tag - Inodiwa kushandisa mamwe emitemo. Semuenzaniso, pakubvisa bazi kana tag kubva kuGit repository, zvine musoro kudzima zvine hukama. isina kushandiswa mifananidzo kubva ku registry, iyo inofukidzwa nechikamu chemitemo yedu.
Kana yachengetwa mune imwe repository (monorepo
), mune iyo tag yemufananidzo, kuwedzera kune meta tag, zita remufananidzo rinogonawo kuchengetwa: PROJECT:frontend-META-TAG
. Kuti tizviparadzanise, isu hatina kusuma chero chakasarudzika, asi takangowedzera kukosha kunodiwa kune iyo label yemufananidzo wekupedzisira pakudhindisa.
NB: Kana iwe uchifarira kutarisa zvese zvinotsanangurwa mune werf source kodhi, ipapo pekutangira kunogona kuva
Muchinyorwa chino, isu hatizotarisi zvakanyanya kumatambudziko uye kururamisa kwemaitiro edu: nezve nzira dzekumaka, kuchengetedza dhata mumabhii uye nzira yekuburitsa yakazara - zvese izvi zvinotsanangurwa zvakadzama mumushumo uchangoburwa naDmitry Stolyarov: "
Kupfupikisa
Kushaikwa kwerutsigiro rwemaregistries asina kunyorwa kwaisava chinhu chinovharisa kwatiri kana vashandisi vewerf vanozivikanwa kwatiri - mushure mezvose, unogona kugara uchisimudza yakaparadzana mufananidzo registry (kana chinja kune inomisikidzwa Container Registry muGoogle Cloud) ... Zvisinei, kubvisa chirambidzo chakadaro chaiita sechine musoro kuitira kuti chishandiso chive nyore nharaunda yeDevOps yakakura. Kuzvishandisa, takatarisana nedambudziko guru mukugadzirisa zvakare mudziyo wekuchenesa midziyo. Izvozvi zvese zvagadzirira, zvakanaka kuziva kuti zvave nyore kune mumwe munhu, uye isu (sevagadziri vakuru veprojekiti) hatizove nematambudziko anooneka mukuwedzera kutsigira chinhu ichi.
Gara nesu uye munguva pfupi iri kuuya tichakuudza nezve zvimwe zvitsva mukati
PS
Verenga zvakare pablog yedu:
- Β«
Iwe unogona ikozvino kuvaka Docker mifananidzo mune werf uchishandisa yakajairwa Dockerfile "; - Β«
werf - chishandiso chedu cheCI / CD muKubernetes (muongorori uye mushumo wevhidhiyo) ".
Source: www.habr.com