Ho fana ka matšoao a thehiloeng ho litaba ho mokelli oa werf: hobaneng, hona ho sebetsa joang?

Ho fana ka matšoao a thehiloeng ho litaba ho mokelli oa werf: hobaneng, hona ho sebetsa joang?

werf ke mohloli oa rona o bulehileng oa GitOps CLI sesebelisoa sa ho aha le ho isa lits'ebetso ho Kubernetes. IN tokollo v1.1 karolo e ncha e ile ea hlahisoa ho mokelli oa litšoantšo: ho tšoaea litšoantšo ka litaba kapa dikahare tse thehilweng ka diteng. Ho fihlela joale, leano le tloaelehileng la ho tšoaea werf le ne le kenyelletsa ho tšoaea litšoantšo tsa Docker ka tag ea Git, lekala la Git kapa boitlamo ba Git. Empa merero ena kaofela e na le mefokolo e rarolloang ka botlalo ke leano le lecha la ho tšoaea. Lintlha tse mabapi le eona le hore na ke hobane'ng ha e le ntle hakana li tlas'a sehiloeng.

Ho ntša sehlopha sa li-microservices ho tloha polokelong e le 'ngoe ea Git

Hangata boemo bo etsahala ha kopo e arotsoe ka litšebeletso tse ngata tse ikemetseng kapa tse fokolang. Ho lokolloa ha litšebeletso tsena ho ka etsahala ka boithaopo: litšebeletso tse le 'ngoe kapa tse ngata li ka lokolloa ka nako, ha tse ling kaofela li tlameha ho tsoela pele ho sebetsa ntle le liphetoho. Empa ho ea ka pono ea polokelo ea khoutu le tsamaiso ea morero, ho bonolo haholoanyane ho boloka litšebeletso tse joalo tsa kopo sebakeng se le seng sa polokelo.

Ho na le maemo ha litšebeletso li ikemetse e le kannete 'me li sa amahanngoa le kopo e le' ngoe. Tabeng ena, ba tla be ba le mererong e fapaneng 'me tokollo ea bona e tla etsoa ka mekhoa e fapaneng ea CI / CD morerong o mong le o mong.

Leha ho le joalo, ha e le hantle, bahlahisi ba atisa ho arola kopo e le 'ngoe ho li-microservices tse' maloa, empa ho theha sebaka se arohaneng sa polokelo le morero bakeng sa e 'ngoe le e' ngoe ... ke ho tlōla ho hlakileng. Ke boemo bona boo ho tla buisanoa ka bona ho ea pele: li-microservices tse joalo li fumaneha sebakeng se le seng sa projeke mme litokollo li etsahala ka ts'ebetso e le 'ngoe ho CI/CD.

Ho tšoaea ka lekala la Git le tag ea Git

Ha re re ho sebelisoa leano le atileng haholo la ho tšoaea - tag-kapa-kala. Bakeng sa makala a Git, litšoantšo li tšoailoe ka lebitso la lekala, bakeng sa lekala le le leng ka nako ho na le setšoantšo se le seng se hatisitsoeng ka lebitso la lekala leo. Bakeng sa li-tag tsa Git, litšoantšo li tšoailoe ho latela lebitso la tag.

Ha ho theoa tag e ncha ea Git — ka mohlala, ha mofuta o mocha o lokolloa — ho tla etsoa tag e ncha ea Docker bakeng sa litšoantšo tsohle tsa projeke ho Registry ea 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

Mabitso ana a macha a litšoantšo a fetisoa ka litempele tsa Helm ho tlhophiso ea Kubernetes. Ha o qala ho tsamaisa ka taelo werf deploy lebala le ntse le ntlafatsoa image ho Kubernetes mohloli o bonts'a le ho qala lisebelisoa tse tsamaellanang ka lebaka la lebitso le fetotsoeng la setšoantšo.

bothata: tabeng ha, ha e le hantle, litaba tsa setšoantšo ha li so fetohe ho tloha ha ho phatlalatsoa pele (Git tag), empa ke tag ea eona ea Docker feela, sena se etsahala. e boreleli ho qala ts'ebeliso ena hape, ka hona, ho ka khoneha ho fokotsa nako e itseng. Le hoja ho ne ho se na lebaka la sebele la ho qala bocha.

