werf - kayan aikin mu na CI / CD a cikin Kubernetes (bayyani da rahoton bidiyo)

Mayu 27 a babban zauren taron DevOpsConf 2019, wanda aka gudanar a matsayin wani ɓangare na bikin. RIT++ 2019, A matsayin wani ɓangare na sashin "Ci gaba da Bayarwa", an ba da rahoto "werf - kayan aikin mu na CI/CD a Kubernetes". Yana magana game da wadanda matsaloli da ƙalubalen da kowa ke fuskanta lokacin tura Kubernetes, da kuma game da nuances waɗanda ba za a iya gane su nan da nan ba. Yin nazarin yiwuwar mafita, muna nuna yadda ake aiwatar da wannan a cikin kayan aikin Buɗewa wuf.

Tun bayan gabatarwar, kayan aikin mu (wanda aka fi sani da dapp) ya kai wani muhimmin ci gaba na tarihi Taurari 1000 akan GitHub - muna fatan jama'ar masu amfani da ke haɓaka za su sauƙaƙe rayuwa ga yawancin injiniyoyin DevOps.

werf - kayan aikin mu na CI / CD a cikin Kubernetes (bayyani da rahoton bidiyo)

Don haka, bari mu gabatar bidiyon rahoton (~ Minti 47, ƙarin bayani fiye da labarin) da babban abin da aka cire daga gare ta a cikin sigar rubutu. Tafi!

Isar da lambar zuwa Kubernetes

Maganar ba za ta kasance game da werf ba, amma game da CI/CD a cikin Kubernetes, yana nuna cewa software ɗinmu tana cikin kwantena na Docker. (Na yi magana game da wannan a cikin rahoton 2016), kuma za a yi amfani da K8s don gudanar da shi a cikin samarwa (karin wannan in 2017 shekara).

Yaya isarwa yayi kama da Kubernetes?

  • Akwai ma'ajiyar Git tare da lambar da umarnin gina shi. An gina aikace-aikacen a cikin hoton Docker kuma an buga shi a cikin Docker Registry.
  • Haka ma'ajiyar ajiyar ta ƙunshi umarni kan yadda ake turawa da gudanar da aikace-aikacen. A matakin ƙaddamarwa, ana aika waɗannan umarni zuwa Kubernetes, wanda ke karɓar hoton da ake so daga wurin yin rajista kuma ya ƙaddamar da shi.
  • Ƙari ga haka, yawanci ana yin gwaje-gwaje. Wasu daga cikin waɗannan ana iya yin su yayin buga hoto. Hakanan zaka iya (bin umarni iri ɗaya) tura kwafin aikace-aikacen (a cikin keɓan sunan K8s ko gungu daban) kuma gudanar da gwaje-gwaje a can.
  • A ƙarshe, kuna buƙatar tsarin CI wanda ke karɓar abubuwan da suka faru daga Git (ko danna maballin) kuma ya kira duk matakan da aka keɓance: ginawa, buga, turawa, gwaji.

werf - kayan aikin mu na CI / CD a cikin Kubernetes (bayyani da rahoton bidiyo)

