werf 1.1 tuku: whakapai ake ki te kaihanga i tenei ra me nga mahere mo nga ra kei mua

werf 1.1 tuku: whakapai ake ki te kaihanga i tenei ra me nga mahere mo nga ra kei mua

werf Ko ta matou puna tuwhera GitOps CLI taputapu mo te hanga me te tuku tono ki a Kubernetes. Ka rite ki te kupu whakaari, te tukunga o te putanga v1.0 i tohu i te timatanga o te taapiri i nga ahuatanga hou ki te werf me te whakahou i nga huarahi tuku iho. Inaianei kei te koa matou ki te whakaatu i te putanga v1.1, he mahi nui ki te whanaketanga me te turanga mo nga ra kei mua kaikohi werf. Kei te waatea te putanga i tenei wa hongere 1.1 ea.

Ko te kaupapa o te tukunga ko te hoahoanga hou o te rokiroki atamira me te arotautanga o nga mahi a nga kaikohi e rua (mo Stapel me Dockerfile). Ko te hoahoanga rokiroki hou ka whakatuwhera i te kaha ki te whakatinana i nga huihuinga tohatoha mai i nga kaihautu maha me nga huihuinga whakarara i runga i te ope kotahi.

Ko te arotautanga o te mahi ko te whakakore i nga tatauranga koretake i te waahi o te tatau i nga hainatanga atamira me te whakarereke i nga tikanga mo te tatau i nga kaute kaute kia pai ake. Ko tenei arotautanga ka whakaiti i te wa toharite o te hanga kaupapa ma te whakamahi werf. Ka hanga mangere, ka noho nga wahanga katoa i roto i te keteroki wāhanga-rokiroki, kua tino tere inaianei. I te nuinga o nga wa, ka iti ake i te 1 hēkona te whakaara ano i te hanga! Ka pa ano tenei ki nga tikanga mo te manatoko i nga waahanga o te mahi a nga roopu. werf deploy и werf run.

I roto ano i tenei tukunga, i puta he rautaki mo te tohu whakaahua ma te ihirangi - te tohu i runga i te ihirangi, kua whakahohea inaianei ma te taunoa me te mea anake e taunaki ana.

Kia ata titiro ki nga mahi hou o werf v1.1, me te korero ano ki a koe mo nga mahere mo nga ra kei mua.

He aha te mea kua huri i te werf v1.1?

Hōputu whakaingoa atamira hōu me te hātepe hātepe mō te kōwhiri i ngā wāhanga mai i te keteroki

Ture whakangao ingoa atamira hou. Inaianei ka hangaia e ia waahanga waahanga he ingoa waahanga motuhake, e 2 nga waahanga: he waitohu (penei i te v1.0) me tetahi tohu motuhake mo te wa poto.

Hei tauira, penei pea te ahua o te ingoa atamira katoa:

werf-stages-storage/myproject:d2c5ad3d2c9fcd9e57b50edd9cb26c32d156165eb355318cebc3412b-1582656767835

...i te nuinga ranei:

werf-stages-storage/PROJECT:SIGNATURE-TIMESTAMP_MILLISEC

Here:

  • SIGNATURE he waitohu atamira, e tohu ana i te tohu o te ihirangi atamira me te whakawhirinaki ki te hitori o nga whakarereketanga i Git i puta mai ai tenei ihirangi;
  • TIMESTAMP_MILLISEC he tautohu ahua ahurei e whakamanahia ana ka hangaia i te wa ka hangaia he ahua hou.

Ko te algorithm mo te kowhiri i nga waahanga mai i te keteroki e pa ana ki te tirotiro i te hononga o nga mahi a Git:

  1. Ka tatau a Werf i te waitohu o tetahi waahanga.
  2. В wāhanga-rokiroki He maha nga waahanga mo te hainatanga. Ka tohua e Werf nga waahanga katoa e rite ana ki te hainatanga.
  3. Mena kei te hono te atamira o naianei ki Git (git-archive, atamira ritenga me nga papanga Git: install, beforeSetup, setup; git-latest-patch ranei), ka kowhiria e werf nga waahanga e hono ana ki te commit he tipuna o te commit o naianei (ko te ingoa o te hanga).
  4. Mai i nga waahanga e toe ana, ka tohua tetahi - ko te mea tawhito i te ra o te hanganga.

