Ko te tohu ihirangi i roto i te kaikohi werf: he aha me pehea te mahi?

Ko te tohu ihirangi i roto i te kaikohi werf: he aha me pehea te mahi?

werf Ko ta matou puna tuwhera GitOps CLI taputapu mo te hanga me te tuku tono ki a Kubernetes. IN tuku v1.1 i whakaurua he ahuatanga hou ki te kaikohi whakaahua: te tohu whakaahua ma te ihirangi, te tohu ranei te tohu i runga i te ihirangi. Tae noa ki tenei wa, ko te kaupapa tohu tohu i roto i te werf ko te tohu i nga whakaahua Docker na te tohu Git, te peka a Git, te mahi a Git ranei. Engari he kino enei kaupapa katoa ka whakatauhia e te rautaki tohu hou. Ko nga korero mo taua mea me te aha i tino pai ai kei raro i te tapahi.

Te huri i te huinga o nga ratonga moroiti mai i tetahi putunga Git

I te nuinga o te wa ka puta he ahuatanga ina wehea he tono ki nga ratonga maha ake, iti ake ranei. Ko nga tukunga o enei ratonga ka puta takitahi: kotahi, neke atu ranei nga ratonga ka tukuna i te wa kotahi, ko te toenga me mahi tonu kaore he huringa. Engari mai i te tirohanga o te rokiroki waehere me te whakahaere kaupapa, he pai ake te pupuri i aua ratonga tono i roto i te putunga kotahi.

He waahi ka tino motuhake nga ratonga me te kore e hono ki te tono kotahi. I roto i tenei take, ka noho ratou ki roto i nga kaupapa motuhake, ka tukuna to ratou tukunga i roto i nga tukanga CI/CD motuhake i ia kaupapa.

Heoi, i roto i te mooni, he maha nga wa ka wehewehe nga kaiwhakawhanake i te tono kotahi ki etahi ratonga moroiti, engari ko te hanga i tetahi putunga motuhake me te kaupapa mo ia... Ko tenei ahuatanga ka korerohia ano: he maha nga momo ratonga moroiti kei roto i te putunga kaupapa kotahi, ka puta nga tukunga ma te mahi kotahi i roto i te CI/CD.

Te tohu ma te peka a Git me te tohu Git

Me kii ko te rautaki tohu tino noa e whakamahia ana - peka-ranei. Mo nga manga Git, ka tohua nga whakaahua ki te ingoa o te peka, mo te peka kotahi i te wa kotahi anake te ahua kua whakaputaina ma te ingoa o taua peka. Mo nga tohu Git, ka tohua nga whakaahua kia rite ki te ingoa tohu.

Ina hangaia he tohu Git hou—hei tauira, ka tukuna he putanga hou—ka hangaia he tohu Docker hou mo nga whakaahua kaupapa katoa i te Rehita 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

Ko enei ingoa whakaahua hou ka tukuna ma nga tauira Helm ki te whirihoranga Kubernetes. I te wa e timata ana te tuku me te whakahau werf deploy kei te whakahouhia te mara image i roto i nga rauemi Kubernetes ka whakaatu me te whakaara ano i nga rauemi e rite ana na te mea kua hurihia te ingoa whakaahua.

raruraru: in the case when, in the fact, the content of the image has not change from the previous rollout (Git tag), engari ko tana tohu Docker anake, ka tupu tenei. taapiri ka timata ano i tenei tono, a, na reira, ka taea etahi wa heke. Ahakoa karekau he tino take ki te mahi i tenei whakaara ano.

Ko te mutunga mai, me te kaupapa tohu o naianei me taiapahia etahi putunga motuhake a Git ka puta ake te raru ki te whakarite i te whakaputanga o enei putunga maha. I te nuinga o te waa, ka huri te ahua o taua kaupapa ki te taumaha me te uaua. He pai ake te whakakotahi i nga ratonga maha ki roto i te putunga kotahi me te hanga tohu Docker kia kore ai he whakaara ano.

Te tohu na Git commit

Kei a werf hoki tetahi rautaki tohu e hono ana ki a Git commits.

Ko te Git-commit he tohu mo nga ihirangi o te putunga Git me te whakawhirinaki ki te hitori whakatika o nga konae kei roto i te putunga Git, no reira he mea tika ki te whakamahi mo te tohu whakaahua i te Docker Registry.

Heoi ano, he rite tonu nga ngoikoretanga o te tohu a Git commit ki te tohu a nga manga Git me nga tohu Git:

  • Ka taea te hanga i tetahi tuunga kore e whakarereke i nga konae, engari ka hurihia te tohu Docker o te ahua.
  • Ka taea te hanga he whakakotahitanga kaore e huri i nga konae, engari ka huri te tohu Docker o te ahua.
  • Ka taea te hanga he kupu hei whakarereke i aua konae kei Git kaore i kawemai ki te ahua, ka huri ano te tohu Docker o te ahua.

Ko te tohu i te ingoa peka a Git kaore e whakaata i te putanga atahanga

He raru ano e pa ana ki te rautaki tohu mo nga manga Git.

Ka mahi te tohu ma te ingoa peka mena ka kohia nga mahi i runga i taua peka i runga i te raupapa o nga waa.

Mena i roto i te kaupapa o naianei ka tiimata te kaiwhakamahi ki te hanga i tetahi mahi tawhito e hono ana ki tetahi peka, katahi ka tuhia ano e werf te ahua ma te whakamahi i te tohu Docker e rite ana me tetahi waahanga hou o te ahua mo te mahi tawhito. Ma te whakamahi i tenei tohu mai i tenei wa ka tupono ka toia he ahua rereke o te ahua i te wa e whakaara ano ana i nga putunga, na te mea ka ngaro to taatau tono ki te punaha CI ka mutu te tukutahi.

