Ko te raruraru o te horoi "atamai" o nga whakaahua ipu me tona otinga i roto i te werf

Ko te raruraru o te horoi "atamai" o nga whakaahua ipu me tona otinga i roto i te werf

Ko te tuhinga e korero ana mo nga raruraru o te horoi i nga whakaahua e kohia ana i roto i nga rehita ipu (Docker Registry me ona analogues) i roto i nga ahuatanga o nga pipeline CI/CD hou mo nga tono taketake kapua kua tukuna ki a Kubernetes. Ko nga paearu matua mo te whai kiko o nga whakaahua me nga uaua ka puta ki te horoi aunoa, te penapena waahi me te whakatutuki i nga hiahia o nga roopu. Ka mutu, ma te whakamahi i te tauira o tetahi kaupapa Open Source motuhake, ka korerotia e matou ki a koe me pehea e taea ai enei raruraru.

Whakataki

Ko te maha o nga whakaahua kei roto i te rehita ipu ka tere te tipu, ka nui ake te waahi rokiroki ka nui ake te utu. Ki te whakahaere, ki te whakawhāiti, ki te pupuri ranei i te tipu pai o te waahi kei roto i te rehitatanga, ka whakaaetia:

  1. whakamahia te maha o nga tohu mo nga whakaahua;
  2. horoia nga whakaahua i etahi huarahi.


Ko te here tuatahi i etahi wa ka whakaaetia mo nga roopu iti. Mēnā he nui ngā tūtohu pūmau a ngā kaiwhakawhanake (latest, main, test, boris me etahi atu), kaore te rehita e pupuhi i te rahi me te wa roa kaore koe e whai whakaaro ki te horoi i te katoa. I muri i nga mea katoa, ka murua nga whakaahua koretake katoa, karekau he mahi e toe ana mo te horoi (ka mahia nga mea katoa e te kaikohi paru noa).

Heoi, ko tenei huarahi ka tino whakawhäiti i te whanaketanga, a, he uaua ki te whakamahi ki nga kaupapa CI/CD hou. Ko tetahi waahanga nui o te whanaketanga aunoatanga, ka taea e koe te whakamatautau, te tohatoha me te tuku mahi hou ki nga kaiwhakamahi tere ake. Hei tauira, i roto i a maatau kaupapa katoa, ka hanga aunoa he paipa CI me ia mahi. I roto, ka whakahiatohia te ahua, ka whakamatauria, ka hurihia ki nga momo iahiko Kubernetes mo te patuiro me te toenga arowhai, a ki te pai nga mea katoa, ka tae nga huringa ki te kaiwhakamahi mutunga. A ehara tenei i te putaiao roketi, engari he mahi ia ra mo te tini - maau pea, na te mea kei te panui koe i tenei tuhinga.

I te mea ko te whakatika i nga pepeha me te whakawhanake i nga mahi hou ka mahia i roto i te whakarara, a ka taea te whakaputa i nga wa maha i ia ra, ka kitea ko te mahi whakawhanaketanga e haere tahi ana me te maha o nga mahi, ko te tikanga. he maha nga whakaahua kei roto i te rehita. Ko te mutunga, ka puta ake te take mo te whakarite horoi pai o te rehita, i.e. te tango i nga whakaahua koretake.

Engari me pehea e whakatau ai mena he tika te ahua?

Paearu mo te whaitake o te ahua

I roto i te nuinga o nga keehi, ko nga paearu matua ko:

1. Ko te tuatahi (ko te mea tino kitea me te tino whakahee o nga mea katoa) ko nga whakaahua e whakamahia ana i tenei wa i Kubernetes. Ko te tango i enei whakaahua ka nui te utu mo te wa whakangao (hei tauira, ka hiahiatia pea nga whakaahua mo te tukurua) ka whakakore ranei i nga mahi a te roopu ki te patuiro i tetahi o nga koropiko. (Mo tenei take i hanga e matou he kaupapa motuhake Prometheus kaihoko, e whai ana i te korenga o aua whakaahua i roto i tetahi huinga Kubernetes.)

2. Tuarua (he iti ake te kitea, engari he mea nui ano hoki, e pa ana ano ki te whakamahi) - he whakaahua tera e hiahiatia ana mo te hoki whakamuri mena ka kitea nga raru nui i te putanga o naianei. Hei tauira, mo te take o Helm, he whakaahua enei e whakamahia ana i roto i nga putanga tiaki o te tukunga. (Ae ra, ma te taunoa i Helm ko te tepe e 256 nga whakahounga, engari kare pea e tika kia tiakina e tetahi. pērā he maha nga putanga?..) I muri i nga mea katoa, ko taatau, ina koa, ka rongoa i nga putanga kia taea ai e matou te whakamahi i muri mai, i.e. "hurihia" ki a raatau mehemea e tika ana.