Ka taea e tetahi waahi mo nga peka Git rereke te waitohu kotahi. Engari ka aukati te werf i te keteroki e hono ana ki nga peka rereke kia kore e whakamahia i waenga i enei manga, ahakoa ka rite nga hainatanga.

→ Tuhinga.

Te algorithm hou mo te hanga me te penapena i nga waahanga i roto i te rokiroki atamira

Mena, i te wa e kowhiri ana i nga waahanga mai i te keteroki, kaore e kitea e te werf he waahi tika, katahi ka timata te mahi whakahiato i tetahi waahanga hou.

Kia mahara he maha nga tukanga (i runga i te kotahi, neke atu ranei o nga kaihautu) ka timata te hanga i te atamira kotahi i te wa kotahi. Ka whakamahia e Werf tetahi algorithm aukati pai wāhanga-rokiroki i te wa e penapena ai te ahua hou kua kohia ki roto wāhanga-rokiroki. Ma tenei ara, i te wa e reri ana te hanga o te atamira hou, ka aukatia werf wāhanga-rokiroki ka tiakina he whakaahua hou ka kohia ki reira mena ka kore he ahua pai i reira (ma te waitohu me etahi atu tawhā - tirohia te algorithm hou mo te kowhiri i nga waahanga mai i te keteroki).

Ko te ahua katahi ano ka whakahiato ka whakapumautia he tohu motuhake na TIMESTAMP_MILLISEC (tirohia te whakatakotoranga whakaingoa o te atamira hou). I roto i te take i roto i wāhanga-rokiroki ka kitea he ahua pai, ka whakakorehia e werf te ahua hou i whakahiato ka whakamahia te ahua mai i te keteroki.

I etahi atu kupu: ko te mahi tuatahi ki te whakaoti i te hanga i te ahua (ko te mea tere) ka whai mana ki te penapena i roto i nga waahanga-rokiroki (a ko tenei whakaahua kotahi ka whakamahia mo nga hanga katoa). Ko te tukanga hanga puhoi e kore e aukati i te tukanga tere ake i te penapena i nga hua hanga o te atamira o naianei me te neke atu ki te whare e whai ake nei.

→ Tuhinga.

Kua pai ake te mahi a te kaihanga Dockerfile

I tenei wa, ko te paipa o nga waahanga mo te ahua i hangaia mai i te Dockerfile he waahanga kotahi - dockerfile. I te tatau i te hainatanga, ka tatauhia te kaute o nga konae context, ka whakamahia i te wa o te huihuinga. I mua i tenei whakapainga, i hikoi hoki a werf i nga konae katoa ka whiwhi i tetahi kaute ma te whakahiato i te horopaki me te ahua o ia konae. Ka timata mai i te v1.1, ka taea e werf te whakamahi i nga kaute kaute kua penapena ki roto i te putunga Git.

Ko te algorithm kei runga git ls-rakau. Ka whai whakaaro te algorithm ki nga rekoata i roto .dockerignore ka takahia te rakau konae i te wa e tika ana. No reira, kua wehea e maatau te panui i te punaha konae, me te whakawhirinaki o te algorithm ki te rahi context ehara i te mea nui.

Ka tirotirohia ano e te algorithm nga konae kaore i tirohia, a, ki te tika, ka whai whakaaro ki roto i te kaute.

Kua pai ake te mahi i te wa e kawemai ana i nga konae

Ko nga putanga o werf v1.1 e whakamahi ana i te tūmau rsync ina te kawemai i nga konae mai i nga taonga toi me nga whakaahua. I mua, i mahia te kawemai i nga waahanga e rua ma te whakamahi i te raarangi raarangi mai i te punaha manaaki.

Ko nga mahi kawemai i runga i te macOS kua kore e whakawhäitihia e nga pukapuka Docker, ka oti te kawemai i te wa rite ki a Linux me Windows.

Te tohu ihirangi

Kei te tautoko a Werf v1.1 i nga tohu e kiia nei ko te tohu ma te ihirangi whakaahua - te tohu i runga i te ihirangi. Ko nga tohu o nga whakaahua a Docker e pa ana ki nga ihirangi o aua whakaahua.