I tua atu, me nga pananga whai muri ki te peka kotahi me te wa poto i waenganui i a raatau, ka whakahiatohia te tuku tawhito i muri mai i te mea hou: ko te ahua tawhito o te ahua ka tuhirua i te mea hou ma te whakamahi i te tohu peka a Git. Ko enei raruraru ka taea te whakaoti ma te punaha CI/CD (hei tauira, i roto i te GitLab CI ka whakarewahia te pipeline o muri mo te raupapa o nga mahi). Heoi, kaore nga punaha katoa e tautoko ana i tenei, me whai huarahi pono ake hei aukati i tenei raru nui.

He aha te tohu i runga i te ihirangi?

Na, he aha te tohu i runga i te ihirangi - te tohu whakaahua ma te ihirangi.

Hei waihanga i nga tohu Docker, ehara i te Git primitives (Git peka, Git tag...) ka whakamahia, engari he utu arowhai e pa ana ki:

  • ihirangi o te ahua. Ko te tohu ID whakaahua e whakaatu ana i ona ihirangi. I te wa e hanga ana he putanga hou, kaore tenei tohu tohu e rereke mena kaore nga konae i roto i te ahua i rereke;
  • te hitori o te hanga i tenei ahua ki Git. Ko nga whakaahua e hono ana ki nga manga Git rereke me nga hitori hanga rereke ma te werf ka rereke nga tohu ID.

Ko taua tohu tohu ko te mea e kiia ana waitohu atamira atamira.

He huinga wahanga o ia ahua: from, before-install, git-archive, install, imports-after-install, before-setup... git-latest-patch etc. Kei ia wahanga he tautohu e whakaatu ana i ona ihirangi − hainatanga atamira (waitohu atamira).

Ko te ahua whakamutunga, kei roto i enei waahanga, kua tohua ki te waitohu o te huinga o enei waahanga - hainatanga wahanga, - he whakawhanui mo nga wahanga katoa o te ahua.

Mo ia ahua mai i te whirihoranga werf.yaml i roto i te keehi whanui, ka whai ake tana hainatanga, na reira, he tohu Docker.

Ma te hainatanga atamira e whakaoti enei raru katoa:

  • He ātete ki te noho kau a Git.
  • Ko te Atete ki a Git ka mahi ka huri i nga konae kaore e pa ana ki te ahua.
  • Kare e arai atu ki te raru o te whakahou i te ahua o naianei o te ahua ka timata ano te hanga mo nga mahi tawhito a Git o tetahi manga.

Koinei te rautaki tohu tohu inaianei, a ko te taunoa i roto i te werf mo nga punaha CI katoa.

Me pehea te whakahohe me te whakamahi i te werf

Kei te whakahau inaianei he whiringa e rite ana werf publish: --tag-by-stages-signature=true|false

I roto i te punaha CI, ka tohua te rautaki tohu e te whakahau werf ci-env. I mua, i tautuhia te tawhā mo taua mea werf ci-env --tagging-strategy=tag-or-branch. Na, ki te whakapūtā koe werf ci-env --tagging-strategy=stages-signature kaua ranei e tohu i tenei whiringa, ka whakamahia e werf te rautaki tohu ma te taunoa stages-signature. Kapa werf ci-env ka tautuhi aunoa i nga haki e tika ana mo te whakahau werf build-and-publish (ranei werf publish), no reira karekau he whiringa taapiri me tohu mo enei whakahau.

Hei tauira, ko te whakahau:

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

...ka taea te hanga i nga whakaahua e whai ake nei:

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

ko te reira 4ef339f84ca22247f01fb335bb19f46c4434014d8daa3d5d6f0e386d he waitohu o nga wahanga o te ahua backenda f44206457e0a4c8a54655543f749799d10a9fe945896dab1c16996c6 - hainatanga o nga waahanga whakaahua frontend.

I te wa e whakamahi ana i nga mahi motuhake werf_container_image и werf_container_env Kaore he take ki te whakarereke i tetahi mea i roto i nga tauira Helm: ma enei mahi ka whakaputa aunoa i nga ingoa whakaahua tika.

Tauira whirihoranga i roto i te punaha CI:

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

Ko etahi atu korero mo te whirihoranga e waatea ana i roto i nga tuhinga:

Te tapeke

  • Kōwhiringa hōu werf publish --tag-by-stages-signature=true|false.
  • Uara kōwhiringa hou werf ci-env --tagging-strategy=stages-signature|tag-or-branch (mehemea kaore i tohua, ko te taunoa stages-signature).
  • Mena i whakamahia e koe i mua nga whiringa tohu mo te Git commits (WERF_TAG_GIT_COMMIT kōwhiringa ranei werf publish --tag-git-commit COMMIT), katahi ka huri ki te rautaki tohu wahanga-waitohu.
  • He pai ake te huri i nga kaupapa hou ki te kaupapa tohu tohu hou.
  • I te wa e whakawhiti ana ki te werf 1.1, he mea tika kia huri nga kaupapa tawhito ki te kaupapa tohu hou, engari ko te tawhito peka-ranei kei te tautoko tonu.

Ko te tohu-a-ihirangi e whakaoti ana i nga raru katoa kei roto i te tuhinga:

  • Ko te aukati ingoa tohu Docker ki te noho kau a Git.
  • Ko te aukati i te ingoa tohu Docker ki a Git ka huri i nga konae kaore e whai kiko ki te ahua.
  • Kare e arai atu ki te raru o te whakahou i te ahua o naianei o te ahua ka timata ano te hanga mo nga mahi tawhito a Git mo nga manga Git.

Whakamahia! A kaua e wareware ki te toro mai ki a matou i GitHubki te hanga take, ki te kimi i tetahi take, hoatu he 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