Kuyika ma taggings mu werf collector: chifukwa chiyani ndipo imagwira ntchito bwanji?

Kuyika ma taggings mu werf collector: chifukwa chiyani ndipo imagwira ntchito bwanji?

werf ndiye gwero lathu lotseguka la GitOps CLI pomanga ndi kutumiza mapulogalamu ku Kubernetes. MU kutulutsa v1.1 chinthu chatsopano chinayambitsidwa mwa osonkhanitsa zithunzi: kuyika zithunzi ndi zomwe zili kapena kutengera zolemba. Mpaka pano, chiwembu chojambulira mu werf chimaphatikizapo kuyika zithunzi za Docker ndi tag ya Git, nthambi ya Git kapena kudzipereka kwa Git. Koma ziwembu zonsezi zili ndi zovuta zomwe zimathetsedwa kwathunthu ndi njira yatsopano yolembera. Tsatanetsatane wa izo ndi chifukwa chake zili zabwino kwambiri zili pansi pa odulidwa.

Kutulutsa ma microservices kuchokera kumalo amodzi a Git

Nthawi zambiri zimachitika pamene ntchito yagawidwa m'magulu ambiri odziyimira pawokha. Kutulutsidwa kwa mautumikiwa kumatha kuchitika paokha: ntchito imodzi kapena zingapo zitha kutulutsidwa panthawi, pomwe ena onse ayenera kupitiliza kugwira ntchito popanda kusintha kulikonse. Koma poyang'ana kusungirako ma code ndi kasamalidwe ka polojekiti, ndizosavuta kusunga mautumiki oterowo m'malo amodzi.

Nthawi zina ntchito zimakhala zodziyimira pawokha ndipo sizimalumikizidwa ndi pulogalamu imodzi. Pachifukwa ichi, adzakhala m'mapulojekiti osiyana ndipo kumasulidwa kwawo kudzachitika kudzera mu njira zosiyana za CI / CD muzochita zonse.

Komabe, zenizeni, opanga nthawi zambiri amagawaniza pulogalamu imodzi kukhala ma microservice angapo, koma kupanga chosungirako ndi projekiti ya aliyense ... ndikokwanira momveka bwino. Izi ndizomwe tidzakambidwenso mopitilira: ma microservice angapo ali m'malo amodzi a projekiti ndipo kutulutsidwa kumachitika kudzera munjira imodzi mu CI/CD.

Kuyika chizindikiro ndi nthambi ya Git ndi tag ya Git

Tinene kuti njira yodziwika kwambiri yolemba ma tag imagwiritsidwa ntchito - tag-kapena-nthambi. Kwa nthambi za Git, zithunzi zimayikidwa ndi dzina la nthambi, panthambi imodzi panthawi pali chithunzi chimodzi chokha chosindikizidwa ndi dzina la nthambiyo. Kwa ma tag a Git, zithunzi zimayikidwa molingana ndi dzina la tag.

Git tag yatsopano ikapangidwa, mwachitsanzo, mtundu watsopano ukatulutsidwa, tag yatsopano ya Docker idzapangidwa pazithunzi zonse za polojekiti mu Docker Registry:

  • myregistry.org/myproject/frontend:v1.1.10
  • myregistry.org/myproject/myservice1:v1.1.10
  • myregistry.org/myproject/myservice2:v1.1.10
  • myregistry.org/myproject/myservice3:v1.1.10
  • myregistry.org/myproject/myservice4:v1.1.10
  • myregistry.org/myproject/myservice5:v1.1.10
  • myregistry.org/myproject/database:v1.1.10

Mayina atsopanowa amadutsa pama tempulo a Helm kupita ku Kubernetes kasinthidwe. Mukayamba kutumiza ndi lamulo werf deploy malo akusinthidwa image mu Kubernetes gwero likuwonetsa ndikuyambitsanso zofananira chifukwa cha dzina losinthidwa.

vuto: ngati, kwenikweni, zomwe zili pachithunzichi sizinasinthe kuyambira pomwe zidatulutsidwa kale (Git tag), koma chizindikiro chake cha Docker chokha, izi zimachitika. zapamwamba kuyambitsanso pulogalamuyi ndipo, chifukwa chake, nthawi yocheperako ndiyotheka. Ngakhale panalibe chifukwa chenicheni chochitira izi.

Zotsatira zake, ndi dongosolo lomwe lilipo pano ndikofunikira kutchingira nkhokwe zingapo za Git ndipo vuto limakhalapo pakukonza kutulutsidwa kwa nkhokwe zingapo izi. Kawirikawiri, ndondomeko yotereyi imakhala yolemetsa komanso yovuta. Ndikwabwino kuphatikiza mautumiki ambiri kukhala chosungira chimodzi ndikupanga ma tag a Docker kuti pasakhale kuyambiranso kosafunika.