I te wa e whakahaere ana i te whakahau werf publish --tags-by-stages-signature ranei werf ci-env --tagging-strategy=stages-signature whakaputaina whakaahua o te pera-ka karanga hainatanga atamira whakaahua. Ka tohuhia ia ahua me ona ake waitohu o nga waahanga o tenei ahua, ka tatauhia i runga i nga ture rite ki te waitohu auau o ia waahanga motuhake, engari he tohu whanui mo te ahua.

Ko te waitohu o nga waahanga whakaahua ka whakawhirinaki ki:

  1. nga ihirangi o tenei ahua;
  2. nga hitori o nga huringa a Git i puta ai tenei kaupapa.

Kei roto i te putunga Git nga mahi hangarua e kore e huri i nga ihirangi o nga konae whakaahua. Hei tauira, ka mahi me nga korero anake, ka hanumi ranei nga mahi, ka mahi ranei ka huri i aua konae kei Git ka kore e kawemai ki te ahua.

I te wa e whakamahi ana i te tohu-a-ihirangi, ka whakatauhia nga raru o te whakaara ano i nga putunga tono i Kubernetes na te whakarereketanga o te ingoa whakaahua, ahakoa kaore i rereke nga ihirangi o te ahua. Ma te ara, koinei tetahi o nga take e aukati ana i te penapena maha o nga microservices o te tono kotahi i roto i te putunga Git kotahi.

Ano hoki, ko te tohu i runga i te ihirangi he tikanga tohu pono ake i te tohu ki nga manga Git, na te mea ko nga ihirangi o nga whakaahua ka puta kaore i te whakawhirinaki ki te raupapa e mahia ai nga paipa i roto i te punaha CI mo te whakahiato i nga mahi maha o te peka kotahi.

nui: timata mai i naianei wahanga-waitohu Ko ko te rautaki tohu tohu anake. Ka whakamahia taunoa i roto i te whakahau werf ci-env (mehemea ka whakapūtā koe i tētahi kaupapa tohu tohu kē).

→ Tuhinga. Ka whakatapua ano he panui motuhake mo tenei waahanga. Kua whakahōutia (Aperira 3): Tuhinga me nga taipitopito whakaputaina.

Nga taumata takitaki

Ka whai waahi te kaiwhakamahi inaianei ki te whakahaere i te putanga, ki te whakarite i te taumata takiuru me te mahi me nga korero patuiro. Nga whiringa taapiri --log-quiet, --log-verbose, --log-debug.

Ma te taunoa, kei roto i te putanga nga korero iti rawa:

werf 1.1 tuku: whakapai ake ki te kaihanga i tenei ra me nga mahere mo nga ra kei mua

I te wa e whakamahi ana i te putanga kupu (--log-verbose) ka kite koe i te mahi a werf:

werf 1.1 tuku: whakapai ake ki te kaihanga i tenei ra me nga mahere mo nga ra kei mua

Putanga Taipitopito (--log-debug), i tua atu i nga korero patuiro werf, kei roto hoki nga raarangi o nga whare pukapuka kua whakamahia. Hei tauira, ka taea e koe te kite me pehea te mahi tahi me te Rehita Docker, me te tuhi hoki i nga waahi e pau ai te wa nui:

werf 1.1 tuku: whakapai ake ki te kaihanga i tenei ra me nga mahere mo nga ra kei mua

Nga mahere mo meake nei

Tūpato Ko nga whiringa e whakaahuatia ana i raro nei kua tohua v1.1 ka watea mai i tenei putanga, he maha o ratou i roto i nga wa e heke mai nei. Ka tae mai nga whakahoutanga ma nga whakahou-aunoa ina whakamahi multiwerf. Ko enei ahuatanga kaore e pa ki te waahanga pumau o nga mahi v1.1; ko te ahua o te ahua kaore e hiahiatia he wawaotanga a te kaiwhakamahi ki nga whirihoranga o naianei.

Tautoko katoa mo nga momo whakatinanatanga Rehita Docker (NEW)

  • Putanga: v1.1
  • Nga ra: Maehe
  • putanga

Ko te whainga kia whakamahia e te kaiwhakamahi tetahi whakatinanatanga ritenga me te kore here i te wa e whakamahi ana i te werf.