Ka lebaka leo, ka leano la hona joale la ho etsa li-tagging hoa hlokahala ho terata libaka tse 'maloa tse arohaneng tsa Git mme ho hlaha bothata ba ho hlophisa ho phatlalatsoa ha lipolokelo tsena tse' maloa. Ka kakaretso, morero o joalo o fetoha o boima haholo ebile o rarahane. Ho molemo ho kopanya lits'ebeletso tse ngata sebakeng sa polokelo e le 'ngoe le ho theha li-tag tsa Docker e le hore ho se be le ho qala bocha ho sa hlokahale.

Ho tšoaea ka Git commit

werf e boetse e na le leano la ho tšoaea le amanang le boitlamo ba Git.

Git-commit ke sesupo sa dikahare tsa polokelo ea Git mme se ipapisitse le nalane ea ho hlophisa ea lifaele sebakeng sa polokelo ea Git, ka hona ho bonahala ho utloahala ho e sebelisa bakeng sa ho tšoaea litšoantšo ho Registry ea Docker.

Leha ho le joalo, ho tšoaea ka boitlamo ba Git ho na le mathata a tšoanang le a ho tšoaea makala a Git kapa li-tag tsa Git:

  • Ho ka etsoa boitlamo bo se nang letho bo sa fetoleng lifaele, empa tag ea Docker ea setšoantšo e tla fetoloa.
  • Ho ka etsoa boitlamo ba ho kopanya bo sa fetoleng lifaele, empa tag ea Docker ea setšoantšo e tla fetoloa.
  • Ho ka etsoa boitlamo bo fetolang lifaele tseo ho Git tse sa kenngoeng ka har'a setšoantšo, 'me tag ea Docker ea setšoantšo e tla fetoloa hape.

Ho kenya lebitso la lekala la Git ha ho bontše mofuta oa setšoantšo

Ho na le bothata bo bong bo amanang le leano la ho tšoaea makala a Git.

Ho ngola ka lebitso la lekala ho sebetsa hafeela li-commission lekaleng leo li bokelloa ka tatellano ea tatellano ea liketsahalo.

Haeba morerong oa hajoale mosebelisi a qala ho aha boitlamo ba khale bo amanang le lekala le itseng, werf e tla ngola setšoantšo hape a sebelisa tag e lumellanang ea Docker e nang le mofuta o mocha oa setšoantšo bakeng sa boitlamo ba khale. Lisebelisoa tse sebelisang tag ena ho tloha joale ho ea pele li beha kotsing ea ho hula mofuta o fapaneng oa setšoantšo ha u qala li-pods, ka lebaka leo ts'ebeliso ea rona e tla lahleheloa ke khokahano le sistimi ea CI mme e se ke ea hlola e e-ba teng.

Ntle le moo, ka ho sutumelletsa ka ho latellana lekaleng le le leng ka nako e khuts'oane pakeng tsa bona, boitlamo ba khale bo ka bokelloa hamorao ho feta e ncha: mofuta oa khale oa setšoantšo o tla hlakola o mocha o sebelisa tag ea lekala ea Git. Mathata a joalo a ka rarolloa ke sistimi ea CI/CD (mohlala, ho GitLab CI pompo ea morao-rao e hlahisoa bakeng sa letoto la boitlamo). Leha ho le joalo, ha se litsamaiso tsohle tse tšehetsang sena mme ho tlameha ho be le mokhoa o tšepahalang haholoanyane oa ho thibela bothata bo joalo ba bohlokoa.

Ho fana ka tagging ho latela litaba ke eng?

Kahoo, ke eng e thehiloeng ho li-tagging - ho kenya litšoantšo ka litaba.

Ho theha li-tag tsa Docker, ha se li-primitives tsa Git (lekala la Git, tag ea Git ...) tse sebelisoang, empa ke cheke e amanang le:

  • dikahare tsa setšoantšo. Letšoao la ID la setšoantšo le bontša litaba tsa eona. Ha ho etsoa phetolelo e ncha, sekhetho sena se ke ke sa fetoha haeba lifaele tse setšoantšong li sa fetoha;
  • nalane ea ho theha setšoantšo sena ho Git. Litšoantšo tse amanang le makala a fapaneng a Git le nalane e fapaneng ea kaho ka werf e tla ba le li-tag tsa ID tse fapaneng.

Letšoao le joalo la boitsebiso ke lona le bitsoang mosaeno oa sethala sa setšoantšo.

Setšoantšo se seng le se seng se na le sehlopha sa mekhahlelo: from, before-install, git-archive, install, imports-after-install, before-setup... git-latest-patch etc. Mokhahlelo o mong le o mong o na le sekhetho se bonahatsang litaba tsa sona − mosaeno oa sethala (mosaeno oa sethala).