3. Tuatoru - hiahia kaiwhakawhanake: Ko nga whakaahua katoa e pa ana ki a raatau mahi o naianei. Hei tauira, mena kei te whakaaro tatou ki te PR, he mea tika ki te waiho i tetahi ahua e rite ana ki te mahi whakamutunga, me te kii, ko te mahi o mua: na tenei ka taea e te kaiwhakawhanake te hoki tere ki tetahi mahi me te mahi me nga huringa hou.

4. Tuawha - nga whakaahua e e rite ana ki nga putanga o ta maatau tono, i.e. ko nga hua whakamutunga: v1.0.0, 20.04.01/XNUMX/XNUMX, sierra, etc.

NB: Ko nga paearu i tautuhia i konei i hangaia i runga i te wheako ki te taunekeneke me te tini o nga roopu whanaketanga mai i nga kamupene rereke. Engari, ko te tikanga, i runga i nga korero motuhake i roto i nga tukanga whanaketanga me nga hanganga e whakamahia ana (hei tauira, kaore i te whakamahia a Kubernetes), ka rereke pea enei paearu.

Te tohu me nga otinga o naianei

Ko nga ratonga rongonui me nga rehita ipu, hei tikanga, ka tuku i a raatau ake kaupapa here horoi whakaahua: kei roto ka taea e koe te tautuhi i nga tikanga e tangohia ai te tohu mai i te rehitatanga. Heoi, ka whakawhäitihia enei tikanga e nga tawhā penei i te ingoa, te wa hanga, me te maha o nga tohu*.

* Kei runga i nga whakatinanatanga rehita ipu motuhake. I whakaarohia e matou nga ahuatanga o nga otinga e whai ake nei: Azure CR, Docker Hub, ECR, GCR, GitHub Packages, GitLab Container Registry, Harbour Registry, JFrog Artifactory, Quay.io - mai i Mahuru'2020.

Ko tenei huinga tawhā he tino nui ki te whakatutuki i te wha o nga paearu - ara, ki te kowhiri i nga whakaahua e rite ana ki nga putanga. Heoi, mo etahi atu paearu katoa, me whiriwhiri tetahi momo otinga whakararu (he kaupapa here uaua ake, he kaupapa here ngawari ake ranei) - i runga i nga tumanako me te kaha o te putea.

Hei tauira, ko te paearu tuatoru - e pa ana ki nga hiahia o nga kaiwhakawhanake - ka taea te whakatau ma te whakarite i nga tikanga i roto i nga roopu: te whakaingoa motuhake o nga whakaahua, te pupuri i nga raarangi tuku motuhake me nga whakaaetanga o roto. Engari i te mutunga me mahi aunoa. A, ki te kore e ranea nga kaha o nga otinga kua rite, me mahi koe i a koe ake.

He rite te ahuatanga me nga paearu tuatahi e rua: kaore e taea te makona me te kore e whiwhi raraunga mai i tetahi punaha o waho - ko te waahi ka tukuna nga tono (i ta matou keehi, Kubernetes).

Whakaahua o te rerengamahi i Git

Me kii kei te mahi koe penei i a Git:

Ko te raruraru o te horoi "atamai" o nga whakaahua ipu me tona otinga i roto i te werf

Ko te ata me te upoko i te hoahoa e tohu ana i nga whakaahua ipu kei te horahia i tenei wa ki Kubernetes mo nga kaiwhakamahi katoa (kaiwhakamahi mutunga, kaiwhakaatu, kaiwhakahaere, me etahi atu) ka whakamahia ranei e nga kaiwhakawhanake mo te patuiro me nga kaupapa rite.

Ka aha mena ka whakaaetia e nga kaupapa here horoi kia mau tonu nga whakaahua (kaore e mukua) na nga ingoa tohu kua hoatu?

Ko te raruraru o te horoi "atamai" o nga whakaahua ipu me tona otinga i roto i te werf

Ko te tikanga, kare te ahua o taua ahuatanga ka koa te tangata.

He aha ka huri mena ka whakaaetia e nga kaupapa here nga whakaahua kia kaua e mukua? i runga i te waahi wa / te maha o nga mahi whakamutunga?

Ko te raruraru o te horoi "atamai" o nga whakaahua ipu me tona otinga i roto i te werf

Ko te hua kua tino pai ake, engari kei tawhiti tonu i te pai. I muri i nga mea katoa, kei a maatau tonu nga kaiwhakawhanake e hiahia ana ki nga whakaahua i roto i te rehitatanga (ka tukuna ranei ki roto i nga K8) hei patuiro i nga pepeha...