I tenei wa, kua tautuhia e matou nga huinga otinga e whai ake nei ka whakamanahia e matou te tautoko katoa:

  • Taunoa (whare pukapuka/rehita)*,
  • AWS ECR
  • Azure*,
  • Puka Docker
  • GCR*,
  • Mōkī GitHub
  • Rehita GitLab*,
  • Whanga*,
  • Quay.

Ko nga otinga e tino tautokohia ana e te werf kua tohua ki te whetūriki. Mo etahi atu he tautoko, engari he here.

E rua nga raruraru matua ka taea te tautuhi:

  • Ko etahi otinga kaore e tautoko i te tango tohu ma te whakamahi i te Docker Registry API, hei aukati i nga kaiwhakamahi ki te whakamahi i te horoi aunoa a werf. He pono tenei mo te AWS ECR, Docker Hub, me nga Painga GitHub.
  • Ko etahi o nga otinga kaore i te tautoko i nga mea e kiia nei ko nga putunga kohanga (Docker Hub, GitHub Packages me Quay) ka mahi ranei, engari me hanga a ringa e te kaiwhakamahi ma te whakamahi i te UI, te API ranei (AWS ECR).

Ka whakatauhia e matou enei me etahi atu raruraru ma te whakamahi i nga API taketake o nga otinga. Kei roto hoki i tenei mahi te kapi katoa o nga mahi werf me nga whakamatautau mo ia mahi.

Hanganga whakaahua toha (↑)

  • Putanga: v1.2 v1.1 (kua piki ake te kaupapa matua mo te whakatinana i tenei waahanga)
  • Nga Ra: Maehe-Aperira Maehe
  • putanga

I tenei wa, ka taea te whakamahi i te werf v1.0 me te v1.1 anake ki runga i te kaihautu motuhake mo nga mahi hanga me te whakaputa whakaahua me te tuku i te tono ki a Kubernetes.

Hei whakatuwhera i nga waahi o nga mahi toha a werf, ka whakarewahia te hanga me te tuku tono ki Kubernetes i runga i te maha o nga kaihautu kore noa, kaore enei kaihautu e tiaki i o raatau ahuatanga i waenga i nga hangahanga (kaiwhakahaere rangitahi), ka hiahiatia te werf ki te whakatinana i te kaha ki te whakamahi. te Rehita Docker hei toa atamira.

I mua, i te wa e kiia tonutia ana te kaupapa werf he dapp, i whai waahi tera. Heoi ano, he maha nga take kua pa ki a matou i te wa e whakatinana ana i tenei mahi i roto i te werf.

parau. Ko tenei ahuatanga kaore e hiahia te kaikohi ki te mahi i roto i nga kurupae Kubernetes, na te mea Ki te mahi i tenei, me whakakore koe i te ti'aturi ki runga i te tūmau Docker rohe (i roto i te Kubernetes pod karekau he uru ki te tūmau Docker rohe, no te mea kei te rere te tukanga i roto i te ipu, a ka kore e tautokohia e te werf. mahi tahi me te tūmau Docker i runga i te whatunga). Ka whakatinanahia te tautoko mo te whakahaere i nga Kubernetes.

Tautoko mana mo nga Mahi a GitHub (HOU)

  • Putanga: v1.1
  • Nga ra: Maehe
  • putanga

Kei roto ko nga tuhinga werf (waahanga tohutoro и ārahi), me te Mahinga GitHub whaimana mo te mahi me te werf.

I tua atu, ka taea e te werf te mahi i runga i nga kaiwhaiwhai ephemeral.

Ko nga miihini o te taunekeneke a te kaiwhakamahi me te punaha CI ka ahu mai i te whakatakoto tapanga ki runga i nga tono kume hei timata i etahi mahi ki te hanga/whakaputa i te tono.

Te whakawhanaketanga o te rohe me te tuku tono me te werf (↓)

  • Putanga: v1.1
  • Nga ra: Hanuere-Pepuere Paenga-whāwhā
  • putanga

Ko te whainga matua ko te whakatutuki i te whirihora whakakotahi kotahi mo te tuku tono i te rohe me te hanga, kaore he mahi uaua, i waho o te pouaka.

Kei te hiahia hoki te werf ki te whai i tetahi aratau whakahaere e pai ai te whakatika i te waehere tono me te whiwhi urupare mai i te tono rere mo te patuiro.

