werf - chida chathu cha CI / CD ku Kubernetes (mwachidule ndi lipoti lamavidiyo)

Meyi 27 muholo yayikulu ya msonkhano wa DevOpsConf 2019, womwe unachitika ngati gawo la chikondwererochi RIT++ 2019, monga gawo la gawo la "Kutumiza Kopitiriza", lipoti linaperekedwa "werf - chida chathu cha CI / CD ku Kubernetes". Imakamba za izo mavuto ndi zovuta zomwe aliyense amakumana nazo akamatumiza ku Kubernetes, komanso za ma nuances omwe sangawonekere nthawi yomweyo. Kusanthula mayankho zotheka, tikuwonetsa momwe izi zimagwiritsidwira ntchito mu chida cha Open Source werf.

Chiyambireni chiwonetserochi, ntchito yathu (yomwe kale inkadziwika kuti dapp) yafika pachimake chambiri 1000 nyenyezi pa GitHub - tikukhulupirira kuti gulu lomwe likukula la ogwiritsa ntchito lipangitsa moyo kukhala wosavuta kwa mainjiniya ambiri a DevOps.

werf - chida chathu cha CI / CD ku Kubernetes (mwachidule ndi lipoti lamavidiyo)

Kotero, tiyeni tiyambitse kanema wa lipoti (~ Mphindi 47, yophunzitsa zambiri kuposa nkhaniyo) komanso zotulukapo zake mwamalemba. Pitani!

Kutumiza code kwa Kubernetes

Nkhaniyi sikhalanso ya werf, koma za CI / CD ku Kubernetes, kutanthauza kuti pulogalamu yathu imayikidwa muzotengera za Docker. (Ndinayankhula izi mu Ripoti la 2016), ndipo ma K8 adzagwiritsidwa ntchito popanga (zambiri za izi mu Chaka cha 2017).

