Nkpado dabere na ọdịnaya n'ime onye na-ewu werf: gịnị kpatara na kedu ka o si arụ ọrụ?

Nkpado dabere na ọdịnaya n'ime onye na-ewu werf: gịnị kpatara na kedu ka o si arụ ọrụ?

werf bụ ihe mepere emepe GitOps CLI maka iwulite na ibuga ngwa na Kubernetes. N'ime mwepụta v1.1 ewebata atụmatụ ọhụrụ na onye na-anakọta onyonyo: ịkpado onyonyo site na ọdịnaya ma ọ bụ mkpado dabere na ọdịnaya. Ruo ugbu a, atụmatụ mkpado a na-ahụkarị na werf gụnyere ịkpado onyonyo Docker site na mkpado Git, alaka Git ma ọ bụ Git. Mana atụmatụ ndị a niile nwere ọghọm nke edozichara kpamkpam site na atụmatụ mkpado ọhụrụ. Nkọwa gbasara ya na ihe mere o ji dị mma dị n'okpuru ịkpụ.

Na-ebupụ usoro microservices site na otu ebe nchekwa Git

Ọnọdụ na-apụtakarị mgbe ekewara ngwa n'ime ọtụtụ ọrụ nọọrọ onwe ya ma ọ bụ obere. Mwepụta nke ọrụ ndị a nwere ike ime n'onwe ya: otu ma ọ bụ karịa ọrụ nwere ike ịhapụ otu oge, ebe ndị ọzọ ga-anọgide na-arụ ọrụ na-enweghị mgbanwe ọ bụla. Mana site na echiche nke nchekwa koodu na njikwa ọrụ, ọ ka mma idobe ọrụ ngwa dị otú ahụ n'otu ebe nchekwa.

Enwere ọnọdụ mgbe ọrụ nọọrọ onwe ya n'ezie yana ejikọtaghị ya na otu ngwa. N'okwu a, ha ga-anọ na ọrụ dị iche iche na ntọhapụ ha ga-eme site na usoro CI / CD dị iche iche na nke ọ bụla n'ime ọrụ ahụ.

Otú ọ dị, n'eziokwu, ndị mmepe na-ekewakarị otu ngwa n'ime ọtụtụ microservices, ma ịmepụta ebe nchekwa na ọrụ dị iche iche maka onye ọ bụla ... bụ ihe doro anya. Ọ bụ ọnọdụ a ka a ga-atụle n'ihu: ọtụtụ microservices dị otú ahụ dị n'otu ebe nchekwa ọrụ na mwepụta na-eme site na otu usoro na CI / CD.

Nkpado site na ngalaba Git na mkpado Git

Ka anyị kwuo na a na-eji usoro mkpado a na-ejikarị eme ihe - mkpado-ma ọ bụ-alaka. Maka alaka Git, a na-akpado ihe onyonyo n'aha alaka ahụ, maka otu alaka n'otu oge enwere naanị otu onyonyo ebipụtara n'aha alaka ahụ. Maka mkpado Git, a na-akpado onyonyo dịka aha mkpado siri dị.

Mgbe emepụtara mkpado Git ọhụrụ - dịka ọmụmaatụ, mgbe ewepụtara ụdị ọhụrụ - a ga-emepụta mkpado Docker ọhụrụ maka onyonyo ọrụ niile na ndekọ 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

A na-agafe aha onyonyo ọhụrụ a site na ndebiri Helm na nhazi Kubernetes. Mgbe ị na-amalite ntinye n'ọrụ na iwu werf deploy a na-emelite mpaghara image na Kubernetes akụ na-egosipụta ma malitegharịa akụrụngwa kwekọrọ n'ihi aha onyonyo gbanwere.

nsogbu: n'ọnọdụ mgbe, n'ezie, ọdịnaya nke onyonyo a agbanwebeghị kemgbe mbugharị gara aga (Tag Git), mana naanị mkpado Docker ya, nke a na-eme. enweghị atụ ibidoghachi ngwa a na, ya mere, oge nkwụsịtụ ga-ekwe omume. Ọ bụ ezie na ọ dịghị ezigbo ihe mere ị ga-eji mee nke a Malitegharịa ekwentị.

N'ihi ya, na atụmatụ mkpado dị ugbu a, ọ dị mkpa ịgbachitere ọtụtụ ebe nchekwa Git dị iche iche na nsogbu na-ebilite nke ịhazi mwepụta nke ọtụtụ ebe nchekwa ndị a. N'ozuzu, atụmatụ dị otú ahụ na-atụgharị na-ebufe ibu na mgbagwoju anya. Ọ ka mma ijikọ ọtụtụ ọrụ n'ime otu ebe nchekwa wee mepụta mkpado Docker ka ọ ghara ịmalitegharị na-enweghị isi.

