werf - sesebelisoa sa rona sa CI / CD ho Kubernetes (kakaretso le tlaleho ea video)

La 27 Motšeanong holong e kholo ea kopano ea DevOpsConf 2019, e neng e tšoaretsoe e le karolo ea mokete. RIT++ 2019, e le karolo ea karolo ea "Tlhahiso e Tsoelang Pele", tlaleho e ile ea fuoa "werf - sesebelisoa sa rona sa CI / CD ho Kubernetes". E bua ka tseo mathata le liphephetso tseo motho e mong le e mong a tobanang le tsona ha a romella Kubernetes, hammoho le li-nuances tse ka 'nang tsa se ke tsa bonahala hang-hang. Ha re sekaseka litharollo tse ka bang teng, re bonts'a hore na sena se kengoa ts'ebetsong joang sesebelisoa sa Open Source werf.

Ho tloha ha re fana ka tlhahiso, ts'ebeliso ea rona (eo pele e neng e tsejoa e le dapp) e fihlile sehlohlolong sa nalane ea Linaleli tse 1000 ho GitHub - re ts'epa hore sechaba sa eona se ntseng se hola sa basebelisi se tla nolofaletsa lienjiniere tse ngata tsa DevOps.

werf - sesebelisoa sa rona sa CI / CD ho Kubernetes (kakaretso le tlaleho ea video)

Kahoo, ha re tsebiseng video ea tlaleho (~ metsotso e 47, e na le tsebo e ngata ho feta sengoloa) le karolo ea mantlha e tsoang ho eona ka mokhoa oa mongolo. Tsamaea!

Ho tsamaisa khoutu ho Kubernetes

Puo ha e sa tla hlola e bua ka werf, empa ka CI / CD ho Kubernetes, ho bolelang hore software ea rona e kentsoe ka har'a lijana tsa Docker. (Ke buile ka sena ho Tlaleho ea 2016), 'me K8s e tla sebelisoa ho e tsamaisa tlhahiso (ho feta ka sena ho Selemo sa 2017).

Ho tsamaisoa ho shebahala joang Kubernetes?

  • Ho na le polokelo ea Git e nang le khoutu le litaelo tsa ho e aha. Sesebelisoa se hahiloe setšoantšong sa Docker mme se phatlalalitsoe ho Registry ea Docker.
  • Sebaka se tšoanang sa polokelo se boetse se na le litaelo tsa mokhoa oa ho tsamaisa le ho tsamaisa ts'ebeliso. Sethaleng sa ho romelloa, litaelo tsena li romelloa ho Kubernetes, e amohelang setšoantšo se lakatsehang ho tsoa ho registry ebe e e qala.
  • Ho feta moo, hangata ho na le liteko. Tse ling tsa tsena li ka etsoa ha ho phatlalatsoa setšoantšo. U ka boela (ho latela litaelo tse tšoanang) ho kenya kopi ea kopo (sebakeng se arohaneng sa mabitso sa K8 kapa sehlopha se arohaneng) 'me u tsamaise liteko moo.
  • Qetellong, o hloka sistimi ea CI e amohelang liketsahalo ho tsoa ho Git (kapa konopo ea konopo) mme e bitsa methati eohle e khethiloeng: ho aha, ho phatlalatsa, ho tsamaisa, tlhahlobo.

werf - sesebelisoa sa rona sa CI / CD ho Kubernetes (kakaretso le tlaleho ea video)

Ho na le lintlha tse 'maloa tsa bohlokoa mona:

  1. Hobane re na le meaho e sa fetoheng (lisebelisoa tse sa fetoheng), sets'oants'o sa ts'ebeliso se sebelisoang methating eohle (sethala, tlhahiso, joalo-joalo), ho lokela hoba le a le mong. Ke buile ka sena ka botlalo le ka mehlala. mona.
  2. Hobane re latela meralo ea motheo joalo ka mokhoa oa khoutu (IaC), khoutu ea kopo, litaelo tsa ho e kopanya le ho e qala e lokela ho ba hantle sebakeng se le seng sa polokelo. Ho fumana lintlha tse ling ka sena, bona tlaleho e tšoanang.
  3. Ketane ea thomello (Delivery) hangata re e bona tjena: kopo e ile ea bokelloa, ea lekoa, ea lokolloa (mohato oa tokollo) 'me ke eona - ho tsamaisoa ho etsahetse. Empa bonneteng, mosebelisi o fumana seo o se rometseng, ha joale ha u ne u e isa tlhahisong, le ha a ne a khona ho ea mono eaba tlhahiso ena ea sebetsa. Kahoo ke lumela hore ketane ea ho fana e felile feela sethaleng sa ts'ebetso (matha), kapa ka ho toba, esita le nakong eo khoutu e neng e tlosoa ho eona (ho e nkela sebaka ka e ncha).