Akwai wasu mahimman bayanai anan:

  1. Domin muna da ababen more rayuwa marasa canzawa (ma'auni marar canzawa), Hoton aikace-aikacen da ake amfani dashi a kowane matakai (tsara, samarwa, da sauransu), dole akwai daya. Na yi magana game da wannan dalla-dalla da misalai. a nan.
  2. Domin muna bin abubuwan more rayuwa kamar tsarin tsarin code (IaC), lambar aikace-aikacen, umarnin don haɗawa da ƙaddamar da shi ya kamata daidai a cikin ma'ajiya guda ɗaya. Don ƙarin bayani game da wannan, duba rahoton guda.
  3. Sarkar bayarwa (Idarwa) yawanci muna ganinsa kamar haka: an haɗa aikace-aikacen, an gwada, sakewa (matakin saki) kuma shi ke nan - isar da sako ya faru. Amma a zahiri, mai amfani yana samun abin da kuka fitar, ba sannan lokacin da kuka isar da shi zuwa samarwa, da kuma lokacin da ya sami damar zuwa wurin kuma wannan samarwa ya yi aiki. Don haka na yi imani sarkar bayarwa ta ƙare kawai a matakin aiki (gudu), ko fiye daidai, har ma a lokacin da aka cire lambar daga samarwa (maye gurbin shi da sabon).

Bari mu koma ga tsarin bayarwa na sama a Kubernetes: ba mu kawai ya ƙirƙira shi ba, amma ta zahiri duk wanda ya magance wannan matsala. A zahiri, ana kiran wannan tsarin yanzu GitOps (zaka iya karanta ƙarin game da kalmar da ra'ayoyin da ke bayansa a nan). Bari mu dubi matakai na makirci.

Gina mataki

Da alama kuna iya magana game da gina hotunan Docker a cikin 2019, lokacin da kowa ya san yadda ake rubuta Dockerfiles da gudu. docker build?.. Ga nuances da zan so a kula da su:

  1. Nauyin hoto abubuwa, don haka amfani Multi-matakidon barin a cikin hoton kawai aikace-aikacen da ke da mahimmanci don aiki.
  2. Adadin yadudduka dole ne a rage girman ta hanyar hada sarƙoƙi na RUN- umarni bisa ga ma'ana.
  3. Duk da haka, wannan yana ƙara matsaloli gyara kurakurai, domin lokacin da taron ya yi karo, dole ne ku nemo umarnin da ya dace daga sarkar da ta haifar da matsala.
  4. Gudun taro mahimmanci saboda muna so mu hanzarta fitar da canje-canje kuma mu ga sakamakon. Misali, ba kwa son sake gina abin dogaro a cikin ɗakunan karatu na harshe duk lokacin da kuka gina aikace-aikace.
  5. Sau da yawa daga ma'ajiyar Git daya kuke buƙata hotuna da yawa, wanda za'a iya warware shi ta hanyar saitin Dockerfiles (ko matakan suna a cikin fayil ɗaya) da rubutun Bash tare da taronsu na jeri.

Wannan shi ne kawai ƙarshen ƙanƙara da kowa ke fuskanta. Amma akwai wasu matsaloli, musamman:

  1. Sau da yawa a matakin taro muna buƙatar wani abu hawa (misali, cache sakamakon umarni kamar dacewa a cikin kundin adireshi na ɓangare na uku).
  2. Muna so Mai yiwuwa maimakon rubutu a harsashi.
  3. Muna so gina ba tare da Docker ba (me yasa muke buƙatar ƙarin injin kama-da-wane wanda muke buƙatar saita komai don wannan, yayin da muke da gungu na Kubernetes wanda zamu iya tafiyar da kwantena?).
  4. Daidaita taro, wanda za'a iya fahimta ta hanyoyi daban-daban: umarni daban-daban daga Dockerfile (idan ana amfani da matakai masu yawa), da yawa aikatawa na ma'ajin ajiya iri ɗaya, da yawa Dockerfiles.
  5. Majalisar da aka rarraba: Muna son tattara abubuwa a cikin kwasfa masu "ephemeral" saboda cache su ya ɓace, wanda ke nufin yana buƙatar adana shi a wani wuri daban.
  6. A ƙarshe, na ba da sunan kololuwar sha'awa atomatik: Zai zama manufa don zuwa wurin ajiya, rubuta wasu umarni kuma samun hoton da aka shirya, tare da fahimtar yadda da abin da za a yi daidai. Duk da haka, ni da kaina ban tabbata cewa duk nuances za a iya hango su ta wannan hanyar ba.

Kuma ga ayyukan:

  • moby/buildkit - magini daga Docker Inc (wanda aka riga an haɗa shi cikin nau'ikan Docker na yanzu), wanda ke ƙoƙarin magance duk waɗannan matsalolin;
  • kaniko - magini daga Google wanda ke ba ku damar ginawa ba tare da Docker ba;
  • Buildpacks.io - Ƙoƙarin CNCF don yin sihiri ta atomatik kuma, musamman, bayani mai ban sha'awa tare da sake ginawa don yadudduka;
  • da gungun sauran abubuwan amfani, kamar su gina, ainihin kayan aiki/img...

...kuma duba taurari nawa suke da su akan GitHub. Wato a gefe guda. docker build akwai kuma yana iya yin wani abu, amma a zahiri Ba a gama warware batun gaba daya ba - Tabbacin wannan shine ci gaban daidaitaccen ci gaban madadin masu tarawa, wanda kowannensu yana warware wasu ɓangaren matsalolin.

Majalisar a cikin werf

Don haka muka samu wuf (a baya shahara kamar dapp) - Mai amfani mai buɗewa daga kamfanin Flant, wanda muke yin shekaru da yawa. An fara ne shekaru 5 da suka gabata tare da rubutun Bash wanda ya inganta taron Dockerfiles, kuma a cikin shekaru 3 da suka gabata an aiwatar da cikakken ci gaba a cikin tsarin aikin guda ɗaya tare da ma'ajin Git. (na farko a cikin Ruby, sannan sake rubutawa zuwa Go, kuma a lokaci guda sake suna). Wadanne batutuwan taro aka warware a werf?

werf - kayan aikin mu na CI / CD a cikin Kubernetes (bayyani da rahoton bidiyo)

An riga an aiwatar da matsalolin da aka yi inuwa a cikin shuɗi, an yi ginin layi ɗaya a cikin mai masaukin baki ɗaya, kuma an tsara batutuwan da aka nuna a launin rawaya a ƙarshen lokacin rani.

Matsayin bugawa a cikin rajista (buga)

Mun buga waya docker push... - menene zai iya zama da wahala game da loda hoto zuwa wurin yin rajista? Kuma a sa'an nan tambaya ta taso: "Wane tag zan sa a kan hoton?" Yana tasowa saboda dalilin da muke da shi Gitflow (ko wasu dabarun Git) da Kubernetes, kuma masana'antar tana ƙoƙarin tabbatar da cewa abin da ke faruwa a Kubernetes ya bi abin da ke faruwa a Git. Bayan haka, Git shine kawai tushen gaskiyar mu.

Me ke da wahala haka? Tabbatar da sake haifuwa: daga aikatawa a Git, wanda ba shi da canzawa a yanayi (mai canzawa), zuwa hoton Docker, wanda yakamata a kiyaye shi iri ɗaya.

Hakanan yana da mahimmanci a gare mu tantance asali, saboda muna so mu fahimci daga wane ƙaddamar da aikace-aikacen da ke gudana a Kubernetes aka gina (sannan za mu iya yin diffs da makamantansu).

Dabarun yiwa alama

Na farko mai sauki ne git tag. Muna da rajista mai alamar hoto kamar 1.0. Kubernetes yana da mataki da samarwa, inda aka loda wannan hoton. A cikin Git muna yin alkawura kuma a wani lokaci muna yiwa alama alama 2.0. Muna tattara shi bisa ga umarnin daga wurin ajiya kuma sanya shi a cikin wurin yin rajista tare da tag 2.0. Muna mirgine shi zuwa mataki kuma, idan duk yana da kyau, to don samarwa.

werf - kayan aikin mu na CI / CD a cikin Kubernetes (bayyani da rahoton bidiyo)

Matsalar wannan hanyar ita ce mu fara sanya alamar, sannan mu gwada kuma mu fitar da shi. Me yasa? Da fari dai, rashin hankali ne kawai: muna fitar da sigar software wacce ba mu gwada ba tukuna (ba za mu iya yin wani abu ba, saboda don dubawa, muna buƙatar sanya alama). Abu na biyu, wannan hanyar ba ta dace da Gitflow ba.

Zabi na biyu shine git aikata + tag. Babban reshe yana da tag 1.0; don shi a cikin rajista - hoton da aka tura don samarwa. Kari akan haka, gungu na Kubernetes yana da samfoti da samfoti. Na gaba muna bin Gitflow: a cikin babban reshe don haɓakawa (develop) muna yin sabbin abubuwa, yana haifar da ƙaddamarwa tare da mai ganowa #c1. Muna tattara shi kuma mu buga shi a cikin rajista ta amfani da wannan mai ganowa (#c1). Tare da mai ganowa iri ɗaya muna mirgine don samfoti. Muna yin haka tare da aikatawa #c2 и #c3.

Lokacin da muka gane cewa akwai isassun siffofi, mun fara daidaita komai. Ƙirƙiri reshe a Git release_1.1 (na tushe #c3 daga develop). Babu buƙatar tattara wannan sakin, saboda ... an yi wannan a mataki na baya. Saboda haka, za mu iya kawai mirgine shi zuwa tsarawa. Muna gyara kwari a ciki #c4 kuma kamar haka mirgine zuwa tsarawa. A lokaci guda kuma, ana ci gaba da ci gaba a ciki develop, inda ake ɗaukar canje-canje lokaci-lokaci daga release_1.1. A wani lokaci, muna samun ƙaddamar da ƙaddamarwa kuma an ɗora shi zuwa tsarawa, wanda muke farin ciki da ((#c25).

Sa'an nan kuma mu haɗu (tare da sauri-gaba) reshen saki (release_1.1) in master. Mun sanya alama tare da sabon sigar akan wannan alƙawarin (1.1). Amma wannan hoton an riga an tattara shi a cikin wurin yin rajista, don kada a sake tattara shi, kawai mu ƙara alama ta biyu zuwa hoton da ke akwai (yanzu yana da tags a cikin rajista. #c25 и 1.1). Bayan haka, muna mirgine shi don samarwa.

Akwai koma baya cewa hoto daya ne kawai aka loda zuwa tsarawa (#c25Kuma a cikin samarwa yana da nau'i daban-daban (1.1), amma mun san cewa "a zahiri" waɗannan su ne wannan hoton daga wurin yin rajista.

werf - kayan aikin mu na CI / CD a cikin Kubernetes (bayyani da rahoton bidiyo)

Haƙiƙanin hasara shine cewa babu wani tallafi don haɗakarwa, dole ne ku yi gaba da sauri.

Za mu iya ci gaba da yin dabara... Bari mu kalli misali na Dockerfile mai sauƙi:

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

Bari mu gina fayil daga gare ta bisa ga ka'ida mai zuwa:

  • SHA256 daga masu gano hotunan da aka yi amfani da su (ruby:2.3 и nginx:alpine), wanda su ne lissafin abubuwan da ke cikin su;
  • dukkan kungiyoyi (RUN, CMD da sauransu.);
  • SHA256 daga fayilolin da aka ƙara.

... kuma ɗauki checksum (sake SHA256) daga irin wannan fayil ɗin. Wannan sa hannu duk abin da ke bayyana abubuwan da ke cikin hoton Docker.

werf - kayan aikin mu na CI / CD a cikin Kubernetes (bayyani da rahoton bidiyo)

Mu koma kan zane kuma maimakon aikata za mu yi amfani da irin wannan sa hannu, i.e. yiwa hotuna alama tare da sa hannu.

werf - kayan aikin mu na CI / CD a cikin Kubernetes (bayyani da rahoton bidiyo)

Yanzu, lokacin da ya zama dole, alal misali, don haɗa canje-canje daga saki zuwa maigidan, zamu iya yin aikin haɗin kai na gaske: zai sami mai ganowa daban, amma sa hannu ɗaya. Tare da mai ganowa iri ɗaya za mu fitar da hoton zuwa samarwa.

Rashin hasara shi ne cewa yanzu ba zai yiwu a tantance wane nau'in alƙawarin da aka tura don samarwa ba - checksums suna aiki ne kawai a hanya ɗaya. Ana magance wannan matsalar ta ƙarin Layer tare da metadata - Zan faɗa muku ƙarin daga baya.

Tagging in werf

A cikin werf mun ci gaba kuma muna shirye-shiryen yin ginin da aka rarraba tare da cache wanda ba a adana a kan na'ura ɗaya ba ... Don haka, muna gina nau'ikan hotuna na Docker iri biyu, muna kiran su. mataki и image.

Wurin ajiya na werf Git yana adana takamaiman umarnin gini waɗanda ke bayyana matakai daban-daban na ginin (kafin shigarwa, shigar, kafin Saita, saitin). Muna tattara hoton matakin farko tare da sa hannu da aka ayyana azaman lissafin matakan farko. Sa'an nan kuma mu ƙara lambar tushe, don sabon hoton mataki muna lissafin checksum ... Ana maimaita waɗannan ayyukan a kowane mataki, sakamakon haka muna samun saitin hotuna na mataki. Sannan muna yin hoton ƙarshe, wanda kuma ya ƙunshi metadata game da asalinsa. Kuma muna yiwa wannan hoton alama ta hanyoyi daban-daban (bayanan bayanai).

werf - kayan aikin mu na CI / CD a cikin Kubernetes (bayyani da rahoton bidiyo)

A ce bayan wannan wani sabon alkawari ya bayyana wanda a cikinsa kawai aka canza lambar aikace-aikacen. Me zai faru? Don canje-canje na lamba, za a ƙirƙiri faci kuma za a shirya sabon hoton mataki. Za a ƙayyade sa hannun sa a matsayin lissafin tsohuwar hoton mataki da sabon faci. Za a yi sabon hoto na ƙarshe daga wannan hoton. Irin wannan hali zai faru tare da canje-canje a wasu matakai.

Don haka, Hotunan mataki su ne cache da za a iya adana su a rarraba, kuma an ɗora hotunan da aka riga aka ƙirƙira daga gare ta zuwa Docker Registry.

werf - kayan aikin mu na CI / CD a cikin Kubernetes (bayyani da rahoton bidiyo)

Tsaftace wurin yin rajista

Ba muna magana ne game da share yadudduka waɗanda suka ragu a rataye bayan an goge alamun - wannan daidaitaccen fasalin Docker Registry ne da kansa. Muna magana ne game da halin da ake ciki lokacin da yawancin alamun Docker suka taru kuma mun fahimci cewa ba ma buƙatar wasu daga cikinsu, amma suna ɗaukar sarari (kuma / ko muna biya shi).

Menene dabarun tsaftacewa?

  1. Ba za ku iya yin komai ba kar a tsaftace. Wani lokaci yana da sauƙin biya kaɗan don ƙarin sarari fiye da buɗe babban tangle na tags. Amma wannan kawai yana aiki har zuwa wani batu.
  2. Cikakken sake saiti. Idan ka share duk hotuna kuma ka sake gina na yanzu kawai a cikin tsarin CI, matsala na iya tasowa. Idan an sake kunna kwantena a samarwa, za a loda masa sabon hoto - wanda har yanzu wani bai gwada shi ba. Wannan yana kashe ra'ayin ababen more rayuwa mara canzawa.
  3. Blue-kore. Rijista ɗaya ta fara cika - muna loda hotuna zuwa wani. Matsala iri ɗaya kamar hanyar da ta gabata: a wane lokaci za ku iya share rajistar da ta fara cikawa?
  4. Ta lokaci. Share duk hotuna da suka girmi wata 1? Amma tabbas za a sami sabis ɗin da ba a sabunta shi tsawon wata ɗaya ba...
  5. Da hannu ƙayyade abin da za a iya sharewa.

Akwai zaɓuɓɓuka biyu masu dacewa da gaske: kar a tsaftace ko haɗin shuɗi-kore + da hannu. A cikin akwati na ƙarshe, muna magana ne game da masu zuwa: lokacin da kuka fahimci cewa lokaci ya yi don tsaftace rajista, kun ƙirƙiri sabon abu kuma ku ƙara duk sababbin hotuna zuwa gare shi a cikin tsawon lokaci, misali, wata daya. Kuma bayan wata guda, duba waɗanne kwasfan fayiloli a Kubernetes har yanzu suna amfani da tsohuwar rajista, kuma canza su zuwa sabon wurin yin rajista.

Me muka zo wuf? Muna tattara:

  1. Git head: duk alamun, duk rassan - muna ɗauka cewa muna buƙatar duk abin da aka yiwa alama a Git a cikin hotuna (kuma idan ba haka ba, to muna buƙatar share shi a Git kanta);
  2. duk kwas ɗin da a halin yanzu ake fitar da su zuwa Kubernetes;
  3. tsofaffin ReplicaSets (abin da aka saki kwanan nan), kuma muna shirin bincika abubuwan da aka saki Helm kuma mu zaɓi sabbin hotuna a can.

... kuma ku sanya jerin abubuwan farin ciki daga wannan saitin - jerin hotuna waɗanda ba za mu share su ba. Muna tsaftace duk wani abu, bayan haka muna nemo hotunan marayu kuma mu goge su ma.

Sanya mataki

Tabbatar da abin dogaro

Batu na farko da zan so jawo hankali gare shi a cikin turawa shine fitar da sabbin kayan masarufi, wanda aka bayyana a fili. Asalin daftarin aiki na YAML da ke kwatanta albarkatun Kubernetes koyaushe ya bambanta da sakamakon da ke gudana a cikin gungu. Saboda Kubernetes yana ƙarawa zuwa ga daidaitawa:

  1. masu ganowa;
  2. bayanin sabis;
  3. da yawa tsoho dabi'u;
  4. sashe tare da halin yanzu;
  5. canje-canjen da aka yi a matsayin ɓangare na shigar da gidan yanar gizon;
  6. sakamakon aikin masu sarrafawa daban-daban (da mai tsarawa).

Don haka, lokacin da sabon saitin albarkatun ya bayyana (sabon), ba za mu iya ɗauka da sake rubuta halin yanzu ba, tsarin "rayuwa" tare da shi (m). Don yin wannan dole ne mu kwatanta sabon tare da tsari na ƙarshe da aka yi amfani da shi (karshe-aiwatar) kuma mirgine zuwa m samu faci.

Ana kiran wannan hanyar 2-hanyar hadewa. Ana amfani da shi, alal misali, a cikin Helm.

Akwai kuma 3-hanyar hadewa, wanda ya bambanta da cewa:

  • kwatanta karshe-aiwatar и sabon, muna duban abin da aka goge;
  • kwatanta sabon и m, muna duban abin da aka ƙara ko canza;
  • an yi amfani da facin da aka tara zuwa m.

Muna tura aikace-aikacen 1000+ tare da Helm, don haka a zahiri muna rayuwa tare da haɗakar hanyoyi biyu. Koyaya, yana da matsaloli da yawa waɗanda muka warware tare da facinmu, waɗanda ke taimaka wa Helm yin aiki akai-akai.

Matsayin fitowa na gaske

Bayan tsarin mu na CI ya haifar da sabon tsari don Kubernetes dangane da taron na gaba, yana watsa shi don amfani. (Aika) zuwa gungu - ta amfani da Helm ko kubectl apply. Na gaba, haɗin N-way da aka riga aka kwatanta yana faruwa, wanda Kubernetes API ya amsa da yarda da tsarin CI, kuma ga mai amfani.

werf - kayan aikin mu na CI / CD a cikin Kubernetes (bayyani da rahoton bidiyo)

Duk da haka, akwai babbar matsala: bayan duk aikace-aikacen nasara ba yana nufin fitowar nasara ba. Idan Kubernetes ya fahimci canje-canjen da ake buƙatar amfani da su kuma ya yi amfani da shi, har yanzu ba mu san abin da sakamakon zai kasance ba. Misali, sabuntawa da sake kunna kwasfan fayiloli a gaba na iya yin nasara, amma ba a bayan baya ba, kuma za mu sami nau'ikan hotunan aikace-aikacen da ke gudana.

Don yin komai daidai, wannan makirci yana buƙatar ƙarin hanyar haɗi - mai sa ido na musamman wanda zai karɓi bayanin matsayi daga Kubernetes API kuma ya watsa shi don ƙarin bincike na ainihin yanayin abubuwa. Mun ƙirƙiri ɗakin karatu na Buɗewa a cikin Go - cubedog (duba sanarwarsa a nan), wanda ke magance wannan matsala kuma an gina shi cikin werf.

An daidaita halayen wannan mai bin diddigin a matakin werf ta amfani da bayanan da aka sanya akan Ƙaddamarwa ko StatefulSets. Babban bayani - fail-mode - yana fahimtar ma'anoni masu zuwa:

  • IgnoreAndContinueDeployProcess - mun yi watsi da matsalolin fitar da wannan bangaren kuma mu ci gaba da turawa;
  • FailWholeDeployProcessImmediately - kuskure a cikin wannan bangaren yana dakatar da aikin turawa;
  • HopeUntilEndOfDeployProcess - muna fatan wannan bangaren zai yi aiki a ƙarshen turawa.

Misali, wannan haɗin albarkatun da ƙimar annotation fail-mode:

werf - kayan aikin mu na CI / CD a cikin Kubernetes (bayyani da rahoton bidiyo)

Lokacin da muka tura a karon farko, rumbun adana bayanai (MongoDB) bazai kasance a shirye ba tukuna - Ayyukan aiki ba zai gaza ba. Amma za ku iya jira lokacin don farawa, kuma za a ci gaba da turawa.

Akwai ƙarin bayani guda biyu don kubedog a werf:

  • failures-allowed-per-replica - adadin izinin faɗuwa ga kowane kwafi;
  • show-logs-until - yana daidaita lokacin har zuwa lokacin da werf ya nuna (a cikin stdout) rajistan ayyukan daga duk kwas ɗin da aka yi birgima. Tsohuwar ita ce PodIsReady (don yin watsi da saƙon da wataƙila ba ma so lokacin da zirga-zirgar zirga-zirga ta fara zuwa cikin kwas ɗin), amma ƙimar kuma suna da inganci: ControllerIsReady и EndOfDeploy.

Me kuma muke so daga turawa?

Baya ga batutuwa biyu da aka bayyana, muna son:

  • gani rajistan ayyukan - kuma kawai abubuwan da ake bukata, kuma ba duk abin da ke cikin jere ba;
  • waƙa ci gaba, domin idan aikin ya rataye "shiru" na mintuna da yawa, yana da mahimmanci a fahimci abin da ke faruwa a can;
  • don haka atomatik sake dawowa idan wani abu ya faru (saboda haka yana da mahimmanci a san ainihin matsayin turawa). Fitarwar dole ne ya zama atomic: ko dai ya wuce zuwa ƙarshe, ko kuma komai ya koma yadda yake a baya.

Sakamakon

A gare mu a matsayin kamfani, don aiwatar da duk abubuwan da aka kwatanta a matakai daban-daban na bayarwa (gina, bugawa, turawa), tsarin CI da mai amfani sun isa. wuf.

Maimakon ƙarshe:

werf - kayan aikin mu na CI / CD a cikin Kubernetes (bayyani da rahoton bidiyo)

Tare da taimakon werf, mun sami ci gaba mai kyau wajen magance matsaloli masu yawa ga injiniyoyin DevOps kuma za su yi farin ciki idan mafi yawan al'umma aƙalla sun gwada wannan kayan aiki a aikace. Zai fi sauƙi a cimma sakamako mai kyau tare.

Bidiyo da nunin faifai

Bidiyo daga wasan kwaikwayon (~ mintuna 47):

Gabatar da rahoton:

PS

Sauran rahotanni game da Kubernetes akan shafinmu:

source: www.habr.com

Add a comment