Summadaynta ku salaysan nuxurka ee ururiyaha werf: sababta iyo sidee ayay u shaqeysaa?

Summadaynta ku salaysan nuxurka ee ururiyaha werf: sababta iyo sidee ayay u shaqeysaa?

werf waa ishayada furan ee GitOps CLI utility ee dhisitaanka iyo gaarsiinta codsiyada Kubernetes. IN sii daayo v1.1 sifo cusub ayaa lagu soo bandhigay sawir qaadaha: ku calaamadaynta sawirada nuxur ahaan ama calaamad ku salaysan nuxurka. Ilaa hadda, nidaamka calaamadaynta caadiga ah ee werf waxay ku lug lahayd sumadaynta sawirada Docker ee Git tag, laanta Git ama Git ballan. Laakiin dhammaan nidaamyadani waxay leeyihiin faa'iido darrooyin ay si buuxda u xalliyeen istiraatiijiyadda cusub ee calaamadaynta. Faahfaahinta ku saabsan iyo sababta ay u wanaagsan tahay ayaa hoos ku qoran.

Ka soo saaraya adeeg-yar oo adeeg-yar oo hal kayd Git ah

Xaaladdu waxay badanaa dhacdaa marka codsiga loo qaybiyo adeegyo badan oo badan ama ka yar oo madaxbannaan. Siidaynta adeegyadani waxay u dhici kartaa si madax banaan: hal ama dhawr adeeg ayaa la sii dayn karaa markiiba, inta soo hadhayna waa inay sii wadaan shaqada iyada oo aan wax isbeddel ahi dhicin. Laakiin marka laga eego aragtida kaydinta koodhka iyo maaraynta mashruuca, way ku habboon tahay in lagu hayo adeegyada codsiga noocaas ah hal kayd.

Waxaa jira xaalado marka adeegyadu ay run ahaantii madax bannaan yihiin oo aan lala xiriirin hal codsi. Xaaladdan oo kale, waxay ku yaalliin mashruucyo gaar ah waxaana sii deyntooda lagu fulin doonaa hababka CI/CD ee kala duwan ee mashruuc kasta.

Si kastaba ha ahaatee, xaqiiqda, horumariyayaashu waxay inta badan u qaybiyaan hal codsi oo u kala qaybiya dhowr adeeg yar yar, laakiin abuurista kayd iyo mashruuc gaar ah mid kasta... waa xad-dhaaf cad. Waa xaaladdan tan si dheeraad ah looga hadli doono: dhowr adeeg oo yaryar oo noocan oo kale ah waxay ku yaalliin hal mashruuc oo kayd ah oo sii deyntu waxay ku dhacdaa hal nidaam oo CI/CD ah.

Ku calaamadaynta laanta Git iyo Git tag

Aynu nidhaahno istaraatijiyad calaamadaynta ugu caansan ayaa la isticmaalaa - tag-ama-laan. Laamaha Git, sawirada waxaa lagu calaamadiyay magaca laanta, hal laan markiiba waxaa jira hal sawir oo la daabacay oo magaca laantaas ah. Calaamadaha Git, sawirada waxaa lagu calaamadeeyay si waafaqsan magaca sumadda.

Marka sumad cusub oo Git ah la sameeyo-tusaale ahaan, marka nooc cusub la sii daayo β€” sumadda cusub ee Docker ayaa loo abuuri doonaa dhammaan sawirada mashruuca ee ku jira Diiwaanka Docker:

  • 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

Magacyadan cusub ee sawirka waxa loo sii maraa jaantusyada Helm qaabaynta Kubernetes. Marka la bilaabayo geynta amarka werf deploy garoonka waa la cusbooneysiiyay image gudaha Kubernetes ilaha ayaa muujinaya oo dib u bilaabaya ilaha u dhigma sababtoo ah magaca sawirka la beddelay.

dhibaato: kiiska marka, dhab ahaantii, waxa ku jira sawirku isma beddelin tan iyo soo-bandhiggii hore (Git tag), laakiin kaliya sumaddeeda Docker, tani way dhacdaa. xad dhaaf ah dib u bilaabida codsigan iyo, sidaas awgeed, xoogaa wakhti dhimis ah ayaa suurtagal ah. In kasta oo aysan jirin sabab dhab ah oo dib loo bilaabo.

Natiijo ahaan, nidaamka calaamadaynta ee hadda jira waxaa lagama maarmaan ah in la xayndaabyo dhowr kayd oo Git ah oo kala duwan dhibaataduna waxay ka dhalataa abaabulka soo-bandhigista meelahan dhowrka ah. Guud ahaan, nidaamka noocan oo kale ah wuxuu u soo baxaa inuu yahay mid culus oo adag. Way fiicantahay in la isku daro adeegyo badan hal meel oo kayd ah oo la abuuro Docker tags si aanay dib u bilaabmin aan loo baahnayn.

