Dhibaatada "xariif" nadiifinta sawirada weelka iyo xalkeeda werf

Dhibaatada "xariif" nadiifinta sawirada weelka iyo xalkeeda werf

Maqaalku wuxuu ka hadlayaa dhibaatooyinka nadiifinta sawirada ee ku urura diiwaannada weelka (Docker Registry iyo analogues) ee xaqiiqooyinka casriga ah ee dhuumaha CI / CD ee codsiyada waddaniga ah ee daruuriga ah ee la geeyo Kubernetes. Shuruudaha ugu muhiimsan ee ku habboonaanta sawirada iyo dhibaatooyinka ka dhasha otomaatiga nadiifinta, badbaadinta booska iyo buuxinta baahiyaha kooxaha ayaa la bixiyaa. Ugu dambeyntii, annagoo adeegsanayna tusaale mashruuc il furan oo gaar ah, waxaan kuu sheegi doonnaa sida dhibaatooyinkan looga gudbi karo.

Horudhac

Tirada sawirada ku jirta diiwaanka weelka ayaa si degdeg ah u kori kara, iyada oo qaadanaysa meel badan oo kaydin ah oo sidaas awgeed si weyn u kordhinaysa kharashkeeda. Si loo xakameeyo, loo xaddido ama loo ilaaliyo korriinka la aqbali karo ee booska ku jira diiwaanka, waa la aqbalayaa:

  1. isticmaal tiro go'an oo calaamado ah sawirada;
  2. u nadiifi sawirada si uun.


Xaddidaadda ugu horreysa mararka qaarkood waa la aqbali karaa kooxaha yaryar. Haddii horumariyayaashu haystaan ​​calaamado joogto ah oo ku filan (latest, main, test, boris iwm.), Diiwaangelintu ma barari doonto cabbirka iyo waqti dheer uma baahnid inaad ka fikirto nadiifinta gabi ahaanba. Ka dib oo dhan, dhammaan sawirada aan khusayn waa la tirtiraa, oo ma jiraan wax shaqo ah oo ka hadhay nadiifinta (wax walba waxaa sameeya qashin-qaadiyaha caadiga ah).

Si kastaba ha ahaatee, habkan ayaa si weyn u xaddidaya horumarka oo waa dhif in lagu dabaqo mashaariicda casriga ah ee CI/CD. Qayb muhiim ah oo ka mid ah horumarka waxay ahayd automation, kaas oo kuu ogolaanaya inaad tijaabiso, geyso oo aad si dhakhso leh u gaarsiiso isticmaalayaasha hawlqabad cusub. Tusaale ahaan, dhammaan mashaariicdayada, dhuumaha CI si toos ah ayaa loo abuuray iyada oo la raacayo ballan kasta. Waxaa ku jira, sawirka waa la soo ururiyey, la tijaabiyey, loo soo rogay wareegyada kala duwan ee Kubernetes si loogu saxo iyo jeegaga haray, iyo haddii dhammaan ay wanaagsan yihiin, isbeddeladu waxay gaaraan isticmaalaha ugu dambeeya. Oo tani mar dambe maaha sayniska gantaalaha, laakiin dhacdo maalinle ah oo badan - waxay u badan tahay adiga, maadaama aad akhrinayso maqaalkan.

Maaddaama hagaajinta dhiqlaha iyo horumarinta shaqeynta cusub ay si isku mid ah u socdaan, iyo sii deynta ayaa la samayn karaa dhowr jeer maalintii, waxaa muuqata in habka horumarinta ay la socdaan tiro badan oo ballanqaad ah, taas oo macnaheedu yahay. tiro badan oo sawirro ah oo ku jira diiwaanka. Natiijo ahaan, arrinta abaabulka nadiifinta wax ku oolka ah ee diiwaanka ayaa soo baxda, i.e. ka saarida sawirada aan khusayn.

Laakiin sidee xitaa u go'aamin kartaa in sawirku khuseeyo?

Shuruudaha ku habboonaanta sawirka

Inta badan kiisaska, shuruudaha ugu muhiimsan waxay noqon doonaan:

1. Midka ugu horreeya (ka ugu cad iyo ugu dhaleecaynta badan dhammaan) waa sawirada hadda lagu isticmaalo Kubernetes. Ka saarida sawiradan waxay keeni kartaa kharashyo wax soo saar oo la taaban karo (tusaale ahaan, sawirada waxaa laga yaabaa in loo baahdo si loogu celceliyo) ama waxay diidaan dadaalka kooxdu ay ku saxayaan mid ka mid ah wareegyada. (Sababtan awgeed waxaan xitaa u samaynay mid gaar ah dhoofiyaha Prometheus, kaas oo la socda maqnaanshaha sawirada noocaas ah ee kutlada Kubernetes.)

2. Labaad (ka yar cad, laakiin sidoo kale aad u muhiim ah oo mar kale la xidhiidha dhiig-miirashada) - images in loo baahan yahay in dib loo rogo haddii la ogaado dhibaatooyin halis ah nooca hadda jira. Tusaale ahaan, marka laga hadlayo Helm, kuwani waa sawirro loo adeegsaday noocyada la keydiyay ee sii deynta. (Jidka ahaan, sida caadiga ah ee Helm xadka waa 256 dib u eegis, laakiin uma badna in qof runtii u baahan yahay inuu badbaadiyo sida a tiro badan oo noocyo ah?...) Ka dib oo dhan, annaga, gaar ahaan, waxaan ku kaydinnaa noocyada si aan u isticmaali karno hadhow, i.e. "dib ugu rog" iyaga haddii loo baahdo.

3. Saddexaad - baahiyaha horumariya: Dhammaan sawirada la xidhiidha shaqadooda hadda. Tusaale ahaan, haddii aan tixgelineyno PR, markaa waxaa macquul ah in laga tago sawir u dhigma ballan-qaadkii ugu dambeeyay iyo, waxaad dhahdaa, ballan-qaadkii hore: habkan horumariyuhu wuxuu si dhakhso ah ugu soo laaban karaa hawl kasta oo wuxuu la shaqeyn karaa isbeddelladii ugu dambeeyay.

4. Afaraad - sawirada in waafaqsan noocyada codsigayaga, i.e. yihiin alaabta kama dambaysta ah: v1.0.0, 20.04.01/XNUMX/XNUMX, sierra, iwm.

FG: Shuruudaha halkan lagu qeexay waxaa la dejiyay iyadoo lagu salaynayo waayo-aragnimada la falgalka daraasiin kooxeed horumarineed oo ka kala socda shirkado kala duwan. Si kastaba ha noqotee, dabcan, iyada oo ku xidhan waxyaabaha gaarka ah ee hababka horumarinta iyo kaabayaasha loo isticmaalo (tusaale ahaan, Kubernetes lama isticmaalo), shuruudahani way kala duwanaan karaan.

U qalmida iyo xalalka jira

Adeegyada caanka ah ee leh diiwaannada weelka, sida caadiga ah, waxay bixiyaan siyaasado nadiifin muuqaalkooda: iyaga waxaad ku qeexi kartaa shuruudaha hoos yimaada calaamadda laga saaray diiwaanka. Si kastaba ha ahaatee, shuruudahan waxaa xaddiday xuduudaha sida magacyada, waqtiga abuurista, iyo tirada tags*.

* Waxay kuxirantahay hirgelinta diiwaan gelinta weelka gaarka ah. Waxaan tixgelinay suurtagalnimada xalalka soo socda: Azure CR, Docker Hub, ECR, GCR, GitHub Xirmooyinka, GitLab Container Registry, Diiwaanka Harbor, JFrog Artifctory, Quay.io - laga bilaabo Sebtembar'2020.

Xaddigan xaddidan ayaa ku filan in lagu qanciyo shuruudaha afraad - taas oo ah, in la doorto sawirro u dhigma noocyada. Si kastaba ha ahaatee, dhammaan shuruudaha kale, qofku waa inuu doorto nooc ka mid ah xal-u-heshiisiinta (mid adag ama, liddi ku ah, siyaasad dabacsan) - taas oo ku xidhan filashada iyo awoodaha maaliyadeed.

Tusaale ahaan, shuruudaha saddexaad - ee la xidhiidha baahiyaha horumariyeyaasha - waxaa lagu xallin karaa iyada oo la abaabulo habraacyada kooxaha dhexdooda: magac-bixin gaar ah oo sawirro ah, ilaalinta liisaska oggolaanshaha gaarka ah iyo heshiisyada gudaha. Laakiin ugu dambeyntii waxay weli u baahan tahay in si otomaatig ah loo sameeyo. Iyo haddii awoodaha xalalka diyaarka ah aysan ku filneyn, waa inaad sameysid wax adiga kuu gaar ah.