Kodi kutumiza kumawoneka bwanji ku Kubernetes?

  • Pali malo a Git omwe ali ndi code ndi malangizo opangira. Ntchitoyi imapangidwa mu chithunzi cha Docker ndikusindikizidwa mu Docker Registry.
  • Malo omwewo alinso ndi malangizo amomwe mungatumizire ndikuyendetsa pulogalamuyo. Pa gawo lotumizira, malangizowa amatumizidwa ku Kubernetes, omwe amalandira chithunzi chomwe akufuna kuchokera ku registry ndikuchiyambitsa.
  • Kuphatikiza apo, nthawi zambiri pamakhala mayeso. Zina mwa izi zitha kuchitika posindikiza chithunzi. Muthanso (motsatira malangizo omwewo) kutumiza kopi ya pulogalamuyo (m'malo ena a K8s kapena gulu lapadera) ndikuyesa mayeso pamenepo.
  • Pomaliza, mufunika dongosolo la CI lomwe limalandira zochitika kuchokera ku Git (kapena kudina batani) ndikuyitanitsa magawo onse osankhidwa: kumanga, kusindikiza, kutumiza, kuyesa.

werf - chida chathu cha CI / CD ku Kubernetes (mwachidule ndi lipoti lamavidiyo)

Pali zolemba zingapo zofunika apa:

  1. Chifukwa tili ndi maziko osasinthika (magawo osasinthika), chithunzi chogwiritsira ntchito chomwe chimagwiritsidwa ntchito pazigawo zonse (magawo, kupanga, etc.), payenera kukhala mmodzi. Ndinayankhula za izi mwatsatanetsatane komanso ndi zitsanzo. apa.
  2. Chifukwa timatsatira zomangamanga monga njira ya code (IaC), kachidindo ka ntchito, malangizo a kusonkhanitsa ndi kuyambitsa ziyenera kukhala ndendende m'nkhokwe imodzi. Kuti mudziwe zambiri za izi, onani lipoti lomwelo.
  3. Unyolo wotumizira (kutumiza) nthawi zambiri timaziwona motere: ntchitoyo idasonkhanitsidwa, kuyesedwa, kumasulidwa (gawo lomasulidwa) ndipo ndizo - kutumiza kwachitika. Koma zenizeni, wogwiritsa ntchito amapeza zomwe mwatulutsa, osati ndiye pamene mudaipereka kwa kupanga, ndipo pamene iye adatha kupita kumeneko ndipo kupanga uku kunagwira ntchito. Chifukwa chake ndikukhulupirira kuti njira yobweretsera imatha pokha pokha pogwira ntchito (thamanga), kapena ndendende, ngakhale panthawi yomwe code idachotsedwa pakupanga (m'malo mwake ndi yatsopano).

Tiyeni tibwerere ku dongosolo loperekera pamwambapa ku Kubernetes: silinapangidwe ndi ife tokha, komanso ndi aliyense amene adakumana ndi vutoli. M'malo mwake, mawonekedwewa tsopano akutchedwa GitOps (mutha kuwerenga zambiri za mawuwa ndi malingaliro omwe ali kumbuyo kwake apa). Tiyeni tiwone magawo a chiwembu.

Mangani siteji

Zikuwoneka kuti mutha kuyankhula zomanga zithunzi za Docker mu 2019, pomwe aliyense amadziwa kulemba Dockerfiles ndikuyendetsa. docker build?.. Nawa ma nuances omwe ndikufuna kulabadira:

  1. Kulemera kwazithunzi zinthu, choncho ntchito magawo ambirikusiya m'chifaniziro chokhacho ntchito yomwe ili yofunikira kuti ntchitoyi ichitike.
  2. Chiwerengero cha zigawo ayenera kuchepetsedwa pophatikiza unyolo wa RUN-amalamula molingana ndi tanthauzo.
  3. Komabe, izi zimawonjezera mavuto kukonza, chifukwa pamene msonkhano ukuphwanyidwa, muyenera kupeza lamulo lolondola kuchokera ku unyolo umene unayambitsa vutoli.
  4. Kuthamanga kwa Assembly ndikofunikira chifukwa tikufuna kutulutsa zosintha mwachangu ndikuwona zotsatira zake. Mwachitsanzo, simukufuna kumanganso zodalira m'malaibulale a zilankhulo nthawi zonse mukapanga pulogalamu.
  5. Nthawi zambiri kuchokera pamalo amodzi a Git omwe mumafunikira zithunzi zambiri, yomwe imatha kuthetsedwa ndi seti ya Dockerfiles (kapena masitepe otchulidwa mu fayilo imodzi) ndi script ya Bash ndi msonkhano wawo wotsatizana.

Iyi inali nsonga chabe ya madzi oundana omwe aliyense amakumana nawo. Koma pali mavuto ena, makamaka:

  1. Nthawi zambiri pa siteji ya msonkhano timafuna chinachake phiri (mwachitsanzo, sungani zotsatira za lamulo ngati apt mu chikwatu chachitatu).
  2. Ife tikufuna Amatha m’malo molemba m’chigoba.
  3. Ife tikufuna kumanga popanda Docker (chifukwa chiyani timafunikira makina owonjezera omwe timafunikira kukonza chilichonse pa izi, pomwe tili ndi gulu la Kubernetes momwe titha kuyendetsa zotengera?).
  4. Msonkhano wofanana, zomwe zitha kumveka m'njira zosiyanasiyana: malamulo osiyanasiyana kuchokera ku Dockerfile (ngati masitepe angapo agwiritsidwa ntchito), angapo amasunga malo omwewo, ma Dockerfiles angapo.
  5. Msonkhano wogawidwa: Tikufuna kusonkhanitsa zinthu mu pods kuti "ephemeral" chifukwa cache yawo imasowa, zomwe zikutanthauza kuti iyenera kusungidwa kwinakwake padera.
  6. Pomaliza, ndinatchula pachimake zilakolako automagic: Zingakhale zabwino kupita kumalo osungira, lembani lamulo ndikupeza chithunzi chokonzekera, chosonkhanitsidwa ndikumvetsetsa momwe ndi zoyenera kuchita molondola. Komabe, ine sindiri wotsimikiza kuti ma nuances onse amatha kuwoneratu motere.

Ndipo nayi ma projekiti:

  • moby/buildkit - womanga kuchokera ku Docker Inc (yophatikizidwa kale m'mitundu yamakono ya Docker), yomwe ikuyesera kuthetsa mavuto onsewa;
  • kodi - womanga kuchokera ku Google yemwe amakulolani kuti mumange popanda Docker;
  • Buildpacks.io - Kuyesa kwa CNCF kupanga matsenga odziwikiratu ndipo, makamaka, yankho losangalatsa lokhala ndi magawo oyambira;
  • ndi zina zambiri zothandiza, monga kumanga, genuinetools/img...

...ndipo onani nyenyezi zomwe ali nazo pa GitHub. Ndiko kuti, mbali imodzi, docker build alipo ndipo akhoza kuchita chinachake, koma kwenikweni nkhaniyo sinatheretu - umboni wa izi ndi chitukuko chofanana cha osonkhanitsa ena, omwe amathetsa mbali zina za mavuto.

Assembly mu werf

Kotero ife tiyenera werf (m'mbuyomu wotchuka ngati dapp) - Ntchito yotseguka yochokera ku kampani ya Flant, yomwe takhala tikupanga kwa zaka zambiri. Zonse zidayamba zaka 5 zapitazo ndi zolemba za Bash zomwe zidakometsa msonkhano wa Dockerfiles, ndipo kwa zaka zitatu zapitazi chitukuko chokwanira chachitika mkati mwa projekiti imodzi yokhala ndi malo ake a Git. (choyamba mu Ruby, ndiyeno olembedwanso kupita, ndipo nthawi yomweyo adasinthidwanso). Ndi zovuta zotani zomwe zimathetsedwa mu werf?

werf - chida chathu cha CI / CD ku Kubernetes (mwachidule ndi lipoti lamavidiyo)

Mavuto omwe ali ndi mthunzi wa buluu akhazikitsidwa kale, kumanga kofananirako kunachitika mkati mwa wolandira yemweyo, ndipo nkhani zomwe zasonyezedwa muchikasu zakonzedwa kuti zidzatsirizidwe kumapeto kwa chilimwe.

Gawo lofalitsidwa mu registry (kusindikiza)

Tinaimba docker push... - ndi chiyani chomwe chingakhale chovuta pakukweza chithunzi ku registry? Ndiyeno funso limabuka: "Ndiyenera kuika chizindikiro chanji pachithunzichi?" Zimabwera chifukwa chomwe tili nacho Gitflow (kapena njira ina ya Git) ndi Kubernetes, ndipo makampani akuyesera kuonetsetsa kuti zomwe zimachitika Kubernetes zikutsatira zomwe zimachitika ku Git. Kupatula apo, Git ndiye gwero lathu lokhalo la chowonadi.

Chovuta ndi chiyani pamenepa? Onetsetsani kuberekanso: kuchokera pakudzipereka ku Git, komwe ndi kosasinthika (osasinthika), ku chithunzi cha Docker, chomwe chiyenera kusungidwa chimodzimodzi.

Ndilofunikanso kwa ife kudziwa chiyambi, chifukwa tikufuna kumvetsetsa komwe ntchito yomwe ikuyendetsa ku Kubernetes idapangidwira (ndiye titha kuchita zosiyana ndi zofanana).

Ma Tagging Strategies

Yoyamba ndi yosavuta git tag. Tili ndi kaundula wokhala ndi chithunzi cholembedwa kuti 1.0. Kubernetes ali ndi siteji ndi kupanga, pomwe chithunzichi chimakwezedwa. Ku Git timapanga mapangano ndipo nthawi ina timayika chizindikiro 2.0. Timasonkhanitsa molingana ndi malangizo ochokera kunkhokwe ndikuyika mu registry ndi tag 2.0. Timayika pa siteji ndipo, ngati zonse zili bwino, ndiye kuti timapanga.

werf - chida chathu cha CI / CD ku Kubernetes (mwachidule ndi lipoti lamavidiyo)

Vuto ndi njirayi ndikuti tidayamba kuyika chizindikirocho, kenako ndikuchiyesa ndikuchitulutsa. Chifukwa chiyani? Choyamba, sizomveka: tikupereka mtundu wa mapulogalamu omwe sitinayesepo (sitingathe kuchita mosiyana, chifukwa kuti tiwone, tifunika kuyika chizindikiro). Kachiwiri, njira iyi siyogwirizana ndi Gitflow.

Njira yachiwiri ndiyakuti git commit + tag. Nthambi ya master ili ndi tag 1.0; kwa izo mu registry - chithunzi chomwe chatumizidwa kuti chipangidwe. Kuphatikiza apo, gulu la Kubernetes lili ndi zowonera komanso zowonera. Kenako timatsatira Gitflow: mu nthambi yayikulu yachitukuko (develop) timapanga zatsopano, zomwe zimapangitsa kudzipereka ndi chizindikiritso #c1. Timasonkhanitsa ndikuzifalitsa mu registry pogwiritsa ntchito chizindikiritso ichi (#c1). Ndi chizindikiritso chomwecho timatulutsa kuti tiwonetseretu. Timachita chimodzimodzi ndi ma commits #c2 ΠΈ #c3.

Titazindikira kuti pali zinthu zokwanira, timayamba kukhazikika chilichonse. Pangani nthambi ku Git release_1.1 (pa base #c3 kuchokera develop). Palibe chifukwa chotengera kumasulidwa uku, chifukwa ... izi zidachitika mu sitepe yapitayi. Chifukwa chake, titha kuyiyika pamasewera. Timakonza zolakwika mkati #c4 n'chimodzimodzinso kupita ku siteji. Nthawi yomweyo, chitukuko chikuchitika develop, kumene kusintha kumatengedwa nthawi ndi nthawi release_1.1. Nthawi ina, timapeza zomwe zidapangidwa ndikuziyika ku siteji, zomwe timakondwera nazo (#c25).

Kenako timaphatikiza (ndi mtsogolo) nthambi yotulutsa (release_1.1) mu master. Timayika tag yokhala ndi mtundu watsopano pakupanga uku (1.1). Koma chithunzichi chasonkhanitsidwa kale mu registry, kotero kuti tisasonkhanitsenso, timangowonjezera chizindikiro chachiwiri pa chithunzi chomwe chilipo (tsopano chili ndi ma tag mu registry. #c25 ΠΈ 1.1). Pambuyo pake, timayika pakupanga.

Pali zovuta kuti chithunzi chimodzi chokha chimakwezedwa ku siteji (#c25), ndipo pakupanga kumakhala kosiyana (1.1), koma tikudziwa kuti "mwathupi" awa ndi chithunzi chomwecho kuchokera ku registry.

werf - chida chathu cha CI / CD ku Kubernetes (mwachidule ndi lipoti lamavidiyo)

Choyipa chenicheni ndichakuti palibe chothandizira pakuphatikiza, muyenera kupita patsogolo.

Titha kupita patsogolo ndikuchita chinyengo ... Tiyeni tiwone chitsanzo cha Dockerfile yosavuta:

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

Tiyeni tipange fayilo kuchokera pamenepo motsatira mfundo iyi:

  • SHA256 kuchokera pazidziwitso za zithunzi zomwe zagwiritsidwa ntchito (ruby:2.3 ΠΈ nginx:alpine), zomwe ndi macheke a zomwe zili mkati mwake;
  • magulu onse (RUN, CMD ndi zina zotero.);
  • SHA256 kuchokera pamafayilo omwe adawonjezedwa.

... ndipo tengani cheke (kachiwiri SHA256) kuchokera pafayilo yotere. Izi siginecha chilichonse chomwe chimatanthauzira zomwe zili mu chithunzi cha Docker.

werf - chida chathu cha CI / CD ku Kubernetes (mwachidule ndi lipoti lamavidiyo)

Tiyeni tibwerere ku chithunzi ndi m'malo mwazochita tidzagwiritsa ntchito ma signature oterowo,ndi. tag zithunzi ndi siginecha.

werf - chida chathu cha CI / CD ku Kubernetes (mwachidule ndi lipoti lamavidiyo)

Tsopano, pakafunika, mwachitsanzo, kuphatikiza zosintha kuchokera kumasulidwe kupita ku master, titha kupanga mgwirizano weniweni: zidzakhala ndi chizindikiritso chosiyana, koma siginecha yomweyo. Ndi chizindikiritso chomwecho tidzatulutsa chithunzichi kuti chipangidwe.

Choyipa ndichakuti tsopano sizingatheke kudziwa mtundu wanji womwe unakankhidwira kupanga - macheke amangogwira mbali imodzi. Vutoli limathetsedwa ndi wosanjikiza wowonjezera wokhala ndi metadata - ndikuuzani zambiri mtsogolo.

Kulemba mu werf

Mu werf tinapita patsogolo kwambiri ndipo tikukonzekera kupanga nyumba yogawidwa ndi cache yomwe siisungidwa pa makina amodzi ... Kotero, tikumanga mitundu iwiri ya zithunzi za Docker, timazitcha. siteji ΠΈ chithunzi.

Malo osungira a werf Git amasungira malangizo enieni omwe amafotokoza magawo osiyanasiyana a zomangamanga (beforeInstall, kukhazikitsa, beforeSetup, khazikitsa). Timasonkhanitsa chithunzi cha gawo loyamba ndi siginecha yomwe imatanthauzidwa ngati cheke cha masitepe oyamba. Kenaka timawonjezera kachidindo ka gwero, kwa chithunzi chatsopano cha siteji timawerengera checksum yake ... Ntchitozi zimabwerezedwa kwa magawo onse, chifukwa chake timapeza zithunzi za siteji. Kenako timapanga chithunzi chomaliza, chomwe chilinso ndi metadata yokhudza chiyambi chake. Ndipo timayika chithunzichi m'njira zosiyanasiyana (zambiri pambuyo pake).

werf - chida chathu cha CI / CD ku Kubernetes (mwachidule ndi lipoti lamavidiyo)

Tiyerekeze kuti izi zitachitika kudzipereka kwatsopano kukuwoneka komwe khodi yokhayo yasinthidwa. Kodi chidzachitike n'chiyani? Pakusintha ma code, chigamba chidzapangidwa ndipo chithunzi chatsopano chidzakonzedwa. Siginecha yake idzatsimikiziridwa ngati cheke cha chithunzi chakale komanso chigamba chatsopano. Chithunzi chatsopano chomaliza chidzapangidwa kuchokera ku chithunzichi. Khalidwe lofananalo lidzachitika ndi kusintha kwa magawo ena.

Chifukwa chake, zithunzi za siteji ndi cache yomwe imatha kusungidwa mogawidwa, ndipo zithunzi zomwe zidapangidwa kale kuchokera pamenepo zimakwezedwa ku Docker Registry.

werf - chida chathu cha CI / CD ku Kubernetes (mwachidule ndi lipoti lamavidiyo)

Kuyeretsa kaundula

Sitikulankhula za kuchotsa zigawo zomwe zidatsalira zitachotsedwa ma tag - ichi ndi gawo lokhazikika la Docker Registry palokha. Tikulankhula za momwe ma tag ambiri a Docker amadziunjikira ndipo timamvetsetsa kuti sitifunikiranso ena mwa iwo, koma amatenga malo (ndi / kapena timalipira).

Njira zoyeretsera ndi ziti?

  1. Inu simungakhoze basi kuchita kanthu osayeretsa. Nthawi zina zimakhala zosavuta kulipira pang'ono malo owonjezera kusiyana ndi kutsegula tangle yaikulu ya ma tag. Koma izi zimangogwira ntchito mpaka pomwe.
  2. Kukonzanso kwathunthu. Ngati muchotsa zithunzi zonse ndikumanganso zomwe zilipo mu dongosolo la CI, vuto likhoza kubwera. Ngati chidebecho chitayambiranso kupanga, chithunzi chatsopano chidzakwezedwa - chomwe sichinayesedwe ndi aliyense. Izi zimapha lingaliro la zomangamanga zosasinthika.
  3. Buluu wobiriwira. Kaundula wina adayamba kusefukira - timayika zithunzi ku wina. Vuto lomwelo ndi njira yapitayi: ndi nthawi iti yomwe mungachotsere registry yomwe yayamba kusefukira?
  4. Pofika nthawi. Chotsani zithunzi zonse zakale kuposa mwezi umodzi? Koma padzakhaladi ntchito yomwe sinasinthidwe kwa mwezi umodzi ...
  5. Manja kudziwa zomwe zitha kuchotsedwa kale.

Pali njira ziwiri zomwe zingatheke: osayeretsa kapena kuphatikiza blue-green + pamanja. M'nkhani yotsirizayi, tikukamba za izi: pamene mumvetsetsa kuti ndi nthawi yoyeretsa kaundula, mumapanga yatsopano ndikuwonjezera zithunzi zonse zatsopano, mwachitsanzo, mwezi umodzi. Ndipo patatha mwezi umodzi, onani ma pods ku Kubernetes omwe akugwiritsabe ntchito zolembera zakale, ndikuwasamutsiranso ku registry yatsopano.

Tabwera ku chiyani werf? Timasonkhanitsa:

  1. Mutu wa Git: ma tag onse, nthambi zonse - poganiza kuti tikufuna chilichonse chomwe chalembedwa mu Git pazithunzi (ndipo ngati sichoncho, ndiye kuti tiyenera kuzichotsa mu Git yokha);
  2. ma pod onse omwe akuponyedwa pakali pano ku Kubernetes;
  3. Old ReplicaSets (zomwe zatulutsidwa posachedwa), ndipo tikukonzekeranso kusanthula zotulutsa za Helm ndikusankha zithunzi zaposachedwa pamenepo.

... ndi kupanga zoyera kuchokera pagululi - mndandanda wazithunzi zomwe sitidzazichotsa. Timatsuka china chilichonse, kenako timapeza zithunzi za siteji ya ana amasiye ndikuzichotsanso.

Deploy stage

Kulengeza kodalirika

Mfundo yoyamba yomwe ndikufuna kuti ndiwonetsere pakuyikirako ndikutulutsidwa kwa kasinthidwe kazinthu zosinthidwa, zolengezedwa momveka bwino. Chikalata choyambirira cha YAML chofotokoza za Kubernetes nthawi zonse chimakhala chosiyana kwambiri ndi zotsatira zomwe zikuyenda mgululi. Chifukwa Kubernetes akuwonjezera kasinthidwe:

  1. zozindikiritsa;
  2. zambiri zautumiki;
  3. zambiri zokhazikika;
  4. gawo lomwe lili ndi udindo pano;
  5. zosintha zopangidwa ngati gawo la webhook yovomerezeka;
  6. zotsatira za ntchito ya olamulira osiyanasiyana (ndi scheduler).

Chifukwa chake, mawonekedwe atsopano akawoneka (yatsopano), sitingangotenga ndikulembanso makonzedwe apano, "kukhala" nawo (moyo). Kuti tichite izi tiyenera kufananiza yatsopano ndi kasinthidwe komaliza kogwiritsidwa ntchito (yomaliza) ndikupitilira moyo adalandira chigamba.

Njirayi imatchedwa 2-njira kuphatikiza. Amagwiritsidwa ntchito, mwachitsanzo, mu Helm.

Palinso 3-njira kuphatikiza, zomwe zimasiyana ndi izi:

  • kufanizitsa yomaliza ΠΈ yatsopano, timayang'ana zomwe zidachotsedwa;
  • kufanizitsa yatsopano ΠΈ moyo, timayang'ana zomwe zawonjezeredwa kapena kusintha;
  • chigamba chophatikizidwa chimagwiritsidwa ntchito moyo.

Timatumiza mapulogalamu 1000+ ndi Helm, kotero timakhala ndi kuphatikiza njira ziwiri. Komabe, ili ndi mavuto angapo omwe tawathetsa ndi zigamba zathu, zomwe zimathandiza Helm kugwira ntchito bwino.

Zotulutsa zenizeni

Dongosolo lathu la CI likapanga masinthidwe atsopano a Kubernetes kutengera chochitika chotsatira, amachitumiza kuti chigwiritsidwe ntchito. (lembani) ku gulu - pogwiritsa ntchito Helm kapena kubectl apply. Chotsatira, kuphatikizika komwe kwafotokozedwa kale kwa N-way kumachitika, komwe Kubernetes API imayankha movomerezeka ku dongosolo la CI, komanso kwa wogwiritsa ntchito.

werf - chida chathu cha CI / CD ku Kubernetes (mwachidule ndi lipoti lamavidiyo)

Komabe, pali vuto lalikulu: pambuyo pake kugwiritsa ntchito bwino sikutanthauza kutulutsa kopambana. Ngati Kubernetes amvetsetsa zomwe ziyenera kusinthidwa ndikuzigwiritsa ntchito, sitikudziwabe kuti zotsatira zake zidzakhala zotani. Mwachitsanzo, kukonzanso ndi kuyambitsanso ma pods ku frontend kungakhale kopambana, koma osati kumbuyo, ndipo tidzapeza mitundu yosiyanasiyana ya zithunzi zogwiritsira ntchito.

Kuti muchite zonse molondola, chiwembuchi chimafuna ulalo wowonjezera - tracker yapadera yomwe ilandila zidziwitso kuchokera ku Kubernetes API ndikuitumiza kuti iwunikenso momwe zinthu zilili. Tinapanga laibulale ya Open Source ku Go - cubedog (onani chilengezo chake apa), yomwe imathetsa vutoli ndikumangidwa mu werf.

Makhalidwe a tracker iyi pamlingo wa werf amakonzedwa pogwiritsa ntchito zofotokozera zomwe zimayikidwa pa Deployments kapena StatefulSets. Ndemanga zazikulu - fail-mode - amamvetsetsa matanthauzo awa:

  • IgnoreAndContinueDeployProcess - timanyalanyaza zovuta zotulutsa gawoli ndikupitiliza kutumizidwa;
  • FailWholeDeployProcessImmediately - cholakwika m'chigawochi chimayimitsa ntchito yotumiza;
  • HopeUntilEndOfDeployProcess - tikukhulupirira kuti gawoli lidzagwira ntchito kumapeto kwa kutumiza.

Mwachitsanzo, kuphatikiza uku kwazinthu ndi mfundo zofotokozera fail-mode:

werf - chida chathu cha CI / CD ku Kubernetes (mwachidule ndi lipoti lamavidiyo)

Tikatumiza kwa nthawi yoyamba, nkhokwe (MongoDB) mwina siyinakonzekerebe - Kutumiza kudzalephera. Koma mutha kuyembekezera nthawi kuti iyambe, ndipo kutumizidwa kudzachitikabe.

Pali malingaliro ena awiri a kubedog mu werf:

  • failures-allowed-per-replica - kuchuluka kwa zololedwa kugwa pa chofananira chilichonse;
  • show-logs-until - imayang'anira nthawi mpaka pomwe werf iwonetsa (mu stdout) zipika kuchokera kumapoto onse otuluka. Chosakhazikika ndi PodIsReady (kunyalanyaza mauthenga omwe mwina sitikufuna magalimoto akayamba kubwera), koma mfundo ndizovomerezeka: ControllerIsReady ΠΈ EndOfDeploy.

Ndi chiyani chinanso chomwe tikufuna kuchokera pakutumizidwa?

Kuphatikiza pa mfundo ziwiri zomwe zafotokozedwa kale, tikufuna:

  • kuti muwone mitengo - ndi zofunikira zokha, osati zonse zotsatizana;
  • track kupita patsogolo, chifukwa ngati ntchitoyo ikulendewera "chete" kwa mphindi zingapo, ndikofunika kumvetsetsa zomwe zikuchitika kumeneko;
  • kukhala zobweza zodziwikiratu ngati china chake chalakwika (ndipo ndikofunikira kudziwa momwe ntchitoyo ikuyendera). Kutulutsa kuyenera kukhala kwa atomiki: mwina kumadutsa mpaka kumapeto, kapena chilichonse chibwerere m'malo mwake.

Zotsatira

Kwa ife monga kampani, kukhazikitsa ma nuances onse omwe akufotokozedwa pamagawo osiyanasiyana operekera (kumanga, kusindikiza, kutumiza), dongosolo la CI ndi zofunikira ndizokwanira. werf.

M'malo momaliza:

werf - chida chathu cha CI / CD ku Kubernetes (mwachidule ndi lipoti lamavidiyo)

Mothandizidwa ndi werf, tapita patsogolo bwino pakuthana ndi mavuto ambiri kwa mainjiniya a DevOps ndipo tingakhale okondwa ngati anthu ambiri ayesa kugwiritsa ntchito izi. Zidzakhala zosavuta kukwaniritsa zotsatira zabwino pamodzi.

Makanema ndi zithunzi

Kanema wakuchitako (~ mphindi 47):

Kafotokozedwe ka lipoti:

PS

Malipoti ena okhudza Kubernetes pabulogu yathu:

Source: www.habr.com

Kuwonjezera ndemanga