Ku calaamadaynta Git

werf sidoo kale waxay leedahay istaraatijiyad sumadaynta ah oo la xidhiidha Git.

Git-commit waa tilmaame loogu talagalay waxa ku jira kaydka Git waxayna ku xidhan tahay taariikhda wax ka beddelka faylalka ku jira kaydka Git, marka waxay u muuqataa macquul in loo isticmaalo calaamadaynta sawirada Diiwaanka Docker.

Si kastaba ha ahaatee, ku calaamadaynta Git ballan waxay leedahay faa'iidooyin la mid ah sida ku calaamadinta laamaha Git ama Git tags:

  • Ballanqaad madhan ayaa la abuuri karaa oo aan beddelin wax faylal ah, laakiin summada Docker ee sawirka waa la beddeli doonaa.
  • Ballanqaad isku-dhafan ayaa la abuuri karaa oo aan beddelin faylasha, laakiin summada Docker ee sawirka waa la beddeli doonaa.
  • Ballanqaad ayaa la samayn karaa oo beddela faylashaas Git ee aan la soo gelin sawirka, iyo summada Docker ee sawirka mar kale ayaa la beddeli doonaa.

Ku calaamadaynta magaca laanta Git kama tarjumayso nooca sawirka

Waxaa jirta dhibaato kale oo la xiriirta istaraatiijiyadda calaamadeynta laamaha Git.

Ku calaamadaynta magaca laanta waxay shaqeysaa ilaa inta wax-qabadyada laantaas loo uruurinayo si isdaba joog ah siday u kala horreeyaan.

Haddii nidaamka hadda jira isticmaaluhu uu bilaabo dib-u-dhiska ballanqaad hore oo la xidhiidha laan gaar ah, markaa werf ayaa dib u qori doona sawirka isagoo isticmaalaya summada Docker ee u dhigma oo leh nooc cusub oo sawirka loo dhisay ballan-qaadkii hore. Hawlgelinta la isticmaalayo summadan hadda ka dib waxay halis u tahay inay jiidato nooc ka duwan sawirka marka dib loo bilaabo pods-ka, taas oo ay sabab u tahay codsigayagu wuxuu lumin doonaa xidhiidhka nidaamka CI oo uu noqdo mid aan kala sooc lahayn.

Intaa waxaa dheer, iyada oo la riixayo isku xigxiga hal laan oo leh wakhti gaaban oo u dhexeeya iyaga, ballan-qaadkii hore ayaa laga yaabaa in la ururiyo ka dib kan cusub: nuqulkii hore ee sawirka ayaa ku qori doona kan cusub iyadoo la adeegsanayo laanta Git. Dhibaatooyinkan oo kale waxaa lagu xallin karaa nidaamka CI/CD (tusaale ahaan, gudaha GitLab CI dhuumaha kan dambe ayaa loo bilaabay taxane taxane ah). Si kastaba ha ahaatee, dhammaan nidaamyada ma taageeraan tan waana in ay jirto hab la isku halayn karo oo looga hortagi karo dhibaatada aasaasiga ah.

Waa maxay calaamadaynta ku salaysan nuxurka?

Haddaba, waa maxay calaamadaynta ku salaysan nuxurka - ku calaamadaynta sawirada nuxur ahaan.

Si loo abuuro summada Docker, ma aha Git primitives (Git laan, Git tag...) kuwa la isticmaalo, laakiin xisaab hubin la xidhiidha:

  • nuxurka sawirka. Summada aqoonsiga sawirka ayaa ka tarjumaysa waxa ku jira. Marka la dhisayo nooc cusub, aqoonsigani ma beddeli doono haddii faylasha sawirka ku jira aanay isbeddelin;
  • taariikhda abuurista sawirkan gudaha Git. Sawirada la xidhiidha laamaha Git ee kala duwan iyo taariikhda dhismaha ee kala duwan ee werf waxay yeelan doonaan calaamado aqoonsi oo kala duwan.

Calaamadda aqoonsiga noocan oo kale ah waa waxa loogu yeero saxiixa marxaladda sawirka.

Sawir kastaa wuxuu ka kooban yahay heerar kala duwan: from, before-install, git-archive, install, imports-after-install, before-setup... git-latest-patch iwm. Marxalad kastaa waxay leedahay tilmaame ka tarjumaysa waxa ku jira - saxiixa marxaladda (saxiixa marxaladda).