Hei whakarāpopoto i te ahuatanga o te maakete o naianei: ko nga mahi e waatea ana i roto i nga rehita ipu kaore e nui te ngawari i te wa e horoi ana, a ko te take nui mo tenei. kahore he huarahi ki te taunekeneke ki te ao o waho. Te ahua nei ko nga roopu e hiahia ana kia ngawari te kaha ki te whakatinana takitahi i te whakakorenga whakaahua "mai i waho", ma te whakamahi i te Docker Registry API (te API taketake ranei o te whakatinanatanga e rite ana).

Heoi, i rapu matou i tetahi otinga mo te ao katoa hei whakaaunoa i te horoi atahanga mo nga roopu rereke e whakamahi ana i nga rehita rereke...

To tatou ara ki te horoi whakapakoko ao

No hea tenei hiahia? Ko te meka ehara matou i te roopu kaiwhakawhanake motuhake, engari he roopu e mahi ana i te nuinga o ratou i te wa kotahi, e awhina ana ki te whakaoti matawhānui i nga take CI/CD. Na ko te taputapu hangarau matua mo tenei ko te taputapu Open Source werf. Ko tona ahuatanga ko te kore e mahi i te mahi kotahi, engari ka haere tonu i nga mahi tuku i nga waahanga katoa: mai i te huihuinga ki te tuku.

Ko te whakaputa whakaahua ki te rehitatanga* (i muri tonu i te hanganga) he tino mahi o taua taputapu. A, i te mea ka whakatakotoria nga whakaahua ki reira mo te rokiroki, na - mena kaore he mutunga o to rokiroki - me kawe e koe te kawenga mo o raatau horoi. Me pehea te angitu i roto i tenei, ka tutuki i nga paearu katoa kua tohua, ka korerohia ano.

* Ahakoa he rereke nga rehita (Docker Registry, GitLab Container Registry, Harbour, me etahi atu), he rite tonu nga raru o o raatau kaiwhakamahi. Ko te otinga o te ao i roto i ta maatau keehi kaore e whakawhirinaki ki te whakatinanatanga o te rehitatanga, no te mea ka rere ki waho o nga rehita me te tuku i te ahua rite mo te katoa.

Ahakoa kei te whakamahi matou i te werf hei tauira whakatinanatanga, ko te tumanako ka whai hua nga huarahi e whakamahia ana ki etahi atu kapa e pa ana ki nga raru penei.

Na ka pukumahi matou kāwāhi te whakatinanatanga o tetahi tikanga mo te horoi whakaahua - hei utu mo era kaha kua oti te hanga ki roto i nga rehita mo nga ipu. Ko te mahi tuatahi ko te whakamahi i te Docker Registry API ki te hanga i nga kaupapa here o mua mo te maha o nga tohu me te wa i hangaia ai (kua whakahuahia i runga ake nei). Kua taapiri atu ki a raatau Whakaaetia te rarangi i runga i nga whakaahua i whakamahia i roto i nga hanganga kua tohatohahia, i.e. Kubernetes. Mo nga mea whakamutunga, he nui noa ki te whakamahi i te Kubernetes API ki te huri i nga rauemi katoa kua tohatohahia me te tiki rarangi o nga uara. image.

I whakatauhia e tenei otinga iti te raru tino nui (te paearu Nama 1), engari ko te timatanga noa o to maatau haerenga ki te whakapai ake i te tikanga horoi. Ko te taahiraa i muri mai - me te mea tino pai ake - ko te whakatau hono nga whakaahua kua whakaputaina ki te hitori o Git.

Kaupapa tohu

Hei timata, i whiriwhiria e matou he huarahi hei pupuri i te ahua whakamutunga nga korero e tika ana mo te horoi, me te hanga i te tukanga ki runga i nga kaupapa tohu. I te wa e whakaputa ana i tetahi whakaahua, i kowhiria e te kaiwhakamahi tetahi whiringa tohu tohu (git-branch, git-commit ranei git-tag) me te whakamahi i te uara e rite ana. I roto i nga punaha CI, i whakatauhia enei uara i runga i nga taurangi taiao. Ina hoki i hono te ahua whakamutunga ki tetahi Git taketake, te pupuri i nga raraunga e tika ana mo te horoi i nga tapanga.

Na tenei huarahi i puta mai he huinga kaupapa here i whakaaetia kia whakamahia a Git hei puna kotahi o te pono:

  • I te wa e mukua ana he peka/tohu i roto i te Git, ko nga whakaahua e hono ana i roto i te rehita ka mukua aunoa.
  • Ka taea te whakahaere i te maha o nga whakaahua e hono ana ki nga tohu me nga commits Git e te maha o nga tūtohu i whakamahia i roto i te aronuinga kua tohua me te wa i hangaia ai te kaupapa here.