Setšoantšo sa ho qetela, se nang le mekhahlelo ena, se tšoailoe ka seo ho thoeng ke saeno ea sehlopha sa mekhahlelo ena - methati tshaeno, - e leng kakaretso bakeng sa mekhahlelo eohle ea setšoantšo.

Bakeng sa setšoantšo ka seng ho tloha ho tlhophiso werf.yaml ka kakaretso, ho tla ba le tekeno ea eona, 'me ka hona, tag ea Docker.

Sekhahla sa sethala se rarolla mathata ana kaofela:

  • E hanana le boitlamo ba Git bo se nang letho.
  • Resistant to Git e etsa hore e fetole lifaele tse sa amaneng le setšoantšo.
  • Ha e lebise bothateng ba ho nchafatsa mofuta oa hajoale oa setšoantšo ha o qala bocha bakeng sa mesebetsi ea khale ea Git ea lekala.

Hona joale ke leano le khothaletsoang la ho tšoaea 'me ke la kamehla ho werf bakeng sa litsamaiso tsohle tsa CI.

Mokhoa oa ho nolofalletsa le ho sebelisa werf

Hona joale taelo e na le khetho e lumellanang werf publish: --tag-by-stages-signature=true|false

Tsamaisong ea CI, leano la ho tšoaea le hlalosoa ke taelo werf ci-env. Pele, parameter e ne e hlalosoa bakeng sa eona werf ci-env --tagging-strategy=tag-or-branch. Joale, haeba u bolela werf ci-env --tagging-strategy=stages-signature kapa o seke oa hlakisa khetho ena, werf e tla sebelisa leano la ho etsa li-tagging ka ho sa feleng stages-signature. Sehlopha werf ci-env tla ka tsela e iketsang beha lifolakha tse hlokahalang bakeng sa taelo werf build-and-publish (kapa werf publish), kahoo ha ho na likhetho tse ling tse lokelang ho boleloa bakeng sa litaelo tsena.

Ka mohlala, taelo:

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

...o ka etsa litšoantšo tse latelang:

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

ke 4ef339f84ca22247f01fb335bb19f46c4434014d8daa3d5d6f0e386d ke mosaeno oa methati ea setšoantšo backendle f44206457e0a4c8a54655543f749799d10a9fe945896dab1c16996c6 - tshaeno ea mekhahlelo ea setšoantšo frontend.

Ha o sebelisa mesebetsi e khethehileng werf_container_image и werf_container_env Ha ho na tlhoko ea ho fetola eng kapa eng ho litempele tsa Helm: mesebetsi ena e tla iketsetsa mabitso a nepahetseng a litšoantšo.

Mohlala oa tlhophiso ho sistimi ea CI:

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

Lintlha tse ling mabapi le tlhophiso li fumaneha litokomaneng:

Kakaretso

  • Khetho e ncha werf publish --tag-by-stages-signature=true|false.
  • Ntho e ncha ea khetho werf ci-env --tagging-strategy=stages-signature|tag-or-branch (haeba e sa hlalosoa, ea kamehla e tla ba stages-signature).
  • Haeba u ne u kile ua sebelisa likhetho tsa ho etsa li-tagging bakeng sa boitlamo ba Git (WERF_TAG_GIT_COMMIT kapa kgetho werf publish --tag-git-commit COMMIT), ebe o etsa bonnete ba hore o fetohela ho leano la ho tšoaea methati-saeno.
  • Ho molemo hore hang-hang u fetole merero e mecha ho sekemeng se secha sa ho tšoaea.
  • Ha o fetisetsoa ho werf 1.1, ho bohlokoa ho fetolela merero ea khale ho leano le lecha la ho tšoaea, empa ea khale. tag-kapa-kala e ntse e tšehetsoa.

Thepa e thehiloeng ho litaba e rarolla mathata ohle a boletsoeng sengolong:

  • Ho hanyetsa lebitso la tag ea Docker ho etsa lintho tse se nang letho tsa Git.
  • Resilience ea lebitso la tag ea Docker ho Git e etsa hore e fetole lifaele tse sa amaneng le setšoantšo.
  • Ha e lebise bothateng ba ho ntlafatsa mofuta oa hajoale oa setšoantšo ha o qala bocha bakeng sa boitlamo ba khale ba Git bakeng sa makala a Git.

E sebelise! Mme o seke wa lebala ho re etela ho GitHubho theha bothata kapa ho fumana e seng e ntse e le teng, eketsa tlatsetso, theha PR kapa ho shebella feela nts'etsopele ea morero.

PES

Bala hape ho blog ea rona:

Source: www.habr.com

Eketsa ka tlhaloso