Sawirka kama dambaysta ah, oo ka kooban marxaladahan, waxaa lagu calaamadeeyay waxa loogu yeero saxiixa marxaladahaan - saxiixa marxaladaha, - taas oo ah mid guud dhammaan heerarka sawirka.

Wixii sawir kasta ka qaabeynta werf.yaml Xaaladda guud, waxaa jiri doona saxiix u gaar ah iyo, si waafaqsan, sumadda Docker.

Saxiixa marxaladda ayaa xaliya dhammaan dhibaatooyinkan:

  • U adkaysta faaruqinta Git.
  • Iska caabbinta Git waxay ku kacaysaa beddelka faylasha aan khusayn sawirka.
  • Ma keenayso dhibaatada dib-u-habaynta nooca hadda jirta ee sawirka marka dib loo bilaabo wax u dhisa Git-kii hore ee laanta.

Tani hadda waa istaraatiijiyada calaamadaynta ee lagu taliyey waana ta ugu habboon dhammaan nidaamyada CI.

Sida loo awoodo oo loogu isticmaalo werf

Amarka hadda wuxuu leeyahay ikhtiyaar u dhigma werf publish: --tag-by-stages-signature=true|false

Nidaamka CI, istaraatijiyad calaamadaynta waxaa lagu qeexay amarka werf ci-env. Markii hore, halbeegga ayaa loo qeexay werf ci-env --tagging-strategy=tag-or-branch. Hadda, haddii aad sheegto werf ci-env --tagging-strategy=stages-signature ama ha qeexin doorashadan, werf waxay isticmaali doontaa istaraatijiyad calaamadaynta si caadi ah stages-signature. Kooxda werf ci-env waxay si toos ah u dejin doontaa calanka lagama maarmaanka u ah amarka werf build-and-publish (ama werf publish), markaa uma baahnid doorashooyin dheeraad ah in loo cayimo amaradan.

Tusaale ahaan, amarka:

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

... wuxuu samayn karaa sawirada soo socda:

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

waa 4ef339f84ca22247f01fb335bb19f46c4434014d8daa3d5d6f0e386d waa saxeexa marxaladaha sawirka backendiyo f44206457e0a4c8a54655543f749799d10a9fe945896dab1c16996c6 - saxiixa marxaladaha sawirka frontend.

Marka la isticmaalayo hawlo gaar ah werf_container_image ΠΈ werf_container_env Looma baahna in wax laga beddelo qaab-dhismeedka Helm: hawlahani waxay si toos ah u soo saari doonaan magacyada sawirka saxda ah.

Tusaale qaabaynta nidaamka CI:

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

Macluumaad dheeraad ah oo ku saabsan qaabeynta ayaa laga heli karaa dukumeentiyada:

Wadarta

  • Doorasho cusub werf publish --tag-by-stages-signature=true|false.
  • Qiimaha cusub ee doorashada werf ci-env --tagging-strategy=stages-signature|tag-or-branch (haddii aan la cayimin, default ayaa noqon doona stages-signature).
  • Haddii aad hore u isticmaashay ikhtiyaarka calaamadaynta ee Gitfuls (WERF_TAG_GIT_COMMIT ama doorasho werf publish --tag-git-commit COMMIT), dabadeed hubi inaad u beddesho xeeladda calaamadaynta marxaladaha-saxiixa.
  • Way fiicantahay in isla markiiba loo beddelo mashruucyo cusub nidaamka calaamadaynta cusub.
  • Markaad u wareejinayso werf 1.1, waxaa lagu talinayaa in loo beddelo mashruucyadii hore nidaamka cusub ee calaamadaynta, laakiin kii hore. tag-ama-laan weli waa la taageersan yahay.

Calaamadaynta ku salaysan nuxurka waxay xallisaa dhammaan dhibaatooyinka lagu xusay maqaalka:

  • Docker sumad u caabbinta magaca Git ee madhan.
  • Adkeysiga magaca sumadda Docker ee Git waxay ku kacaysaa beddelka faylasha aan khusayn sawirka.
  • Ma keenayso dhibaatada dib-u-habaynta nooca hadda jirta ee sawirka marka dib loo bilaabo wax udhisyo hore Git oo u go'ay laamaha Git.

Adeegso! Oo ha iloobin inaad nagu soo booqato GitHubsi aad u abuurto arrin ama mid jirta u hesho, ku darso wax lagu daray, abuurto PR ama si fudud u daawato horumarka mashruuca.

PS

Sidoo kale ka akhri boggayaga:

Source: www.habr.com

Add a comment