Hōu hātepe horoi (HOU)

  • Putanga: v1.1
  • Nga ra: Paenga-whāwhā
  • putanga

I roto i te putanga o naianei o werf v1.1 i roto i te tukanga cleanup Karekau he tikanga mo te horoi i nga whakaahua mo te kaupapa tohu-a-roto - ka kohia enei whakaahua.

Ano, ko te putanga o naianei o werf (v1.0 me v1.1) e whakamahi ana i nga kaupapa here horoi rereke mo nga whakaahua i whakaputaina i raro i nga kaupapa tohu: Peka Git, Git tag, Git commit ranei.

Kua hangaia he algorithm hou mo te horoi whakaahua i runga i te hitori o nga mahi i Git, kua whakakotahi mo nga kaupapa tohu tohu katoa:

  • Kaua e neke ake i nga whakaahua N1 e hono ana ki te N2 o mua mo ia git HEAD (nga peka me nga tohu).
  • Kaua e neke ake i nga whakaahua atamira N1 e hono ana ki te N2 o mua mo ia git HEAD (nga peka me nga tohu).
  • Whakaorangia nga whakaahua katoa e whakamahia ana i roto i nga rauemi roopu Kubernetes (kua karapahia nga horopaki kube katoa o te konae whirihora me nga mokowāingoa; ka taea e koe te whakawhāiti i tenei whanonga me nga whiringa motuhake).
  • Whakaorangia nga whakaahua katoa e whakamahia ana i roto i nga whakaaturanga whirihoranga rauemi kua tiakina i roto i nga putanga Helm.
  • Ka taea te whakakore i tetahi ahua ki te kore e hono atu ki tetahi HEAD mai i te git (hei tauira, na te mea ko te HEAD e rite ana i mukua) karekau e whakamahia i roto i nga whakaaturanga i roto i te roopu Kubernetes me nga putanga Helm.

Te hanga whakaahua whakarara (↓)

  • Putanga: v1.1
  • Nga ra: Hanuere-Pepuere Paenga-whawha*

Ko te putanga o naianei o werf e kohi ana i nga whakaahua me nga taonga toi e whakaahuatia ana i roto werf.yaml, raupapa. He mea tika ki te whakarara i te tukanga o te whakahiato i nga waahanga motuhake o nga whakaahua me nga taonga toi, me te whakarato i nga putanga watea me nga korero.

* Kia mahara: kua nukuhia te wa kati na te nui ake o te kaupapa matua mo te whakatinana i te huihuinga tohatoha, ka taapiri ake i nga kaha whakahiato whakapae, me te whakamahi werf me nga Mahi a GitHub. Ko te huihuinga whakarara te mahi arotautanga e whai ake nei, e whakarato ana i te whakahiatotanga poutū i te wa e huihui ana tetahi kaupapa.

Whakawhiti ki te Rererangi 3 (↓)

  • Putanga: v1.2
  • Nga ra: Hui-tanguru-Maehe Mei*

Kei roto ko te hekenga ki te turanga waehere hou Heremi 3 me te huarahi whakamatau, watea ki te heke i nga whakaurunga o naianei.

* Kia mahara: ko te huri ki te Helm 3 e kore e taapiri i nga ahuatanga nui ki te werf, na te mea ko nga ahuatanga matua katoa o te Helm 3 (3-ara-hanumi me te kore he tiller) kua whakatinanahia ki te werf. Ano, werf kua āhuatanga tāpiri i tua atu i era kua tohua. Engari, ka noho tonu tenei whakawhitinga ki roto i a maatau mahere, ka whakatinanahia.

Jsonnet mo te whakaahua i te whirihoranga Kubernetes (↓)

  • Putanga: v1.2
  • Nga ra: Hanuere-Pepuere Paenga-whawha-Mei

Ka tautoko a Werf i nga whakaahuatanga whirihoranga mo Kubernetes i te whakatakotoranga Jsonnet. I te wa ano, ka noho hototahi te werf ki a Helm, a ka whai kowhiria te whakatakotoranga whakaahuatanga.

Ko te take ko nga tauira a Go, e ai ki te tini o nga tangata, he arai urunga teitei, a ka mamae ano te maaramatanga o te waehere o enei tauira.