Nkpado site na Git commitment

werf nwekwara atụmatụ mkpado metụtara Git eme.

Git-commit bụ ihe nchọpụta maka ọdịnaya nke ebe nchekwa Git ma dabere na akụkọ ndezi faịlụ dị na ebe nchekwa Git, yabụ na ọ dị ka ihe ezi uche dị na ya iji ya maka ịkpado onyonyo na ndekọ Docker.

Agbanyeghị, ịkpado site na Git commit nwere otu ọghọm dị ka ịkpado alaka Git ma ọ bụ mkpado Git:

  • Enwere ike ịmepụta nkwa efu nke na-adịghị agbanwe faịlụ ọ bụla, mana akara Docker nke onyonyo a ga-agbanwe.
  • Enwere ike ịmepụta ntinye aka nke na-adịghị agbanwe faịlụ, mana a ga-agbanwe mkpado Docker nke onyonyo a.
  • Enwere ike ịme nkwa na-agbanwe faịlụ ndị ahụ na Git na-ebubataghị na onyonyo a, a ga-agbanwe mkpado Docker nke onyonyo a ọzọ.

Ịkpado aha alaka Git anaghị egosipụta ụdị onyonyo

Enwere nsogbu ọzọ metụtara atụmatụ mkpado maka alaka Git.

Ịkpado aha alaka ụlọ ọrụ na-arụ ọrụ ma ọ bụrụhaala na a na-anakọta ihe omume dị na alaka ahụ n'usoro n'usoro oge.

Ọ bụrụ n'ime atụmatụ dị ugbu a onye ọrụ na-amalite iwughachi nkwekọrịta ochie jikọtara ya na ngalaba ụfọdụ, werf ga-edegharị onyonyo a site na iji mkpado Docker kwekọrọ na ụdị onyonyo ewuru ọhụrụ maka mmemme ochie. Ntugharị na-eji mkpado a site ugbu a gaa n'ihu na-agba ọsọ n'ihe ize ndụ nke ịdọrọ ụdị ihe oyiyi dị iche iche mgbe ịmalitegharị pods, n'ihi nke a na ngwa anyị ga-akwụsị njikọ na usoro CI wee ghọọ desynchronized.

Na mgbakwunye, na ntinye na-aga n'ihu n'otu alaka nke nwere obere oge n'etiti ha, enwere ike ịchịkọta ihe ochie ochie karịa nke ọhụrụ: ụdị ochie nke ihe oyiyi ahụ ga-eji akara Git degharịa nke ọhụrụ. Enwere ike idozi nsogbu ndị dị otú ahụ site na usoro CI / CD (dịka ọmụmaatụ, na GitLab CI, a na-ewepụta pipeline nke ikpeazụ maka usoro nke ime ihe). Otú ọ dị, ọ bụghị usoro niile na-akwado nke a na a ghaghị inwe ụzọ a pụrụ ịdabere na ya iji gbochie nsogbu dị otú ahụ bụ isi.

Gịnị bụ mkpado dabere na ọdịnaya?

Yabụ, kedu ihe mkpado dabere na ọdịnaya - ịkpado onyonyo site na ọdịnaya.

Iji mepụta mkpado Docker, ọ bụghị Git primitives ( alaka Git, Git tag...) ka a na-eji, kama ọ bụ checksum jikọtara ya na:

  • ọdịnaya nke oyiyi. Ihe mkpado NJ onyonyo gosipụtara ọdịnaya ya. Mgbe ị na-ewu ụdị ọhụrụ, njirimara a agaghị agbanwe ma ọ bụrụ na faịlụ ndị dị na foto a agbanwebeghị;
  • akụkọ ihe mere eme nke imepụta onyonyo a na Git. Onyonyo jikọtara ya na alaka Git dị iche iche na akụkọ ihe mere eme dị iche iche site na werf ga-enwe mkpado NJ dị iche iche.

Mkpado njirimara dị otú ahụ bụ ihe a na-akpọ oyiyi ogbo mbinye aka.

Onyonyo ọ bụla nwere usoro nke usoro: from, before-install, git-archive, install, imports-after-install, before-setup... git-latest-patch wdg. Ogbo ọ bụla nwere ihe nchọpụta nke na-egosipụta ọdịnaya ya - mbinye aka ogbo (mbinye aka ogbo).

Foto ikpeazụ, nke nwere usoro ndị a, ka ejiri akara a na-akpọ mbinye aka nke usoro nke usoro ndị a - mbinye aka nkebi, - nke na-emekọ ihe ọnụ maka ọkwa niile nke ihe oyiyi ahụ.