Kulemba ndi Git commit

werf ilinso ndi njira yolembera ma tag yolumikizidwa ndi ma Git commits.

Git-commit ndi chizindikiritso cha zomwe zili munkhokwe ya Git ndipo zimatengera mbiri yosinthidwa ya mafayilo munkhokwe ya Git, kotero zikuwoneka zomveka kuzigwiritsa ntchito poyika zithunzi mu Docker Registry.

Komabe, kuyika chizindikiro ndi Git commit kumakhala ndi zovuta zomwezo monga kuyika ma tag a Git kapena ma tag a Git:

  • Kupanga kopanda kanthu kumatha kupangidwa komwe sikusintha mafayilo aliwonse, koma chizindikiro cha Docker cha chithunzicho chidzasinthidwa.
  • Kuphatikiza kutha kupangidwa komwe sikumasintha mafayilo, koma chizindikiro cha Docker cha chithunzicho chidzasinthidwa.
  • Kupanga kutha kupangidwa komwe kumasintha mafayilo omwe ali mu Git omwe sanalowe mu chithunzicho, ndipo chizindikiro cha Docker cha chithunzicho chidzasinthidwanso.

Kuyika dzina la nthambi ya Git sikuwonetsa mtundu wazithunzi

Palinso vuto lina lokhudzana ndi njira yolembera ma tag a nthambi za Git.

Kuyika chizindikiro ndi dzina la nthambi kumagwira ntchito bola zomwe zimaperekedwa panthambiyo zasonkhanitsidwa motsatira nthawi.

Ngati mu dongosolo lomwe lilipo wogwiritsa ntchito ayambanso kumanganso ntchito yakale yolumikizidwa ndi nthambi ina, ndiye kuti werf adzalembanso chithunzicho pogwiritsa ntchito tag yofananira ya Docker yokhala ndi chithunzi chatsopano chomwe chapanga kale. Kutumiza pogwiritsa ntchito chizindikirochi kuyambira pano kumakhala pachiwopsezo chokoka chithunzi chosiyana poyambitsanso ma pod, chifukwa chake pulogalamu yathu idzasiya kulumikizana ndi dongosolo la CI ndikusiyanitsidwa.

Kuphatikiza apo, ndikukankhira motsatizana munthambi imodzi yokhala ndi nthawi yochepa pakati pawo, chopereka chakale chikhoza kupangidwa mochedwa kuposa chatsopanocho: mtundu wakale wa chithunzicho udzachotsa chatsopanocho pogwiritsa ntchito tag ya nthambi ya Git. Mavuto otere amatha kuthetsedwa ndi makina a CI/CD (mwachitsanzo, mu GitLab CI payipi yomalizayo imakhazikitsidwa pazochita zingapo). Komabe, si machitidwe onse omwe amathandizira izi ndipo payenera kukhala njira yodalirika yopewera vuto lalikulu ngati limeneli.

Kodi ma tagging otengera zinthu ndi chiyani?

Chifukwa chake, ma tagging otengera zomwe zili - kuyika zithunzi ndi zomwe zili.

Kuti mupange ma tag a Docker, sizinthu zoyambirira za Git (nthambi ya Git, tag ya Git ...) zomwe zimagwiritsidwa ntchito, koma cheke cholumikizidwa ndi:

  • zomwe zili pachithunzichi. Chithunzi cha ID chikuwonetsa zomwe zili. Pomanga mtundu watsopano, chizindikiritsochi sichidzasintha ngati mafayilo omwe ali pachithunzichi sanasinthe;
  • mbiri yopanga chithunzichi mu Git. Zithunzi zolumikizidwa ndi nthambi zosiyanasiyana za Git komanso mbiri yakale yomanga kudzera pa werf zidzakhala ndi ma ID osiyanasiyana.

Chizindikiro choterechi ndi chomwe chimatchedwa chithunzi siteji siginecha.

Chithunzi chilichonse chimakhala ndi magawo angapo: from, before-install, git-archive, install, imports-after-install, before-setup... git-latest-patch ndi zina. Gawo lirilonse limakhala ndi chizindikiritso chomwe chimawonetsa zomwe zili mkati mwake - siteji siginecha (siginecha ya siteji).

Chithunzi chomaliza, chokhala ndi magawo awa, chimayikidwa ndi zomwe zimatchedwa siginecha ya magawo awa - masiteji siginecha, - zomwe zimakhazikika pamagawo onse azithunzi.