Xaaladda labada shuruudood ee ugu horreeya waa isku mid: kuma qancin karaan iyaga oo aan helin xogta nidaamka dibadda - midda codsiyada la geeyo (xaaladkeena, Kubernetes).

Sawirka socodka shaqada ee Git

Aynu nidhaahno waxaad ka shaqaynaysaa wax sidan oo kale ah gudaha Git:

Dhibaatada "xariif" nadiifinta sawirada weelka iyo xalkeeda werf

Astaanta madaxa ku leh jaantusku waxay tusinaysaa sawirada weelka hadda la geeyey Kubernetes isticmaale kasta ( isticmaalayaasha dhamaadka, tijaabiyaasha, maareeyayaasha, iwm.) ama ay u isticmaalaan horumariyayaashu si ay wax u gooyaan iyo ujeedooyin la mid ah.

Maxaa dhacaya haddii siyaasadaha nadiifinta ay ogolaadaan kaliya in sawirada la hayo (aan la tirtirin) magacyo tag loo bixiyay?

Dhibaatada "xariif" nadiifinta sawirada weelka iyo xalkeeda werf

Sida iska cad, muuqaalkan oo kale qofna kama farxi doono.

Maxaa isbeddeli doona haddii siyaasaduhu oggolaadaan in sawirrada aan la tirtirin? iyadoo loo eegayo inta u dhaxeeysa waqtiga la siiyay / tirada dembiyada ugu dambeeya?

Dhibaatada "xariif" nadiifinta sawirada weelka iyo xalkeeda werf

Natiijadu waxay noqotay mid aad u wanaagsan, laakiin weli way ka fog tahay ku habboonaanta. Ka dib oo dhan, waxaan wali haysanaa horumariyayaal u baahan muuqaalada diiwaanka (ama xitaa la geeyo K8s) si ay u xalliyaan dhiqlaha

Si loo soo koobo xaaladda suuqa ee hadda jirta: shaqooyinka laga heli karo diiwaannada weelasha ma bixiyaan dabacsanaan ku filan marka la nadiifinayo, iyo sababta ugu weyn ee tani waa ma jirto si aad ula falgasho dunida dibadda. Waxaa soo baxday in kooxaha u baahan dabacsanaantan oo kale ay ku qasban yihiin inay si madaxbannaan u hirgeliyaan tirtirka sawirka "dibadda", iyagoo isticmaalaya Docker Registry API (ama API-ga asalka ah ee hirgelinta u dhigma).

Si kastaba ha ahaatee, waxaan raadineynay xal caalami ah oo otomaatig u ah nadiifinta sawirka kooxo kala duwan iyadoo la adeegsanayo diiwaanno kala duwan ...

Waddadayada nadiifinta sawirka caalamiga ah

Halkee bay baahidani ka timi? Xaqiiqdu waxay tahay in aynaan ahayn koox gaar ah oo horumariyayaal ah, laakiin koox u adeegta qaar badan oo iyaga ka mid ah hal mar, oo gacan ka geysanaysa in si buuxda loo xalliyo arrimaha CI/CD. Iyo aaladda ugu weyn ee farsamada tani waa utility Isha Furan werf. Gaar ahaanteeda ayaa ah in aysan qaban hal shaqo, laakiin ay la socoto hababka gaarsiinta joogtada ah ee dhammaan heerarka: laga bilaabo isu imaatinka ilaa geynta.

Daabacaada sawirada diiwaanka* (isla markiiba ka dib marka la dhiso) waa shaqo cad oo utility ah. Oo tan iyo markii sawirada halkaas lagu meeleeyo kaydinta, ka dibna - haddii kaydintaadu aanay ahayn mid aan xadidnayn - waxaad u baahan tahay inaad masuul ka noqoto nadiifintooda xigta. Sida aan ku gaadhnay guusha tan, anagoo buuxinayna dhammaan shuruudaha la cayimay, ayaa si dheeraad ah looga hadli doonaa.