Ha re khutleleng leanong le kaholimo la phano ho Kubernetes: ha lea qaptjoa ke rona feela, empa ke motho e mong le e mong ea sebetsanang le bothata bona. Ebile, mohlala ona o se o bitsoa GitOps (o ka bala ho eketsehileng ka lentsoe le mehopolo e ka morao mona). Ha re shebeng mekhahlelo ea morero.

Haha sethala

Ho ka bonahala eka o ka bua ka ho aha litšoantšo tsa Docker ka 2019, ha motho e mong le e mong a tseba ho ngola Dockerfiles le ho matha. docker build?.. Mona ke mekhelo eo ke ratang ho e ela hloko:

  1. Boima ba setšoantšo litaba, kahoo sebelisa mekhahlelo e mengataho siea setšoantšong feela kopo e hlileng e hlokahalang bakeng sa ts'ebetso.
  2. Palo ea lihlopha e tlameha ho fokotsoa ka ho kopanya liketane tsa RUN-e laela ho ya ka moelelo.
  3. Leha ho le joalo, sena se eketsa mathata debugging, hobane ha kopano e senyeha, o tlameha ho fumana taelo e nepahetseng ho tloha ketane e bakileng bothata.
  4. Lebelo la kopano bohlokoa hobane re batla ho potlakela ho ntša liphetoho le ho bona liphetho. Mohlala, ha u batle ho aha bocha lilaebrari tsa lipuo nako le nako ha u etsa kopo.
  5. Hangata ho tsoa polokelong e le 'ngoe ea Git eo u e hlokang litšoantšo tse ngata, e ka rarolloang ke sehlopha sa Dockerfiles (kapa mekhahlelo e boletsoeng faeleng e le 'ngoe) le mongolo oa Bash o nang le kopano ea bona e latellanang.

