Nsogbu nke "smart" ihicha ihe oyiyi akpa na ngwọta ya na werf

Nsogbu nke "smart" ihicha ihe oyiyi akpa na ngwọta ya na werf

Edemede a na-atụle nsogbu nke ihicha onyonyo na-agbakọ na ndekọ akpa (Docker Registry na analogues) na eziokwu nke pipeline CI/CD ọgbara ọhụrụ maka ngwa ala igwe ojii ewepụtara na Kubernetes. A na-enye ihe ndị bụ isi maka mkpa nke ihe oyiyi na ihe isi ike ndị na-akpata na nhazi akpaghị aka, ịchekwa ohere na izute mkpa nke otu. N'ikpeazụ, n'iji ihe atụ nke otu ọrụ Open Source, anyị ga-agwa gị otu esi emeri nsogbu ndị a.

Okwu Mmalite

Ọnụọgụ onyonyo dị na ndekọ akpa nwere ike ito ngwa ngwa, na-ewelite ohere nchekwa karịa wee si otú a na-abawanye ọnụ ahịa ya nke ukwuu. Iji jikwaa, kpachie ma ọ bụ jikwaa uto anabatara nke oghere dị na ndekọ, a nabatara ya:

  1. jiri ọnụ ọgụgụ mkpado edobere maka onyonyo;
  2. hichaa onyonyo n'ụzọ ụfọdụ.


A na-anabata mmachi mbụ mgbe ụfọdụ maka obere otu. Ọ bụrụ na ndị mmepe nwere mkpado na-adịgide adịgide zuru oke (latest, main, test, boris wdg). A sị ka e kwuwe, a na-ehichapụ ihe oyiyi niile na-adịghị mkpa, ọ dịghịkwa ọrụ ọ bụla fọdụrụ maka ihicha (ihe niile bụ onye na-ekpofu ihe na-eme mgbe niile).

Agbanyeghị, usoro a na-amachi mmepe nke ukwuu yana ọ naghị emetụta ọrụ CI/CD ọgbara ọhụrụ. Akụkụ dị mkpa nke mmepe ahụ bụ akpaaka, nke na-enye gị ohere ịnwale, tinye ma nyefee ọrụ ọhụrụ nye ndị ọrụ ngwa ngwa. Dịka ọmụmaatụ, n'ime ọrụ anyị niile, a na-emepụta pipeline CI na-akpaghị aka na ntinye nke ọ bụla. N'ime ya, a na-agbakọta ihe oyiyi ahụ, nwalere, na-atụgharị gaa na sekit Kubernetes dị iche iche maka debugging na ego ndị fọdụrụ, ma ọ bụrụ na ihe niile dị mma, mgbanwe ahụ na-eru onye ọrụ njedebe. Ma nke a abụghịzi sayensị rọketi, kama ọ bụ ihe na-eme kwa ụbọchị maka ọtụtụ - ọ ga-abụ maka gị, ebe ị na-agụ akụkọ a.

Ebe ọ bụ na a na-arụ ọrụ ndozi na ịmepụta ọrụ ọhụrụ n'otu n'otu, na mwepụta nwere ike ịrụ ọtụtụ ugboro n'ụbọchị, o doro anya na usoro mmepe ahụ na-esonyere ọnụ ọgụgụ dị ịrịba ama, nke pụtara. ọnụ ọgụgụ buru ibu nke ihe oyiyi na ndekọ. N'ihi ya, okwu nke ịhazi nhazi nke ọma nke ndekọ ndekọ na-ebilite, i.e. wepụ ihe oyiyi na-adịghị mkpa.

Ma olee otu ị ga-esi chọpụta ma onyonyo ọ dabara?

Usoro maka mkpa nke onyonyo a

N'ọtụtụ n'ime ikpe, isi ihe ga-abụ:

1. Nke mbụ (nke kacha pụta ìhè na nke kachasị njọ) bụ ihe oyiyi na eji ugbu a na Kubernetes. Iwepụ ihe onyonyo ndị a nwere ike ibute nnukwu ụgwọ nrụpụta obere oge (dịka ọmụmaatụ, enwere ike ịchọrọ onyonyo maka mmegharị) ma ọ bụ mebie mbọ nke otu nbibi na loops ọ bụla. (N'ihi nke a anyị mere ọbụna pụrụ iche Onye na-ebupụ Prometheus, nke na-achọpụta enweghị onyonyo dị na ụyọkọ Kubernetes ọ bụla.)

2. Nke abụọ (obere nke doro anya, ma dịkwa oke mkpa na ọzọ metụtara nrigbu) - oyiyi na achọrọ maka nlọghachi azụ ma ọ bụrụ na achọpụta nsogbu siri ike na ụdị ugbu a. Dịka ọmụmaatụ, n'ihe gbasara Helm, ndị a bụ onyonyo ejiri na ụdị ntọhapụ echekwara. (Site n'ụzọ, na ndabara na Helm njedebe bụ ntụgharị 256, mana o yighị ka onye ọ bụla kwesịrị ịchekwa. dị otú a ọnụ ọgụgụ buru ibu nke nsụgharị?...) E kwuwerị, anyị, karịsịa, na-echekwa nsụgharị ka anyị nwee ike iji ha emechaa, i.e. ' tụgharịa azụ' nye ha ma ọ dị mkpa.

3. Nke atọ - mkpa onye nrụpụta: Ihe oyiyi niile metụtara ọrụ ha ugbu a. Dịka ọmụmaatụ, ọ bụrụ na anyị na-atụle PR, mgbe ahụ ọ bụ ihe ezi uche dị na ya ịhapụ ihe oyiyi kwekọrọ na njedebe ikpeazụ na, sịnụ, nke gara aga: n'ụzọ dị otú a onye mmepụta nwere ike ịlaghachi ngwa ngwa n'ọrụ ọ bụla ma rụọ ọrụ na mgbanwe ọhụrụ.

4. Nke anọ - onyonyo na kwekọrịtara na ụdị ngwa anyị, i.e. bụ ngwaahịa ikpeazụ: v1.0.0, 20.04.01/XNUMX/XNUMX, sierra, wdg.

NB: A haziri njirisi akọwapụtara ebe a dabere na ahụmịhe ya na ọtụtụ otu mmepe sitere na ụlọ ọrụ dị iche iche na-emekọrịta ihe. Otú ọ dị, n'ezie, dabere na nkọwapụta na usoro mmepe na akụrụngwa eji eme ihe (dịka ọmụmaatụ, Kubernetes adịghị eji), njirisi ndị a nwere ike ịdị iche.

Ntozu na ngwọta dị adị

Ọrụ ndị na-ewu ewu na ndekọ ndekọ akpa, dị ka a na-achị, na-enye iwu nhichapụ ihe oyiyi nke onwe ha: n'ime ha ị nwere ike ịkọwa ọnọdụ nke ewepụrụ mkpado na ndekọ. Agbanyeghị, ọnọdụ ndị a nwere oke site na oke dịka aha, oge okike na ọnụọgụ mkpado*.

* Na-adabere na mmejuputa ndebanye aha akpa. Anyị tụlere ohere nke azịza ndị a: Azure CR, Docker Hub, ECR, GCR, GitHub Packages, GitLab Container Registry, Harbor Registry, JFrog Artifatory, Quay.io - dị ka nke Septemba'2020.