I te katoa, ko nga hua o te whakatinanatanga i makona i o maatau hiahia, engari he wero hou ka tatari mai. Ko te meka ko te wa e whakamahi ana i nga kaupapa tohu i runga i nga Git primitives, he maha nga hapa i pa ki a matou. (Na te mea kei tua atu o raatau whakamaaramatanga i tenei tuhinga, ka taea e te katoa te mohio ki nga korero konei.) Na reira, i te whakatau ki te huri ki te huarahi pai ake ki te tohu tohu (tohu-ihirangi), me whakaaro ano matou ki te whakatinanatanga o te horoi atahanga.

hātepe hātepe hou

He aha? Ma te tohu i runga i te ihirangi, ka taea e ia tohu te whakatutuki i nga mahi maha i Git. I te wa e horoi ana i nga whakaahua, kaore e taea e koe te whakaaro anake mai i te commit i taapirihia te tohu hou ki te rehita.

Mo te algorithm horoi hou, i whakatauhia kia neke atu i nga kaupapa tohu me te hanga tukanga whakaahua-meta, e pupuru ana e ia he paihere o:

  • te whakapumautanga i mahia ai te whakaputanga (kaore he aha mena i taapirihia te ahua, i whakarerekehia, i noho tonu ranei i roto i te rehita ipu);
  • me to maatau tohu o roto e rite ana ki te ahua kua kohia.

Arā, i whakaratohia te hono i nga tohu kua whakaputaina me nga mahi i Git.

whirihoranga whakamutunga me te hātepe hātepe whānui

I te wa e whirihora ana i te horoi, ka whai waahi nga kaiwhakamahi ki nga kaupapa here e kowhiri ana i nga whakaahua o naianei. Kua tautuhia ia kaupapa here:

  • maha nga korero, i.e. Nga tohu Git, nga manga Git ranei e whakamahia ana i te wa e matawai ana;
  • me te rohe o nga whakaahua i rapua mo ia tohutoro mai i te huinga.

Hei whakaatu, koinei te ahua o te whirihoranga kaupapa here taunoa:

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

Kei roto i tenei whirihoranga e toru nga kaupapa here e whai ana ki nga ture e whai ake nei:

  1. Tiakina te ahua mo nga tohu 10 Git whakamutunga (ma te ra hanga tohu).
  2. Kaua e neke ake i te 2 nga whakaahua i whakaputaina i te wiki kua hipa kia kaua e neke ake i te 10 nga miro whai mahi i te wiki kua hipa.
  3. Tiakina nga whakaahua 10 mo nga manga main, staging и production.

Ko te algorithm whakamutunga ka heke ki nga waahanga e whai ake nei:

  • Te tiki whakaaturanga mai i te rehita ipu.
  • Haunga nga whakaahua i whakamahia ki Kubernetes, na te mea Kua tohua e matou i mua i a raatau ma te pooti i te K8s API.
  • Matawai i te hitori o Git me te whakakore i nga whakaahua i runga i nga kaupapa here kua tohua.
  • Te tango i nga toenga whakaahua.

Ka hoki ki ta maatau whakaahua, koinei te mea e pa ana ki te werf:

Ko te raruraru o te horoi "atamai" o nga whakaahua ipu me tona otinga i roto i te werf

Heoi, ahakoa kaore koe e whakamahi i te werf, ka taea te whakamahi he huarahi rite ki te horoi atahanga matatau - i tetahi whakatinanatanga, i tetahi atu ranei (i runga i te huarahi pai ki te tohu whakaahua) - ka taea te tono ki etahi atu punaha/taputapu. Ki te mahi i tenei, he nui ki te mahara ki nga raruraru ka puta ake ka kitea nga waahi i roto i to puranga ka taea e koe te whakauru i to raatau otinga i te mea ka taea. Ko te tumanako ko te huarahi i haerehia e matou ka awhina koe ki te titiro ki to keehi me nga korero hou me nga whakaaro.

mutunga

  • Ake ake nei, ko te nuinga o nga kapa ka pa ki te raru o te puhake rehita.
  • I te wa e rapu ana i nga otinga, he mea tuatahi ki te whakatau i nga paearu mo te whaitake o te ahua.
  • Ko nga taputapu e tukuna ana e nga ratonga rehita ipu rongonui ka taea e koe te whakarite i tetahi horoi tino ngawari kaore e aro ki te "ao o waho": nga whakaahua i whakamahia i roto i te Kubernetes me nga ahuatanga o nga rerenga mahi a te roopu.
  • Ko te algorithm ngawari me te pai me mohio ki nga tikanga CI/CD me te mahi me nga raraunga whakaahua Docker anake.

PS

Pānuihia hoki i runga i ta maatau blog:

Source: will.com

Tāpiri i te kōrero