Ena e ne e mpa e le ntlha ea thaba eo bohle ba talimaneng le eona. Empa ho na le mathata a mang, haholo-holo:

  1. Hangata sethaleng sa kopano re hloka ho hong thaba (mohlala, boloka sephetho sa taelo joalo ka apt bukeng ea motho oa boraro).
  2. Re batla Ea nahanang sebakeng sa ho ngola ka kgaketla.
  3. Re batla haha ntle le Docker (ke hobane'ng ha re hloka mochine o eketsehileng oa sebele oo ho oona re hlokang ho lokisa ntho e 'ngoe le e' ngoe bakeng sa see, ha re se re ntse re e-na le sehlopha sa Kubernetes moo re ka tsamaisang lijana?).
  4. Kopano e bapileng, e ka utloisisoang ka litsela tse fapaneng: litaelo tse fapaneng tse tsoang ho Dockerfile (haeba ho sebelisoa mekhahlelo e mengata), likopo tse 'maloa tsa polokelo e le' ngoe, Dockerfiles tse 'maloa.
  5. Kopano e ajoang: Re batla ho bokella lintho ka pods tse "ephemeral" hobane cache ea bona ea nyamela, ho bolelang hore e hloka ho bolokoa kae-kae ka thoko.
  6. Qetellong, ke ile ka bolela tlhōrō ea litakatso automagic: E ka ba hantle hore u ee sebakeng sa polokelo, u thaepe taelo 'me u fumane setšoantšo se lokiselitsoeng, se kopantsoeng ka kutloisiso ea hore na u ka etsa joang le hore na u etse eng ka nepo. Leha ho le joalo, ka bonna ha ke na bonnete ba hore li-nuances tsohle li ka bonoa esale pele ka tsela ena.

'Me merero ke ena:

  • moby/buildkit - sehahi sa Docker Inc (se seng se kopantsoe le mefuta ea morao-rao ea Docker), se lekang ho rarolla mathata ana kaofela;
  • kaniko - sehahi se tsoang ho Google se u lumellang hore u hahe ntle le Docker;
  • Buildpacks.io - Boiteko ba CNCF ba ho etsa boselamose bo itekanetseng, 'me, haholo-holo, tharollo e thahasellisang e nang le rebase bakeng sa lihlopha;
  • le bongata ba lisebelisoa tse ling, joalo ka hahaah, genuinetools/img...

... 'me u shebe hore na ba na le linaleli tse kae ho GitHub. Ke hore, ka lehlakoreng le leng, docker build e teng mme e ka etsa ho hong, empa bonneteng taba ha e ea rarolloa ka botlalo - bopaki ba sena ke tsoelo-pele e tšoanang ea babokelli ba mefuta e meng, e 'ngoe le e' ngoe e rarollang karolo e itseng ea mathata.

Kopano ka werf

Kahoo re ile ra tlameha werf (pejana tumileng joalo ka dapp) - Sesebelisoa se bulehileng se tsoang k'hamphaning ea Flant, eo esale re e etsa ka lilemo tse ngata. Tsohle li qalile lilemo tse 5 tse fetileng ka lingoloa tsa Bash tse ntlafalitseng kopano ea Dockerfiles, mme bakeng sa lilemo tse 3 tse fetileng nts'etsopele e felletseng e entsoe ka har'a moralo oa projeke e nang le polokelo ea eona ea Git. (pele ho Ruby, ebe joale ngoloa bocha ho ea, 'me ka nako e ts'oanang e reha lebitso). Ke mathata afe a kopano a rarolloang ho werf?

werf - sesebelisoa sa rona sa CI / CD ho Kubernetes (kakaretso le tlaleho ea video)

Mathata a moriti o moputsoa a se a kentsoe ts'ebetsong, mohaho o tšoanang o entsoe ka har'a moeti a le mong, 'me litaba tse totobalitsoeng ka mosehla li reretsoe ho phethoa qetellong ea lehlabula.

Mothati oa phatlalatso ho ngoliso (phatlalatsa)

Re ile ra letsetsa docker push... - ke eng e ka bang thata ka ho kenya setšoantšo ho registry? Ebe joale ho hlaha potso: "Ke lokela ho beha tag efe setšoantšong?" E hlaha ka lebaka leo re nang le lona Phallo (kapa leano le leng la Git) le Kubernetes, mme indasteri e leka ho netefatsa hore se etsahalang Kubernetes se latela se etsahalang Git. Ntle le moo, Git ke eona feela mohloli oa 'nete oa rona.

Ke eng e thata ka see? Netefatsa ho ikatisa: ho tsoa ho boitlamo ho Git, bo sa fetoheng ka tlhaho (ha e fetohe), ho setšoantšo sa Docker, se lokelang ho bolokoa se tšoana.

E boetse ke ea bohlokoa ho rōna tseba tšimoloho, hobane re batla ho utloisisa hore na kopo e sebetsang ho Kubernetes e hahiloe ho tsoa hokae (joale re ka etsa lintho tse fapaneng le tse tšoanang).

Mekhoa ea ho Theha

Ea pele e bonolo letsatsi la git. Re na le ngoliso e nang le setšoantšo se tšoailoeng e le 1.0. Kubernetes e na le sethala le tlhahiso, moo setšoantšo sena se kentsoeng. Ho Git re etsa boitlamo mme ka nako e 'ngoe rea tšoaea 2.0. Re e bokella ho latela litaelo tse tsoang polokelong ebe re e beha ka har'a registry ka tag 2.0. Re e kenya sethaleng, 'me haeba tsohle li lokile, joale re e hlahise.

werf - sesebelisoa sa rona sa CI / CD ho Kubernetes (kakaretso le tlaleho ea video)

Bothata ba mokhoa ona ke hore re qala ho beha tag, ebe re e leka ebe re e phutha. Hobaneng? Taba ea pele, ha e utloahale: re fana ka mofuta oa software eo re e-so ka re e leka (re ke ke ra etsa ka tsela e fapaneng, hobane e le hore re hlahlobe, re hloka ho beha tag). Taba ea bobeli, tsela ena ha e tsamaellane le Gitflow.

Khetho ea bobeli ke git commit + tag. Lekala le leholo le na le tag 1.0; bakeng sa eona ho ngolisoe - setšoantšo se rometsoeng tlhahiso. Ntle le moo, sehlopha sa Kubernetes se na le ponelopele le li-contours tsa sethala. E latelang re latela Gitflow: lekaleng le ka sehloohong bakeng sa nts'etsopele (develop) re etsa likarolo tse ncha, tse hlahisang boitlamo le sekhetho #c1. Re e bokella le ho e phatlalatsa ngolisong re sebelisa ID ena (#c1). Ka sesupo se tšoanang re qala ho bona esale pele. Re etsa se tšoanang ka boitlamo #c2 и #c3.

Ha re hlokomela hore ho na le likarolo tse lekaneng, re qala ho tsitsisa ntho e 'ngoe le e' ngoe. Theha lekala ho Git release_1.1 (ka motheo #c3 ho tswa develop). Ha ho na tlhoko ea ho bokella tokollo ena, hobane ... sena se entsoe mohatong o fetileng. Ka hona, re ka e fetisetsa feela sethaleng. Re lokisa liphoso ka hare #c4 'me ka mokhoa o ts'oanang o tsoela pele ho ea sethaleng. Ka nako e ts'oanang, nts'etsopele e ntse e tsoela pele develop, moo liphetoho li nkuoang nako le nako release_1.1. Ka nako e 'ngoe, re fumana boitlamo bo hlophisitsoeng le ho kenngoa sethaleng, seo re se thabelang (#c25).

Ebe re kopanya (ka pele-pele) lekala la tokollo (release_1.1) ka master. Re beha tag e nang le mofuta o mocha boitlamo bona (1.1). Empa setšoantšo sena se se se bokelitsoe ho registry, kahoo e le hore re se ke ra e bokella hape, re eketsa letšoao la bobeli ho setšoantšo se teng (hona joale se na le li-tag ho registry. #c25 и 1.1). Ka mor'a moo, re e fetisetsa ho tlhahiso.

Ho na le bothata ba hore setšoantšo se le seng feela se kentsoeng sethaleng (#c25), 'me tlhahiso ea eona e fapane (1.1), empa rea ​​tseba hore "'meleng" tsena ke setšoantšo se ts'oanang se tsoang ho registry.

werf - sesebelisoa sa rona sa CI / CD ho Kubernetes (kakaretso le tlaleho ea video)

Phoso ea 'nete ke hore ha ho na tšehetso bakeng sa ho kopanya li-commit, u tlameha ho ea pele.

Re ka fetela pele mme ra etsa leqheka ... Ha re shebeng mohlala oa Dockerfile e bonolo:

FROM ruby:2.3 as assets
RUN mkdir -p /app
WORKDIR /app
COPY . ./
RUN gem install bundler && bundle install
RUN bundle exec rake assets:precompile
CMD bundle exec puma -C config/puma.rb

FROM nginx:alpine
COPY --from=assets /app/public /usr/share/nginx/www/public

Ha re theheng faele ho eona ho latela molao-motheo o latelang:

  • SHA256 ho tsoa ho li-identifiers tsa litšoantšo tse sebelisitsoeng (ruby:2.3 и nginx:alpine), e leng lipalo-palo tsa litaba tsa tsona;
  • lihlopha tsohle (RUN, CMD joalo joalo.);
  • SHA256 ho tsoa ho lifaele tse kentsoeng.

... 'me u nke checksum (hape SHA256) ho tsoa faeleng e joalo. Sena tshaeno ntho e ngoe le e ngoe e hlalosang litaba tsa setšoantšo sa Docker.

werf - sesebelisoa sa rona sa CI / CD ho Kubernetes (kakaretso le tlaleho ea video)

Ha re khutleleng setšoantšong le sebakeng sa boitlamo re tla sebelisa li-signature tse joalo, ke. tšoaea litšoantšo ka li-signature.

werf - sesebelisoa sa rona sa CI / CD ho Kubernetes (kakaretso le tlaleho ea video)

Joale, ha ho hlokahala, mohlala, ho kopanya liphetoho ho tloha ho tokollo ho ea ho master, re ka etsa boitlamo ba 'nete ba ho kopanya: e tla ba le sekhetho se fapaneng, empa tshaeno e tšoanang. Ka identifier e tšoanang re tla fetisetsa setšoantšo ho tlhahiso.

Phoso ke hore joale ho ke ke ha khoneha ho tseba hore na ke boitlamo ba mofuta ofe bo sutumelitsoeng tlhahisong - li-checksums li sebetsa ka tsela e le 'ngoe feela. Bothata bona bo rarolloa ke sekhahla se eketsehileng se nang le metadata - ke tla u joetsa haholoanyane hamorao.

Ho kenya letsoho ho werf

Ha re ntse re tsoela pele, re ile ra ea le ho feta 'me re itokisetsa ho etsa mohaho o abuoang ka cache e sa boloketsoeng mochine o le mong ... Kahoo, re haha ​​​​mefuta e' meli ea litšoantšo tsa Docker, re li bitsa. sethaleng и setšoantšo.

Sebaka sa polokelo ea werf Git se boloka litaelo tse tobileng tse hlalosang mekhahlelo e fapaneng ea moaho (pele hoInstall, kenya, pele hoSetup, tlhophiso). Re bokella setšoantšo sa mohato oa pele ka signature e hlalosoang e le cheke ea mehato ea pele. Ebe re eketsa khoutu ea mohloli, bakeng sa setšoantšo se secha sa sethala re bala checksum ea eona ... Ts'ebetso ena e phetoa bakeng sa mekhahlelo eohle, ka lebaka leo re fumanang setšoantšo sa litšoantšo tsa sethala. Ebe re etsa setšoantšo sa ho qetela, se nang le metadata mabapi le tšimoloho ea sona. 'Me re tšoaea setšoantšo sena ka litsela tse fapaneng (lintlha hamorao).

werf - sesebelisoa sa rona sa CI / CD ho Kubernetes (kakaretso le tlaleho ea video)

Ha re re kamora sena ho hlaha boitlamo bo bocha moo ho fetotsoeng khoutu ea kopo feela. Ho tla etsahala'ng? Bakeng sa liphetoho tsa khoutu, patch e tla etsoa mme setšoantšo se secha sa sethala se tla lokisoa. Saeno ea eona e tla khethoa e le cheke ea setšoantšo sa sethala sa khale le patch e ncha. Setšoantšo se secha sa ho qetela se tla etsoa ho tsoa setšoantšong sena. Boitšoaro bo tšoanang bo tla etsahala ka liphetoho methating e meng.

Ka hona, litšoantšo tsa sethaleng ke cache e ka bolokoang ka ho ajoa, 'me litšoantšo tse seng li entsoe ho eona li kenngoa ho Registry ea Docker.

werf - sesebelisoa sa rona sa CI / CD ho Kubernetes (kakaretso le tlaleho ea video)

Ho hloekisa registry

Ha re bue ka ho hlakola likarolo tse ileng tsa sala li leketlile ka mor'a hore li-tag li hlakotsoe - ena ke tšobotsi e tloaelehileng ea Registry ea Docker ka boeona. Re bua ka boemo ha li-tag tse ngata tsa Docker li bokella 'me re utloisisa hore ha re sa hloka tse ling tsa tsona, empa li nka sebaka (le / kapa re se lefa).

Mekhoa ea ho hloekisa ke efe?

  1. O ka se etse letho feela o seke wa hlwekisa. Ka linako tse ling ho bonolo haholo ho lefa hanyenyane bakeng sa sebaka se eketsehileng ho feta ho manolla tangle e kholo ea li-tag. Empa sena se sebetsa feela ho fihlela ntlha e itseng.
  2. Reset ka botlalo. Haeba u hlakola litšoantšo tsohle 'me u tsosolosa feela tse teng hona joale tsamaisong ea CI, bothata bo ka' na ba hlaha. Haeba sets'oants'o se qalisoa bocha ka tlhahiso, setšoantšo se secha se tla jarisoa bakeng sa sona - se seng se e-so lekoe ke mang kapa mang. Sena se bolaea mohopolo oa meaho e sa fetoheng.
  3. Botala-botala-botala. Ngoliso e 'ngoe e ile ea qala ho tlala - re kenya litšoantšo ho tse ling. Bothata bo tšoanang le ba mokhoa o fetileng: ka nako efe u ka hlakola registry e qalileng ho phalla?
  4. Ka nako. Hlakola litšoantšo tsohle tsa khale ho feta khoeli e le 'ngoe? Empa ka sebele ho tla ba le ts'ebeletso e so kang ea ntlafatsoa ka khoeli ...
  5. Ka boeona fumana hore na ke eng e seng e ka hlakolwa.

Ho na le likhetho tse peli tse sebetsang e le kannete: u se ke ua hloekisa kapa ua kopanya botala bo boputsoa + ka letsoho. Tabeng ea ho qetela, re bua ka tse latelang: ha u utloisisa hore ke nako ea ho hloekisa ngoliso, u theha e ncha 'me u kenye litšoantšo tsohle tse ncha ho eona nakong ea, mohlala, khoeli. 'Me ka mor'a khoeli, bona hore na ke li-pods life tsa Kubernetes tse ntseng li sebelisa registry ea khale,' me u li fetisetse hape ho ngoliso e ncha.

Re tlile ho eng werf? Re bokella:

  1. Hlooho ea Git: li-tag tsohle, makala ohle - ho nka hore re hloka ntho e 'ngoe le e' ngoe e tšoailoeng ho Git litšoantšong ('me haeba ho se joalo, re lokela ho e hlakola ho Git ka boeona);
  2. li-pods tsohle tse ntseng li pompeloa ho Kubernetes;
  3. Old ReplicaSets (se sa tsoa lokolloa), 'me re rera ho hlahloba litokollo tsa Helm le ho khetha litšoantšo tsa morao-rao moo.

... 'me u etse whitelist ho tsoa sehlopheng sena - lethathamo la litšoantšo tseo re ke keng ra li hlakola. Re hloekisa ntho e 'ngoe le e' ngoe, ka mor'a moo re fumana litšoantšo tsa sethala sa likhutsana le ho li hlakola.

Sethala sa ho tsamaisa

Tšepahalang declarativeness

Ntlha ea pele eo ke ratang ho lebisa tlhokomelo ho eona mosebetsing ke ho phatlalatsoa ha tlhophiso e nchafalitsoeng ea lisebelisoa, e phatlalalitsoeng ka mokhoa o hlakileng. Tokomane ea mantlha ea YAML e hlalosang lisebelisoa tsa Kubernetes e lula e fapane haholo le sephetho se hlileng se sebetsang sehlopheng. Hobane Kubernetes e eketsa tlhophiso:

  1. li-identifiers;
  2. lintlha tsa tšebeletso;
  3. litekanyetso tse ngata tsa kamehla;
  4. karolo e nang le boemo ba hona joale;
  5. liphetoho tse entsoeng e le karolo ea webhook ea kamohelo;
  6. sephetho sa mosebetsi oa balaoli ba fapaneng (le mohlophisi).

Ka hona, ha tlhophiso e ncha ea lisebelisoa e hlaha (tse ncha), re ke ke ra nka feela le ho hlakola ea hajoale, "phela" tlhophiso ka eona (phele). Ho etsa sena re tla tlameha ho bapisa tse ncha ka tlhophiso ea ho qetela e sebelisitsoeng (e sebedisoang qetellong) ebe o theolela ho phele e amohetse patch.

Mokhoa ona o bitsoa 2-tsela kopanya. E sebelisoa, ka mohlala, ho Helm.

Ho boetse ho na le 3-tsela kopanya, e fapaneng ka hore:

  • ho bapisa e sebedisoang qetellong и tse ncha, re sheba se hlakotsoeng;
  • ho bapisa tse ncha и phele, re sheba se ekelitsoeng kapa se fetotsoeng;
  • patch e akaretsang e sebetsoa ho phele.

Re kenya lits'ebetso tse 1000+ ka Helm, kahoo re phela ka ho kopanya mekhoa e 'meli. Leha ho le joalo, e na le mathata a mangata ao re a rarollotseng ka li-patches tsa rona, tse thusang Helm ho sebetsa ka mokhoa o tloaelehileng.

Boemo ba 'nete ba ho ntša

Kamora hore sistimi ea rona ea CI e hlahise tlhophiso e ncha ea Kubernetes e ipapisitse le ketsahalo e latelang, e e fetisetsa hore e sebelisoe. (sebelisa) ho sehlopha - ho sebelisa Helm kapa kubectl apply. Ka mor'a moo, ho kopana ho seng ho hlalositsoe N-way ho etsahala, moo Kubernetes API e arabelang ka mokhoa o amohelehang tsamaisong ea CI, le ho mosebedisi oa eona.

werf - sesebelisoa sa rona sa CI / CD ho Kubernetes (kakaretso le tlaleho ea video)

Leha ho le joalo, ho na le bothata bo boholo: ka mor'a tsohle kopo e atlehileng ha e bolele ho qala ka katleho. Haeba Kubernetes a utloisisa hore na ke liphetoho life tse lokelang ho sebelisoa le ho li sebelisa, re ntse re sa tsebe hore na phello e tla ba efe. Ka mohlala, ho ntlafatsa le ho tsosolosa li-pods tse ka pele ho ka 'na ha atleha, empa eseng ka morao,' me re tla fumana liphetolelo tse fapaneng tsa litšoantšo tsa ts'ebeliso e sebetsang.

Ho etsa ntho e 'ngoe le e' ngoe ka nepo, morero ona o hloka sehokelo se eketsehileng - tracker e khethehileng e tla amohela tlhahisoleseling ea boemo ho Kubernetes API le ho e fetisetsa bakeng sa tlhahlobo e eketsehileng ea boemo ba nnete ba lintho. Re thehile laeborari ea Open Source ho Go - cubedog (sheba phatlalatso ea eona mona), e rarollang bothata bona mme e hahiloe ho werf.

Boitšoaro ba tracker ena boemong ba werf bo hlophisitsoe ho sebelisoa litlhaloso tse behiloeng ho Deployments kapa StatefulSets. Tlhaloso ea mantlha - fail-mode - o utloisisa meelelo e latelang:

  • IgnoreAndContinueDeployProcess - re iphapanyetsa mathata a ho hlahisa karolo ena mme re tsoele pele ho romela;
  • FailWholeDeployProcessImmediately - phoso karolong ena e emisa mokhoa oa ho romela;
  • HopeUntilEndOfDeployProcess - re tšepa hore karolo ena e tla sebetsa qetellong ea ho romelloa.

Ka mohlala, motsoako ona oa lisebelisoa le litekanyetso tsa litlhaloso fail-mode:

werf - sesebelisoa sa rona sa CI / CD ho Kubernetes (kakaretso le tlaleho ea video)

Ha re sebelisa lekhetlo la pele, database (MongoDB) e kanna ea se be teng - Deployments e tla hloleha. Empa u ka emela nako ea hore e qale, 'me ho romelloa ho ntse ho tla etsahala.

Ho na le litlhaloso tse ling tse peli tsa kubedog ho werf:

  • failures-allowed-per-replica - palo ea ho oela ho lumelletsoeng bakeng sa setšoantšo se seng le se seng;
  • show-logs-until - e laola nako ho fihlela moo werf e bonts'ang (ka stdout) ho tsoa ho li-pods tsohle tse phuthoang. Ea kamehla ke PodIsReady (ho iphapanyetsa melaetsa eo mohlomong re sa e batleng ha sephethe-phethe se qala ho tla pod), empa boleng le bona bo nepahetse: ControllerIsReady и EndOfDeploy.

Ke eng hape eo re e batlang ho tloha ts'ebetsong?

Ntle le lintlha tse peli tse seng li hlalositsoe, re ka rata:

  • ho bona likutu - le tse hlokahalang feela, eseng ntho e 'ngoe le e' ngoe ka tatellano;
  • pina tsoelo-pele, hobane haeba mosebetsi o leketlile "khutso" ka metsotso e 'maloa, ke habohlokoa ho utloisisa se etsahalang moo;
  • иметь ho khutlisetsa morao haeba ho na le ntho e sa tsamaeeng hantle (ka hona ho bohlokoa ho tseba boemo ba sebele ba thomello). Phatlalatso e tlameha ho ba ea atomic: ekaba e fetela qetellong, kapa ntho e 'ngoe le e 'ngoe e khutlela boemong ba eona ba pele.

Liphello

Ho rona re le k'hamphani, ho kenya tšebetsong lintlha tsohle tse hlalositsoeng methating e fapaneng ea ho fana (ho haha, ho phatlalatsa, ho tsamaisa), sistimi ea CI le ts'ebeliso li lekane. werf.

Sebakeng sa sephetho:

werf - sesebelisoa sa rona sa CI / CD ho Kubernetes (kakaretso le tlaleho ea video)

Ka thuso ea werf, re hatetse pele hantle ho rarolleng palo e kholo ea mathata bakeng sa lienjiniere tsa DevOps mme re ka thaba haeba sechaba se pharaletseng bonyane se ka leka ts'ebeliso ena. Ho tla ba bonolo ho finyella sephetho se setle hammoho.

Lifitio le li-slide

Video ea tšebetso (~ metsotso e 47):

Tlhahiso ea tlaleho:

PES

Litlaleho tse ling ka Kubernetes ho blog ea rona:

Source: www.habr.com

Eketsa ka tlhaloso