* In kasta oo diiwaan-gelintu laftoodu ka duwanaan karaan (Docker Registry, GitLab Container Registry, Harbor, iwm.), isticmaalayaashu waxay la kulmaan dhibaatooyin isku mid ah. Xalka caalamiga ah ee kiiskeena kuma xirna hirgelinta diiwaanka, sababtoo ah Waxay ka shaqeeyaan meel ka baxsan diiwaanka laftooda oo waxay siiyaan dabeecad isku mid ah qof kasta.

In kasta oo aan u isticmaalno werf tusaale ahaan hirgelinta, waxaan rajeyneynaa in hababka la isticmaalo ay faa'iido u yeelan doonaan kooxaha kale ee ay la kulmaan dhibaatooyinka la midka ah.

Markaa waanu mashquulnay dibadda hirgelinta habka nadiifinta sawirada - halkii laga heli lahaa awoodaha horay loogu dhisay diiwaannada weelasha. Talaabada ugu horeysa waxay ahayd in la isticmaalo Docker Registry API si loo abuuro siyaasado hore oo isku mid ah tirada tags iyo wakhtiga abuurkooda (kor lagu sheegay). Lagu daray iyaga liiska oggolaanshaha ku salaysan sawirada loo isticmaalo kaabayaasha la geeyay, i.e. Kubernetes. Midda dambe, way ku filnayd in la isticmaalo Kubernetes API si loo qiyaaso dhammaan agabka la diray oo aad u hesho liiska qiyamka image.

Xalkan aadka u yar wuxuu xalliyay dhibaatada ugu daran (Summadaha No. 1), laakiin wuxuu ahaa kaliya bilawga safarkayaga si aan u wanaajino habka nadiifinta. Talaabada xigta - oo aad uga xiiso badan - waxay ahayd go'aanka ku xidho sawirada la daabacay taariikhda Git.

Nidaamyada calaamadaynta

Si aan u bilowno, waxaan dooranay hab kaas oo sawirka kama dambaysta ah uu ku kaydiyo macluumaadka lagama maarmaanka u ah nadiifinta, oo aan ku dhisnay habka qorshooyinka calaamadaynta. Marka uu daabacayo sawirka, isticmaaluhu waxa uu doortay door sumad gaar ahgit-branch, git-commit ama git-tag) oo loo adeegsaday qiimaha u dhigma. Nidaamyada CI, qiyamkan waxaa si toos ah loo dejiyay iyadoo lagu saleynayo doorsoomayaasha deegaanka. Dhab ahaan sawirka kama dambaysta ah waxa uu la xidhiidhay Git hore oo gaar ah, kaydinta xogta lagama maarmaanka u ah nadiifinta calaamadaha.

Habkani wuxuu keenay siyaasado u oggolaanaya Git in loo isticmaalo isha keliya ee runta:

  • Marka la tirtirayo laan/tag ku taal Git, sawirada la xidhiidha diiwaanka ayaa si toos ah loo tirtiray.
  • Tirada sawirada ee la xidhiidha tags Git iyo samaynta waxa lagu xakamayn karaa tirada tags ee loo adeegsaday qorshaha la xushay iyo wakhtiga la sameeyay go'aanka la xidhiidha.

Guud ahaan, hirgalinta ka dhalatay ayaa qancisay baahiyaheena, laakiin caqabad cusub ayaa dhawaan ina sugaysay. Xaqiiqdu waxay tahay in markii la isticmaalaynay nidaamyada calaamadaynta ee ku saleysan Git primitives, waxaan la kulannay dhowr cilladood. (Maadaama ay tilmaantoodu ka baxsan tahay xadka maqaalkan, qof kastaa wuu baran karaa faahfaahinta halkan.) Sidaa darteed, annagoo go'aansannay inaan u beddelno hab wax ku ool ah oo lagu calaamadiyo (tagging-based content), waa inaan dib u eegno hirgelinta nadiifinta sawirka.

Algorithm cusub

Waa maxay sababtu? Calaamadaynta ku salaysan nuxurka, sumad kasta waxay ku qancin kartaa ballanqaadyo badan oo Git ah. Markaad nadiifinayso sawirada, ma malayn kartid oo keliya laga bilaabo ballan-qaadkii meesha summada cusub lagu daray diiwaanka.

Algorithm-ka nadiifinta cusub, waxaa la go'aamiyay in laga guuro nidaamyada calaamadaynta oo la dhiso habka meta-image, mid kasta oo ka mid ah wuxuu kaydiyaa farabadan:

  • Ballanqaadka daabacaadda lagu sameeyay (ma laha in sawirka lagu daray, la beddelay ama uu ku sii jiro diiwaanka haamaha);
  • iyo aqoonsigayaga gudaha ee u dhigma sawirka la ururiyey.