Kwa chithunzi chilichonse kuchokera ku kasinthidwe werf.yaml nthawi zambiri, padzakhala siginecha yake ndipo, motero, tag ya Docker.

Siginecha ya siteji imathetsa mavuto onsewa:

  • Kukana kuchitapo kanthu kwa Git.
  • Resistant to Git imapanga kusintha mafayilo omwe sakugwirizana ndi chithunzicho.
  • Sizimabweretsa vuto lakukonzanso chithunzichi mukayambiranso kumanga kwa ma Git akale a nthambi.

Iyi ndiye njira yovomerezeka yolembera ma tag ndipo ndiyosakhazikika mu werf pamakina onse a CI.

Momwe mungayambitsire ndikugwiritsa ntchito mu werf

Lamulo tsopano lili ndi njira yofananira werf publish: --tag-by-stages-signature=true|false

Mu dongosolo la CI, njira yolembera imatchulidwa ndi lamulo werf ci-env. M'mbuyomu, parameter idafotokozedwa kwa izo werf ci-env --tagging-strategy=tag-or-branch. Tsopano, ngati mufotokoza werf ci-env --tagging-strategy=stages-signature kapena musatchule izi, werf adzagwiritsa ntchito njira yoyika ma tagging mwachisawawa stages-signature. Gulu werf ci-env adzakhazikitsa basi mbendera zofunika lamulo werf build-and-publish (kapena werf publish), kotero palibe zina zowonjezera zomwe ziyenera kufotokozedwa pamalamulo awa.

Mwachitsanzo, lamulo:

werf publish --stages-storage :local --images-repo registry.hello.com/web/core/system --tag-by-stages-signature

...akhoza kupanga zithunzi zotsatirazi:

  • registry.hello.com/web/core/system/backend:4ef339f84ca22247f01fb335bb19f46c4434014d8daa3d5d6f0e386d
  • registry.hello.com/web/core/system/frontend:f44206457e0a4c8a54655543f749799d10a9fe945896dab1c16996c6

ndi 4ef339f84ca22247f01fb335bb19f46c4434014d8daa3d5d6f0e386d ndi siginecha ya magawo a chithunzicho backendndi f44206457e0a4c8a54655543f749799d10a9fe945896dab1c16996c6 - siginecha ya magawo azithunzi frontend.

Mukamagwiritsa ntchito ntchito zapadera werf_container_image ΠΈ werf_container_env Palibe chifukwa chosinthira chilichonse mu Helm templates: izi zimapanga zokha mayina olondola azithunzi.

Kusintha kwachitsanzo mu dongosolo la CI:

type multiwerf && source <(multiwerf use 1.1 beta)
type werf && source <(werf ci-env gitlab)
werf build-and-publish|deploy

Zambiri zokhudzana ndi kasinthidwe zikupezeka muzolemba:

Chiwerengero

  • Njira yatsopano werf publish --tag-by-stages-signature=true|false.
  • Mtengo wosankha watsopano werf ci-env --tagging-strategy=stages-signature|tag-or-branch (ngati sichinatchulidwe, chokhazikika chidzakhala stages-signature).
  • Ngati mudagwiritsa ntchito kale ma tagging a Git commits (WERF_TAG_GIT_COMMIT kapena njira werf publish --tag-git-commit COMMIT), ndiye onetsetsani kuti mwasinthira ku njira yolembera magawo - siginecha.
  • Ndikwabwino kusinthira mwachangu mapulojekiti atsopano ku chiwembu chatsopano cholemba ma taging.
  • Mukasamutsira ku werf 1.1, ndibwino kuti musinthe mapulojekiti akale ku chiwembu chatsopano, koma akale. tag-kapena-nthambi imathandizidwabe.

Kuyika zilembo zozikidwa pazambiri kumathetsa mavuto onse omwe afotokozedwa m'nkhaniyi:

  • Docker tag name resistance to git yopanda kanthu.
  • Kukhazikika kwa dzina la tag ya Docker kupita ku Git kumachita kusintha mafayilo osagwirizana ndi chithunzicho.
  • Sizimabweretsa vuto lakukonzanso mawonekedwe apano a chithunzichi mukangoyambitsanso zomanga zakale za Git kunthambi za Git.

Gwiritsani ntchito! Ndipo musaiwale kutichezera ife pa GitHubkuti mupange vuto kapena kupeza yomwe ilipo, onjezani chowonjezera, pangani PR kapena kungoyang'ana momwe polojekiti ikuyendera.

PS

Werenganinso pa blog yathu:

Source: www.habr.com

Kuwonjezera ndemanga