Kei te whakaarohia ano te huarahi ki te whakauru i etahi atu punaha whakaahuatanga whirihoranga Kubernetes (hei tauira, Kustomize).

Mahi i roto i nga Kubernetes (↓)

  • Putanga: v1.2
  • Nga ra: Paenga-whawha-Mei Mei-Hune

Whāinga: Me whakarite ka hangaia nga whakaahua ka tukuna te tono ma te whakamahi i nga kaiwhaiwhai i Kubernetes. Ko era. Ko nga whakaahua hou ka taea te whakahiato, te whakaputa, te horoi, me te toha tika mai i nga putunga Kubernetes.

Hei whakatinana i tenei kaha, me kaha koe ki te hanga whakaahua toha (Tirohia te tohu i runga ake nei).

Me tautoko hoki mo te aratau mahi a te kaihanga me te kore he tūmau Docker (arā, he rite ki a Kaniko te hanga, te hanga ranei i roto i te mokowāmahi).

Ka tautoko a Werf i te hanga i runga i nga Kubernetes ehara i te Dockerfile anake, engari me tana Kaihanga Stapel me nga hanganga taapiri me te Ansible.

He taahiraa ki te whakawhanake tuwhera

Ka aroha matou ki to matou hapori (GitHub, waea) a kei te pirangi matou kia maha ake nga tangata ki te awhina kia pai ake te werf, kia mohio ki te huarahi e nekehia ana e matou, me te whai waahi ki te whanaketanga.

No tata nei ka whakatauhia kia huri ki Nga papa kaupapa GitHub hei whakaatu i nga mahi a to taatau roopu. Inaianei ka kite koe i nga mahere tata, me nga mahi o naianei i roto i nga waahanga e whai ake nei:

He maha nga mahi kua mahia mo nga take:

  • Kua whakakorehia nga mea kore.
  • Ko nga mea o mua ka kawea ki te whakatakotoranga kotahi, me te nui o nga korero me nga korero.
  • Ko nga take hou me nga whakaaro me nga whakaaro kua taapirihia.

Me pehea e taea ai te putanga v1.1

Kei te waatea te putanga i tenei wa hongere 1.1 ea (i roto i nga hongere pūmau и toka-totoka ka puta nga tukunga i te wa e puta ai te whakapumautanga, heoi ea ko ia ano kua tino pumau mo te whakamahi, na te mea i haere ma nga hongere Alpha и peta). Whakahohe mā multiwerf i roto i te ara e whai ake nei:

source $(multiwerf use 1.1 ea)
werf COMMAND ...

mutunga

Ko te hoahoanga rokiroki atamira hou me te arotautanga o nga kaihanga mo nga kaihanga Stapel me Dockerfile ka tuwhera te huarahi ki te whakatinana i nga hanganga toha me te whakarara i roto i te werf. Ka puta enei ahuatanga i roto i te tukunga v1.1 ano ka watea aunoa ma te tikanga whakahou-aunoa (mo nga kaiwhakamahi multiwerf).

I roto i tenei tukunga, kua taapirihia he rautaki tohu i runga i te ihirangi whakaahua - te tohu i runga i te ihirangi, kua waiho hei rautaki taunoa. Kua mahi ano te raarangi whakahau matua: werf build, werf publish, werf deploy, werf dismiss, werf cleanup.

Ko te mahi nui e whai ake nei ko te taapiri i nga huihuinga tohatoha. Ko nga hanganga toha kua noho hei kaupapa matua ake i nga hanga whakarara mai i te v1.0 na te mea ka nui ake te uara ki te werf: te whakahiato poutū o nga kaihanga me te tautoko mo nga kaihanga ephemeral i roto i nga momo punaha CI/CD, tae atu ki te kaha ki te hanga tautoko mana mo nga Mahi a GitHub . Na reira, i nukuhia nga wa whakaotinga mo nga huihuinga whakarara. Heoi, kei te whakapau kaha matou ki te whakatinana wawe i nga huarahi e rua.

Whaia nga korero! A kaua e wareware ki te toro mai ki a matou i GitHubki te hanga i tetahi take, kimihia he mea e noho ana me te taapiri i te taapiri, hanga he PR, maataki noa ranei i te whanaketanga o te kaupapa.

PS

Pānuihia hoki i runga i ta maatau blog:

Source: will.com

Tāpiri i te kōrero