Si kale haddii loo dhigo, waa la bixiyay isku xidhka tagsyada la daabacay oo leh ballanqaadyada Git.

Qaabeynta kama dambaysta ah iyo algorithm guud

Marka la habeynayo nadiifinta, isticmaalayaashu hadda waxay marin u heli karaan siyaasadaha dooranaya sawirada hadda jira. Siyaasad kasta oo noocaas ah waa la qeexay:

  • tixraacyo badan, i.e. Git tags ama laamaha Git ee la isticmaalo inta lagu jiro iskaanka;
  • iyo xadka sawirada la raadiyay ee tixraac kasta oo ka mid ah set.

Si loo qeexo, kani waa waxa qaabaynta siyaasada caadiga ahi ay u bilaabatay u ekaado:

cleanup:
  keepPolicies:
  - references:
      tag: /.*/
      limit:
        last: 10
  - references:
      branch: /.*/
      limit:
        last: 10
        in: 168h
        operator: And
    imagesPerReference:
      last: 2
      in: 168h
      operator: And
  - references:  
      branch: /^(main|staging|production)$/
    imagesPerReference:
      last: 10

Qaabayntani waxa ay ka kooban tahay saddex siyaasadood oo raacaya xeerarka soo socda:

  1. Ku keydi sawirka 10-kii ugu dambeeyay ee Git tags (taariikhda abuuritaanka sumadda).
  2. U keydi wax aan ka badneyn 2 sawir oo la daabacay usbuucii hore in aan ka badneyn 10 taxane oo waxqabadyo ah usbuucii la soo dhaafay.
  3. U keydi 10 sawir laamaha main, staging ΠΈ production.

Algorithm-ka kama dambaysta ah wuxuu hoos ugu dhacayaa tallaabooyinka soo socda:

  • Ka soo saarida caddaynta diiwaanka weelka
  • Marka laga reebo sawirada lagu isticmaalo Kubernetes, sababtoo ah Horay ayaanu u dooranay anagoo codbixinayna K8s API.
  • Baadhitaanka taariikhda Git iyo ka saarida sawirada ku salaysan siyaasadaha cayiman.
  • Ka saarida sawirada haray

Haddaan u soo noqonno tusaalaheenna, tani waa waxa ku dhaca werf:

Dhibaatada "xariif" nadiifinta sawirada weelka iyo xalkeeda werf

Si kastaba ha noqotee, xitaa haddii aadan isticmaalin werf, hab la mid ah nadiifinta muuqaalka sare - mid ka mid ah hirgelinta ama mid kale (sida waafaqsan habka la doorbido ee calaamadaynta sawirka) - ayaa lagu dabaqi karaa nidaamyada / adeegyada kale. Si tan loo sameeyo, waa ku filan inaad xasuusato dhibaatooyinka soo baxa oo aad ka heshid fursadahaas xirmooyinkaaga kuwaas oo kuu ogolaanaya inaad xalkooda u dhexgeliso sida ugu macquulsan. Waxaan rajeyneynaa in wadada aan soo marnay ay kaa caawin doonto inaad ku eegto kiiskaaga gaarka ah faahfaahin iyo fikrado cusub.

gunaanad

  • Mar dhow ama hadhow, kooxaha badankoodu waxay la kulmaan dhibaatada buuxdhaafka diiwaangelinta.
  • Markaad raadineyso xalalka, marka hore waa lagama maarmaan in la go'aamiyo shuruudaha ku habboonaanta sawirka.
  • Aaladaha ay bixiyaan adeegyada diiwaan gelinta weelka caanka ah waxay kuu oggolaanayaan inaad abaabusho nadiifin aad u fudud oo aan ku xisaabtamin "adduunka dibadda": sawirada loo isticmaalo Kubernetes iyo waxyaabaha gaarka ah ee shaqada kooxda.
  • Algorithm-ka dabacsan oo hufan waa inuu lahaadaa fahamka hababka CI/CD oo aan ku shaqayn oo keliya xogta sawirka Docker.

PS

Sidoo kale ka akhri boggayaga:

Source: www.habr.com

Add a comment