
An tattauna batun monorepository fiye da sau ɗaya kuma, a matsayin mai mulkin, yana haifar da muhawara mai ƙarfi. Ƙirƙirar A matsayin kayan aikin Buɗaɗɗen Tushen da aka ƙera don haɓaka aikin ginin lambar aikace-aikacen daga Git zuwa hotunan Docker (sannan kuma isar da su zuwa Kubernetes), ba mu yi tunani da yawa game da zaɓi mafi kyau ba. A gare mu, yana da farko don samar da duk abin da ake bukata ga masu goyon bayan ra'ayi daban-daban (idan wannan bai saba wa hankali ba, ba shakka).
Tallafin da aka gabatar kwanan nan don mono-repo a cikin werf kyakkyawan misali ne na wannan. Amma da farko, bari mu gano yadda wannan tallafin ke da alaƙa da amfani da werf da abin da Docker Registry ya yi da shi.
Batutuwa
Bari mu yi tunanin wannan yanayin. Kamfanin yana da ƙungiyoyin ci gaba da yawa waɗanda ke aiki akan ayyuka masu zaman kansu. Yawancin aikace-aikacen suna aiki a cikin Kubernetes kuma, saboda haka, ana ajiye su. Don adana kwantena da hotuna, ana buƙatar rajista. Kamfanin yana amfani da Docker Hub tare da asusu ɗaya kamar irin wannan rajista. COMPANY. Mai kama da yawancin tsarin ajiyar lambar tushe, Docker Hub baya ƙyale ka ƙirƙiri ƙaƙƙarfan matsayi na ma'aji, kamar COMPANY/PROJECT/IMAGE. A wannan yanayin ... ta yaya za mu iya adana aikace-aikacen da ba na monolithic a cikin rajista tare da wannan iyakance ba tare da ƙirƙirar asusun daban don kowane aikin ba?

Wataƙila yanayin da aka kwatanta ya saba wa wani da farko, amma bari mu dubi batun shirya ajiyar aikace-aikacen gabaɗaya, watau. ba tare da ambaton misalin da ke sama da Docker Hub ba.
Magani
Idan aikace-aikacen monolithically, ya zo a cikin hoto ɗaya, to, babu tambayoyi da suka taso kuma muna kawai ajiye hotuna zuwa wurin rajistar kwantena na aikin.
Lokacin da aka gabatar da aikace-aikacen azaman abubuwa da yawa, microservices, to kuna buƙatar zaɓar wata hanya. Yin amfani da misalin aikace-aikacen gidan yanar gizo na yau da kullun wanda ya ƙunshi hotuna biyu: frontend и backend - zaɓuɓɓukan da za a iya yi sune:
- Ajiye hotuna a cikin ɗakunan ajiya daban-daban:

- Ajiye komai a wurin ajiya guda, kuma haɗa sunan hoton a cikin alamar, misali, kamar haka:

NB: A gaskiya, akwai wani zaɓi tare da yin ajiya a cikin ma'ajin daban-daban, PROJECT-frontend и PROJECT-backend, amma ba za mu yi la'akari da shi ba saboda rikitarwa na tallafi, tsari da rarraba haƙƙoƙin tsakanin masu amfani.
goyon bayan werf
Da farko, werf ya iyakance ga ma'ajiyar gida - an yi sa'a, yawancin masu yin rajista suna goyan bayan wannan fasalin. Tun version , ƙara aiki tare da rajista a cikin abin da ba a goyan bayan gida, kuma Docker Hub yana daya daga cikinsu. Daga wannan lokacin, mai amfani yana da zaɓi na yadda ake adana hotunan aikace-aikacen.
Ana samun aiwatarwa azaman ɓangaren zaɓi --images-repo-mode=multirepo|monorepo (default multirepo, i.e. ajiya a cikin ɗakunan ajiya). Yana bayyana tsarin da aka adana hotuna a cikin wurin yin rajista. Ya isa ya zaɓi yanayin da ake so lokacin amfani da umarni na asali, kuma komai zai kasance ba canzawa.
Tunda ana iya saita yawancin zaɓuɓɓukan werf masu canjin yanayi, a cikin tsarin CI / CD, yanayin ajiya yawanci yana da sauƙi don saita duniya don dukan aikin. Misali, a cikin yanayin GitLab Kawai ƙara canjin yanayi a cikin saitunan aikin: Saituna -> CI / CD -> Sauye-sauye: WERF_IMAGES_REPO_MODE: multirepo|monorepo.
Idan muka yi magana game da buga hotuna da fitar da aikace-aikace (zaku iya karanta game da waɗannan hanyoyin dalla-dalla a cikin abubuwan da suka dace: и ), sannan yanayin kawai yana ƙayyade samfuri wanda zaku iya aiki tare da hoton.
Shaidan yana cikin cikakkun bayanai
Bambanci da babban wahala lokacin ƙara sabon hanyar ajiya yana cikin aiwatar da tsaftace wurin yin rajista (fasalolin tsaftacewa suna goyan bayan werf, duba ).
Lokacin tsaftacewa, werf yana yin la'akari da hotunan da aka yi amfani da su a cikin gungu na Kubernetes, da kuma tsare-tsaren masu amfani. Manufofin sun dogara ne akan rarraba tags zuwa dabaru. Dabarun a halin yanzu suna tallafawa:
- Dabarun 3 masu alaƙa da abubuwan farko na Git kamar tag, reshe da ƙaddamarwa;
- Dabarun 1 don alamun al'ada na al'ada.
Muna adana bayanai game da dabarun alamar lokacin buga hoton a cikin alamun hoton ƙarshe. Ma'anar kanta ita ce abin da ake kira meta tag - wajibi ne don aiwatar da wasu manufofi. Misali, lokacin share reshe ko alama daga ma'ajiyar Git, yana da ma'ana don share alaƙa rashin amfani hotuna daga wurin yin rajista, wanda wani ɓangare na manufofinmu ya rufe.
Lokacin adanawa a cikin ma'aji guda ɗaya (monorepo), a cikin alamar hoton, ban da alamar meta, ana iya adana sunan hoton: PROJECT:frontend-META-TAG. Don raba su, ba mu gabatar da kowane takamaiman mai raba su ba, amma kawai ƙara ƙimar da ake buƙata zuwa alamar hoton ƙarshe lokacin bugawa.
NB: Idan kuna sha'awar kallon duk abin da aka bayyana a cikin lambar tushe na werf, to farkon farawa zai iya zama .
A cikin wannan labarin, ba za mu ba da hankali ga matsalolin da hujjar tsarin mu: game da dabarun yin alama, adana bayanai a cikin lakabi da kuma tsarin bugawa a gaba ɗaya - duk wannan an bayyana shi dalla-dalla a cikin rahoton kwanan nan na Dmitry Stolyarov: "".
Don taƙaitawa
Rashin tallafi ga masu yin rajista ba tare da gurɓata ba ba shine abin toshewa ba a gare mu ko masu amfani da werf da aka sani da mu - bayan haka, koyaushe kuna iya ɗaga rajista daban na hotuna (ko canza zuwa rajistar kwantena na sharadi a cikin Google Cloud) ... Koyaya. , Cire irin wannan ƙuntatawa ya yi kama da ma'ana don sanya kayan aikin ya fi dacewa ga al'ummar DevOps. Yayin aiwatar da shi, mun gamu da babbar matsala wajen sake yin aikin tsaftace wurin rajistar kwantena. Yanzu da duk abin da aka shirya, yana da kyau a san cewa ya zama mafi sauƙi ga wani, kuma mu (a matsayin manyan masu haɓaka aikin) ba mu hango wasu matsaloli masu ban mamaki ba don ƙara tallafawa wannan fasalin.
Kasance tare da mu kuma nan ba da jimawa ba za mu ba ku labarin wasu sabbin abubuwa a ciki !
PS
Karanta kuma a kan shafinmu:
- «";
- «".
source: www.habr.com