Maka onyonyo ọ bụla site na nhazi werf.yaml N'okwu n'ozuzu, a ga-enwe mbinye aka ya na, ya mere, mkpado Docker.

Mbinye aka nke ogbo na-edozi nsogbu ndị a niile:

  • Na-eguzogide ime ihe Git efu.
  • Ndị na-eguzogide Git na-eme mgbanwe ahụ faịlụ ndị na-adabaghị na onyonyo a.
  • Ọ naghị ebute nsogbu nke imegharị ụdị onyonyo a ugbu a mgbe ịmalitegharị na-ewuli elu maka ọrụ Git ochie nke alaka.

Nke a bụ atụmatụ mkpado akwadoro ugbu a na ọ bụ ndabara na werf maka sistemụ CI niile.

Otu esi eme na iji werf

Iwu a nwere nhọrọ kwekọrọ werf publish: --tag-by-stages-signature=true|false

Na usoro CI, a na-akọwapụta atụmatụ mkpado site na iwu ahụ werf ci-env. Na mbụ, a kọwapụtara paramita maka ya werf ci-env --tagging-strategy=tag-or-branch. Ugbu a, ọ bụrụ na ị kọwapụta werf ci-env --tagging-strategy=stages-signature ma ọ bụ akọwapụtaghị nhọrọ a, werf ga-eji atụmatụ mkpado na ndabara stages-signature. Otu werf ci-env ga-akpaghị aka ịtọ ọkọlọtọ ndị dị mkpa maka iwu ahụ werf build-and-publish (ma ọ bụ werf publish), yabụ ọ nweghị nhọrọ ọzọ achọrọ ka akọwapụtara maka iwu ndị a.

Dịka ọmụmaatụ, iwu a:

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

...nwere ike ịmepụta foto ndị a:

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

ọ bụ 4ef339f84ca22247f01fb335bb19f46c4434014d8daa3d5d6f0e386d bụ mbinye aka nke ogbo nke oyiyi ahụ backendna f44206457e0a4c8a54655543f749799d10a9fe945896dab1c16996c6 - mbinye aka nke usoro onyonyo frontend.

Mgbe ị na-eji ọrụ pụrụ iche werf_container_image и werf_container_env Ọ dịghị mkpa ịgbanwe ihe ọ bụla na ndebiri Helm: ọrụ ndị a ga-emepụta aha oyiyi ziri ezi na-akpaghị aka.

Nhazi ihe atụ na sistemụ CI:

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

Ozi ndị ọzọ gbasara nhazi dị na akwụkwọ a:

Ọnụ

  • Nhọrọ ọhụrụ werf publish --tag-by-stages-signature=true|false.
  • Uru nhọrọ ọhụrụ werf ci-env --tagging-strategy=stages-signature|tag-or-branch (ọ bụrụ na akọwaghị ya, ndabara ga-abụ stages-signature).
  • Ọ bụrụ na i jiribu nhọrọ mkpado maka Git na-eme (WERF_TAG_GIT_COMMIT ma ọ bụ nhọrọ werf publish --tag-git-commit COMMIT), wee jide n'aka na ị ga-agbanye na atụmatụ mkpado ogbo-mbinye aka.
  • Ọ ka mma ka ịgbanwee ọrụ ọhụrụ ozugbo gaa na atụmatụ mkpado ọhụrụ.
  • Mgbe ị na-ebufe na werf 1.1, ọ bụ ihe amamihe dị na ya ịgbanwe ọrụ ochie gaa na atụmatụ mkpado ọhụrụ, mana nke ochie. mkpado-ma ọ bụ-alaka ka na-akwado.

Mkpado dabere na ọdịnaya na-edozi nsogbu niile ekpuchiri n'isiokwu a:

  • Docker mkpado aha iguzogide Git efu na-eme.
  • Nkwụghachi nke aha mkpado Docker nye Git na-eme mgbanwe faịlụ ndị na-adịghị mkpa na onyonyo a.
  • Ọ naghị ebute nsogbu nke imegharị ụdị onyonyo a ugbu a mgbe ịmalitegharị na-ewuli maka Git ochie na-eme maka alaka Git.

Jiri ya! Echefula ileta anyị na GitHubiji mepụta esemokwu ma ọ bụ chọta nke dị, gbakwunye mgbakwunye, mepụta PR ma ọ bụ lelee naanị mmepe nke ọrụ ahụ.

PS

Gụọkwa na blọọgụ anyị:

isi: www.habr.com

Tinye a comment