Ntọala nke paramita a zuru oke iji meju nha nke anọ - ya bụ, ịhọrọ onyonyo kwekọrọ na nsụgharị. Agbanyeghị, maka njirisi ndị ọzọ niile, mmadụ ga-ahọrọ ụfọdụ ụdị nkwekọrịta nkwekọrịta (a siri ike ma ọ bụ, n'ụzọ ọzọ, amụma dị nro karị) - dabere na atụmanya na ike ego.

Dịka ọmụmaatụ, akara nke atọ - metụtara mkpa nke ndị mmepe - nwere ike idozi site n'ịhazi usoro n'ime otu: aha kpọmkwem ihe oyiyi, na-ejigide ndepụta ohere pụrụ iche na nkwekọrịta n'ime. Mana n'ikpeazụ ọ ka kwesịrị ka akpaaka. Ma ọ bụrụ na ike nke ngwọta ndị dị njikere ezughị, ị ga-eme ihe nke aka gị.

Ọnọdụ dị na njirisi abụọ mbụ yiri nke ahụ: ha enweghị ike afọ ojuju na-enwetaghị data sitere na sistemụ mpụga - nke etinyere ngwa (n'ọnọdụ anyị, Kubernetes).

Ihe atụ nke usoro ọrụ na Git

Ka anyị kwuo na ị na-arụ ọrụ dị ka nke a na Git:

Nsogbu nke "smart" ihicha ihe oyiyi akpa na ngwọta ya na werf

Akara ngosi nwere isi na eserese ahụ na-egosi onyonyo akpa etinyere ugbu a na Kubernetes maka ndị ọrụ ọ bụla (ndị ọrụ njedebe, ndị nyocha, ndị njikwa, wdg) ma ọ bụ ndị mmepe na-eji maka ndozi na ebumnuche ndị yiri ya.

Kedu ihe ga - eme ma ọ bụrụ na amụma mkpocha na-ahapụ naanị ka idowe onyonyo (anaghị ehichapụ) site na aha mkpado nyere?

Nsogbu nke "smart" ihicha ihe oyiyi akpa na ngwọta ya na werf

N'ụzọ doro anya, ọnọdụ dị otú ahụ agaghị eme onye ọ bụla obi ụtọ.

Kedu ihe ga-agbanwe ma ọ bụrụ na amụma ekwe ka ihichapụ ihe oyiyi? dị ka oge enyere / ọnụ ọgụgụ nke ikpeazụ eme?

Nsogbu nke "smart" ihicha ihe oyiyi akpa na ngwọta ya na werf

Nsonaazụ abụrụla nke ọma, mana ọ ka dị anya na ọ dị mma. A sị ka e kwuwe, anyị ka nwere ndị mmepe chọrọ onyonyo na ndekọ (ma ọ bụ ọbụna ebuga na K8s) iji dezie ahụhụ ...

Iji chịkọta ọnọdụ ahịa ugbu a: ọrụ ndị dị na ndekọ ndekọ akpa adịghị enye mgbanwe zuru oke mgbe ị na-ehicha, isi ihe kpatara nke a bụ. ọ dịghị ụzọ na-emekọrịta ihe na mpụga ụwa. Ọ tụgharịrị na a na-amanye otu ndị chọrọ mgbanwe dị otú ahụ ka ha mejuputa nchapụta onyonyo "site na mpụga", na-eji API Docker Registry (ma ọ bụ API ala nke mmejuputa ya kwekọrọ).

Otú ọ dị, anyị na-achọ ngwọta zuru ụwa ọnụ nke ga-emezigharị ihe oyiyi maka otu dị iche iche site na iji ndekọ dị iche iche ...

Ụzọ anyị maka nhicha ihe oyiyi eluigwe na ala

Ebee ka mkpa a si abịa? Nke bụ eziokwu bụ na anyị abụghị otu ndị mmepe dị iche, mana otu na-ejere ọtụtụ n'ime ha ozi ozugbo, na-enyere aka dozie nsogbu CI / CD n'ụzọ zuru ezu. Na ngwá ọrụ teknụzụ bụ isi maka nke a bụ ọrụ Open Source werf. Ihe dị iche iche ya bụ na ọ naghị arụ otu ọrụ, ma na-esonyere usoro nnyefe na-aga n'ihu n'oge niile: site na mgbakọ na ntinye.

Ibisa onyonyo na ndekọ * (ozugbo emechara ya) bụ ọrụ doro anya nke akụrụngwa dị otú ahụ. Ma ebe ọ bụ na a na-etinye ihe oyiyi ahụ n'ebe ahụ maka nchekwa, mgbe ahụ - ọ bụrụ na nchekwa gị abụghị nke na-akparaghị ókè - ị kwesịrị ị na-ahụ maka nhicha ha na-esote. A ga-atụlekwa otu anyị siri nweta ihe ịga nke ọma na nke a, na-eju ihe niile akọwapụtara.

* Ọ bụ ezie na ndebanye aha n'onwe ha nwere ike ịdị iche (Docker Registry, GitLab Container Registry, Harbor, wdg), ndị ọrụ ha na-eche otu nsogbu ahụ ihu. Ihe ngwọta zuru ụwa ọnụ n'ọnọdụ anyị adịghị adabere na mmejuputa nke ndekọ aha, n'ihi na na-agba ọsọ na mpụga nke ndekọ onwe ha ma na-enye otu omume maka onye ọ bụla.

Ọ bụ ezie na anyị na-eji werf dị ka mmejuputa ihe atụ, anyị nwere olile anya na ụzọ ndị a na-esi eme ya ga-aba uru nye ndị otu ndị ọzọ nwere nsogbu ndị yiri ya.

Ya mere, anyị ji ọrụ n'aka mpụga mmejuputa usoro maka ihicha ihe oyiyi - kama ike ndị ahụ arụnyerelarị n'ime ndekọ maka arịa. Nzọụkwụ mbụ bụ iji Docker Registry API iji mepụta otu amụma oge ochie maka ọnụọgụ mkpado na oge okike ha (e kwuru n'elu). Agbakwunyere na ha ndepụta kwe ka dabere na onyonyo ejiri n'ime akụrụngwa etinyegoro, i.e. Kubernetes. Maka nke ikpeazụ, o zuru ezu iji Kubernetes API iji nyochaa akụrụngwa niile etinyegoro wee nweta ndepụta nke ụkpụrụ. image.

Ihe ngwọta a na-adịghị ahụkebe edozi nsogbu kachasị njọ (njirimara nke 1), mana ọ bụ naanị mmalite nke njem anyị iji meziwanye usoro nhicha. Nzọụkwụ ọzọ - na nke na-adọrọ mmasị karị - bụ mkpebi ahụ jikọtara onyonyo ebipụtara na akụkọ Git.

Atụmatụ mkpado

Iji malite, anyị họọrọ ụzọ nke ihe oyiyi ikpeazụ kwesịrị ịchekwa ozi dị mkpa maka ihicha, ma wuo usoro ahụ na atụmatụ mkpado. Mgbe ị na-ebipụta onyonyo, onye ọrụ họrọ otu nhọrọ mkpado (git-branch, git-commit ma ọ bụ git-tag) ma jiri uru kwekọrọ. Na sistemu CI, edobere ụkpụrụ ndị a na-akpaghị aka dabere na mgbanwe gburugburu ebe obibi. N'ezie Ejikọtara onyonyo ikpeazụ na otu Git primitive, na-echekwa data dị mkpa maka ihicha na labels.

Uzo a weputara otutu atumatu nke kwere ka ejiri Git mee otu isi iyi nke eziokwu:

  • Mgbe ị na-ehichapụ alaka/ mkpado dị na Git, a na-ehichapụ foto ndị emetụtara na ndekọ ahụ na-akpaghị aka.
  • Enwere ike ijikwa ọnụọgụ onyonyo ejikọtara na mkpado Git na mmebe site na ọnụọgụ nke mkpado ejiri na atụmatụ ahọpụtara yana oge emere mmekọ ahụ.

N'ozuzu, mmejuputa a rụpụtara na-egbo mkpa anyị, mana ihe ịma aka ọhụrụ chere anyị n'oge na-adịghị anya. Nke bụ eziokwu bụ na ka anyị na-eji atụmatụ mkpado dabere na Git primitives, anyị zutere ọtụtụ adịghị ike. (Ebe ọ bụ na nkọwa ha karịrị akarị nke isiokwu a, onye ọ bụla nwere ike ịmara onwe ya na nkọwa ya ebe a.) Ya mere, ebe anyị kpebiri ịgbanwe gaa n'ụzọ dị irè karị maka mkpado (ịkọ mkpado dabeere na ọdịnaya), anyị ga-atụgharị uche na mmejuputa nke nhicha ihe oyiyi.

Algọridim ọhụrụ

Gịnị kpatara? Site na mkpado dabere na ọdịnaya, mkpado ọ bụla nwere ike imeju ọtụtụ ntinye na Git. Mgbe ị na-ehicha ihe onyonyo, ị nweghịzi ike iche naanị site na ntinye ebe agbakwunyere mkpado ọhụrụ na ndekọ.

Maka algọridim ihicha ọhụrụ, e kpebiri ịkwaga na atụmatụ mkpado ma wuo ya meta-oyiyi usoro, nke ọ bụla n'ime ha na-echekwa ụyọkọ:

  • ntinye nke e bipụtara akwụkwọ ahụ (ọ dịghị mkpa ma agbakwunyere ihe oyiyi ahụ, gbanwee ma ọ bụ nọgide na-adị na ndekọ akpa);
  • na njirimara ime anyị kwekọrọ na onyonyo agbakọtara.

N'ikwu ya n'ụzọ ọzọ, e nyere ya ijikọ mkpado ebipụtara na ntinye aka na Git.

Nhazi ikpeazụ na n'ozuzu algọridim

Mgbe ị na-ahazi nhicha, ndị ọrụ nwere ohere ugbu a atumatu na-ahọrọ onyonyo dị ugbu a. Akọwapụtara ụdị iwu ọ bụla:

  • ọtụtụ ntụaka, ya bụ. Git mkpado ma ọ bụ alaka Git nke a na-eji n'oge nyocha;
  • yana oke onyonyo achọtara maka ntụaka ọ bụla sitere na ntọala ahụ.

Iji maa atụ, nke a bụ ihe nhazi amụma ndabara malitere ịdị ka:

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

Nhazi a nwere atumatu atọ na-agbaso iwu ndị a:

  1. Chekwaa onyonyo a maka mkpado Git iri ikpeazụ (site na ụbọchị okike nke mkpado).
  2. Chekwaa ihe karịrị onyonyo 2 e bipụtara n'izu gara aga maka ihe karịrị eri iri nwere ọrụ n'ime izu gara aga.
  3. Chekwa onyonyo iri maka alaka main, staging и production.

Algọridim ikpeazụ na-agbada n'usoro ndị a:

  • Iweghachite ngosipụta site na ndekọ akpa.
  • Ewezuga onyonyo eji na Kubernetes, n'ihi na Anyị ahọpụtalarị ha site na ịtụ vootu K8 API.
  • Na-enyocha akụkọ Git na ewepu onyonyo dabere na amụma akọwapụtara.
  • Na-ewepụ onyonyo ndị fọdụrụ.

Nlaghachi na ihe atụ anyị, nke a bụ ihe na-eme werf:

Nsogbu nke "smart" ihicha ihe oyiyi akpa na ngwọta ya na werf

Otú ọ dị, ọbụlagodi na ị naghị eji werf, usoro yiri nke ahụ maka nhicha ihe oyiyi dị elu - na otu mmejuputa ma ọ bụ ọzọ (dị ka usoro kachasị mma maka mkpado ihe oyiyi) - nwere ike itinye ya na usoro / akụrụngwa ndị ọzọ. Iji mee nke a, ọ ga-ezuru icheta nsogbu ndị na-ebilite ma chọta ohere ndị ahụ na nchịkọta gị nke na-enye gị ohere ijikọta ngwọta ha nke ọma dị ka o kwere mee. Anyị na-atụ anya na ụzọ anyị gara ga-enyere gị aka iji nkọwa na echiche ọhụrụ lelee okwu gị.

nkwubi

  • N'oge na-adịghị anya, ọtụtụ ndị otu na-ezute nsogbu nke oke ndekọ aha.
  • Mgbe ị na-achọ ihe ngwọta, ọ dị mkpa na mbụ iji chọpụta njirisi maka mkpa nke onyinyo ahụ.
  • Ngwá ọrụ ndị ọrụ ndekọ akpa na-ewu ewu na-enye gị ohere ịhazi nhicha dị mfe nke na-adịghị echebara "ụwa n'èzí" echiche: ihe oyiyi ndị a na-eji na Kubernetes na ihe dị iche iche nke ọrụ otu.
  • Algọridim na-agbanwe agbanwe na nke ọma ga-enwerịrị nghọta nke usoro CI/CD ma rụọ ọrụ ọ bụghị naanị na data onyonyo Docker.

PS

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

isi: www.habr.com

Tinye a comment