werf - matou meafaigaluega mo CI / CD i Kubernetes (vaʻaiga lautele ma lipoti vitio)

Me 27 i le maota autu o le DevOpsConf 2019 konafesi, faia o se vaega o le tausamiga RIT++ 2019, e avea o se vaega o le "Fa'aauauina Fa'asalalauga", na tu'uina atu ai se lipoti "werf - matou meafaigaluega mo CI/CD i Kubernetes". E talanoa e uiga i na faʻafitauli ma luʻitau e feagai ma tagata uma pe a faʻapipiʻi i Kubernetes, faʻapea foʻi ma faʻamatalaga e ono le vave iloa. Iloiloina fofo talafeagai, matou te faʻaalia pe faʻapefea ona faʻatinoina lenei mea i se meafaigaluega Open Source werf.

Talu mai le fa'aaliga, o la matou fa'aoga (na ta'ua muamua o le dapp) ua ausia se fa'ailoga iloga o 1000 fetu ile GitHub - matou te faʻamoemoe o lona faʻalauteleina o tagata faʻaoga o le a faafaigofieina le olaga mo le tele o inisinia DevOps.

werf - matou meafaigaluega mo CI / CD i Kubernetes (vaʻaiga lautele ma lipoti vitio)

O lea, sei faailoa atu vitio o le lipoti (~ 47 minute, e sili atu le faʻamatalaga nai lo le tusiga) ma le faʻamatalaga autu mai ai i tusitusiga. Alu!

Tu'u atu le code i Kubernetes

O le lauga o le a le toe faʻatatau i le werf, ae e uiga i le CI / CD i Kubernetes, o loʻo faʻaalia ai o loʻo faʻapipiʻiina a matou polokalama i pusa Docker. (Sa ou talanoa e uiga i lenei mea i 2016 lipoti), ma K8s o le a faʻaaogaina e faʻatautaia ai i le gaosiga (sili atu e uiga i lenei i 2017 tausaga).

E faape'ī foliga o le tiliva i Kubernetes?

  • O loʻo i ai se fale teu oloa Git ma le code ma faʻatonuga mo le fausiaina. O le talosaga ua fausia i totonu o se ata Docker ma lolomiina i le Docker Registry.
  • O le faleteuoloa lava e tasi o loʻo i ai faʻatonuga i le auala e faʻapipiʻi ma faʻatautaia ai le talosaga. I le tulaga faʻapipiʻi, o nei faʻatonuga e auina atu i Kubernetes, lea e mauaina le ata manaʻomia mai le resitala ma faʻalauiloa.
  • Ma le isi, e masani lava ona i ai suʻega. O nisi o nei mea e mafai ona faia pe a lolomiina se ata. E mafai fo'i ona e (mulimuli i fa'atonuga lava e tasi) fa'apipi'i se kopi o le talosaga (i se isi K8s namespace po'o se isi fuifui) ma fa'atino su'ega iina.
  • Ma le mea mulimuli, e te manaʻomia se faiga CI e maua ai mea na tutupu mai le Git (poʻo kiliki kiliki) ma valaʻau vaega uma ua filifilia: fausia, faʻasalalau, faʻapipiʻi, suʻega.

werf - matou meafaigaluega mo CI / CD i Kubernetes (vaʻaiga lautele ma lipoti vitio)

E i ai nai fa'amatalaga taua iinei:

  1. Aua e iai a tatou atinaʻe e le mafai ona suia (mea tetele e le masuia), le ata talosaga e faʻaaogaina i laʻasaga uma (faʻatulagaina, gaosiga, ma isi), e tatau ona tasi. Sa ou talanoa atili e uiga i lenei mea ma faʻataʻitaʻiga. iinei.
  2. Aua tatou te mulimuli i atinaʻe e pei o le code approach (IaC), le tusi talosaga, faatonuga mo le faʻapipiʻiina ma le faʻalauiloaina e tatau ona sa'o i totonu o le fale e tasi. Mo nisi fa'amatalaga e uiga i lenei mea, va'ai le lipoti lava lea e tasi.
  3. La'u tiliva filifili (tu'u atu) e masani ona matou vaʻaia e pei o lenei: o le talosaga na faʻapotopotoina, faʻataʻitaʻiina, faʻamalolo (tulaga tatala) ma o le mea lena - ua faia le tilivaina. Ae o le mea moni, e maua e le tagata faʻaoga mea na e taʻavale ai, ona e tuʻuina atu lea i le gaosiga, ma ina ua mafai ona alu i ai ma galue ai lenei gaosiga. O lea ou te talitonu e muta le filifili e avatu na'o le tulaga fa'agaioiga (tamomoe), pe sili atu le saʻo, e oʻo lava i le taimi na aveese ai le code mai le gaosiga (suia i se mea fou).

Seʻi o tatou toe foʻi i le polokalame o loʻo i luga i Kubernetes: na faia e le gata ia i matou, ae o tagata uma na feagai ma lenei faʻafitauli. O le mea moni, o lenei mamanu ua taʻua nei GitOps (e mafai ona e faitau atili e uiga i le faaupuga ma manatu i tua atu iinei). Sei o tatou tilotilo i vaega o le polokalame.

Fausia tulaga

E foliga mai e mafai ona e talanoa e uiga i le fausiaina o ata Docker i le 2019, pe a iloa e tagata uma le auala e tusi ai Dockerfiles ma tamoe. docker build?.. O nuances nei ou te fia gauai atu i ai:

  1. mamafa ata mea taua, faʻaaoga vaega telee tuu i le ata na o le talosaga e matua manaomia mo le taotoga.
  2. Numera o laulau e tatau ona faaitiitia e ala i le tuufaatasia o filifili o RUN-poloaiga e tusa ai ma lona uiga.
  3. Ae ui i lea, e faʻaopoopoina faʻafitauli debugging, aua a paʻu le faʻapotopotoga, e tatau ona e suʻeina le poloaiga saʻo mai le filifili na mafua ai le faʻafitauli.
  4. Saosaoa fono taua aua matou te mananaʻo e vave faʻasalalau suiga ma vaʻai i taunuuga. Mo se faʻataʻitaʻiga, e te le manaʻo e toe fausia faʻalagolago i faletusi gagana i taimi uma e te fausia ai se talosaga.
  5. E masani lava mai le tasi Git faleoloa e te manaʻomia tele ata, lea e mafai ona foia e se seti o Dockerfiles (poʻo faʻaigoaina laʻasaga i le tasi faila) ma le Bash script ma a latou faʻapotopotoga faʻasolosolo.

Na o le pito lea o le aisa e feagai ma tagata uma. Ae o loʻo i ai isi faʻafitauli, aemaise lava:

  1. E masani lava i le tulaga faʻapotopotoga tatou te manaʻomia se mea mauga (mo se faʻataʻitaʻiga, faʻapipiʻi le taunuʻuga o se faʻatonuga e pei o le apt i totonu o se lisi lona tolu).
  2. Matou te mananao E mafai nai lo le tusitusi i atigi.
  3. Matou te mananao fausia e aunoa ma le Docker (Aisea tatou te manaʻomia ai se masini faʻapipiʻi faʻaopoopo lea tatou te manaʻomia e faʻapipiʻi ai mea uma mo lenei mea, pe a uma ona i ai se vaega Kubernetes lea e mafai ona tatou faʻaogaina ai pusa?).
  4. Fa'atasiga fa'atasi, lea e mafai ona malamalama i auala eseese: eseʻese tulafono mai le Dockerfile (pe a faʻaaogaina le tele-vaega), le tele o faʻatonuga o le fale e tasi, tele Dockerfiles.
  5. Fa'apotopotoga tufatufa: Matou te mananaʻo e aoina mea i pods e "ephemeral" ona ua mou atu lo latou cache, o lona uiga e tatau ona teuina i se mea eseese.
  6. Mulimuli ane, sa ou faaigoaina le tumutumu o manaoga otometi: E lelei le alu i le fale teu oloa, faʻapipiʻi se faʻatonuga ma maua se ata ua saunia, faʻapotopotoina ma le malamalama i le auala ma le mea e fai saʻo. Ae ui i lea, ou te le o mautinoa o nuances uma e mafai ona vaʻaia i lenei auala.

Ma o poloketi nei:

  • moby/buildkit - o se faufale mai Docker Inc (ua uma ona tuʻufaʻatasia i lomiga o loʻo i ai nei o Docker), o loʻo taumafai e foia nei faʻafitauli uma;
  • kaniko - o se faufale mai Google e faʻatagaina oe e fausia e aunoa ma le Docker;
  • Buildpacks.io - O le taumafaiga a le CNCF e fai togafiti faʻapitoa ma, aemaise lava, o se fofo manaia ma toe faʻavae mo faʻavae;
  • ma le tele o isi mea aoga, e pei o fale, meafaigaluega moni/img...

... ma vaʻai pe fia fetu o loʻo ia i latou ile GitHub. O lona uiga, i le tasi itu, docker build e iai ma e mafai ona faia se mea, ae o le mea moni lava e le'i foia atoatoa le mataupu - faʻamaoniga o lenei mea o le atinaʻeina tutusa o isi tagata aoina, o ia mea taʻitasi e foia ai nisi vaega o faʻafitauli.

Fonotaga i werf

O lea na matou maua ai werf (muamua taʻutaʻua pei o le dapp) - O se faʻaaogaina punaoa tatala mai le kamupani Flant, lea na matou faia mo le tele o tausaga. Na amata uma i le 5 tausaga talu ai ma le Bash scripts na faʻamalosia ai le faʻapotopotoga o Dockerfiles, ma mo le 3 tausaga talu ai na faʻataunuʻuina le atinaʻe atoa i totonu o le faʻavae o se tasi galuega faʻatasi ma lana lava faleoloa Git. (muamua i Ruby, ona sosoo ai lea toe tusia e Alu, ma i le taimi lava e tasi e toe faaigoa). O a fa'afitauli fa'apotopotoga e fo'ia i le werf?

werf - matou meafaigaluega mo CI / CD i Kubernetes (vaʻaiga lautele ma lipoti vitio)

O faʻafitauli o loʻo paolo i le lanumoana ua maeʻa ona faʻatinoina, o le fausiaina tutusa na faia i totonu o le fale e tasi, ma o mataupu o loʻo faʻamaonia i le samasama ua fuafua e maeʻa i le faaiuga o le taumafanafana.

Laasaga o fa'asalalauga i le resitala (fa'asalalau)

Sa matou vili docker push... - o le a le mea e ono faigata i le lafoina o se ata i le resitala? Ona tulaʻi mai lea o le fesili: "O le a le pine e tatau ona ou tuʻuina i luga o le ata?" E tulai mai mo le mafuaaga ua tatou maua Gitflow (poʻo isi taʻiala Git) ma Kubernetes, ma o loʻo taumafai le alamanuia e faʻamautinoa o mea e tupu i Kubernetes e mulimuli i mea e tupu i Git. A uma mea uma, o Git e na o le pau lea o le puna o le mea moni.

O le a le faigata o lenei mea? Ia mautinoa le toe gaosia: mai se tautinoga i Git, lea e le mafai ona suia i le natura (e le suia), i se ata Docker, lea e tatau ona tausia tutusa.

E taua foi ia i tatou fuafua le tupuaga, aua matou te fia malamalama po o fea na faʻatulagaina ai le talosaga o loʻo faʻaogaina i Kubernetes na fausia (ona mafai lea ona matou faia ni mea eseese ma mea faapena).

Fa'ailoga Fuafuaga

O le mea muamua e faigofie git tag. E i ai le matou resitala ma se ata e faʻailogaina 1.0. Kubernetes ei ai le tulaga ma le gaosiga, lea o loʻo faʻapipiʻiina ai lenei ata. I Git matou te faia ni tautinoga ma i se taimi matou te faʻailoga 2.0. Matou te aoina e tusa ai ma faʻatonuga mai le fale teu oloa ma tuʻu i totonu o le resitala ma le pine 2.0. Matou te taʻavale i luga i le tulaga ma, afai e lelei mea uma, ona oʻo lea i le gaosiga.

werf - matou meafaigaluega mo CI / CD i Kubernetes (vaʻaiga lautele ma lipoti vitio)

O le faʻafitauli i lenei faiga o le matou tuʻuina muamua le pine, ona faʻataʻitaʻi lea ma taʻavale i fafo. Aisea? Muamua, e matua le talafeagai lava: o loʻo matou tuʻuina atu se faʻamatalaga o polokalama matou te leʻi faʻataʻitaʻiina (e le mafai ona matou faia i se isi itu, aua ina ia siaki, matou te manaʻomia le tuʻuina o se pine). Lona lua, o lenei auala e le fetaui ma Gitflow.

O le filifiliga lona lua o le git commit + tag. O lo'o iai le fa'ailoga a le lala matai 1.0; mo i totonu o le resitala - o se ata na faʻapipiʻiina i le gaosiga. E le gata i lea, o le kulupu Kubernetes o loʻo i ai le faʻaaliga ma faʻasologa faʻasologa. Le isi matou mulimuli ia Gitflow: i le lala autu mo le atinaʻe (develop) matou te faia ni foliga fou, e mafua ai se tautinoga ma le faʻamatalaga #c1. Matou te aoina ma faʻasalalau i le resitala e faʻaaoga ai lenei faʻamatalaga (#c1). Fa'atasi ai ma le fa'asinomaga e tasi matou te fa'asolo atu e va'ai muamua. E faapena foi ona tatou faia i tautinoga #c2 и #c3.

Ina ua matou iloa ua lava vaega, matou te amata faʻamautu mea uma. Fausia se lala i Git release_1.1 (i luga o le faavae #c3 mai develop). E le manaʻomia le aoina o lenei faʻasalalauga, aua ... sa faia lea i le laasaga muamua. O le mea lea, e mafai lava ona tatou faʻasalalau i fafo i le faʻatulagaina. Matou te faʻaleleia mea leaga i totonu #c4 ma fa'apena fo'i fa'agasolo atu i le fa'atulagaina. I le taimi lava e tasi, o loʻo faʻaauau le atinaʻe develop, lea e aumai ai suiga mai lea taimi i lea taimi release_1.1. I se taimi, matou te maua se tautinoga tuʻufaʻatasia ma tuʻuina atu i le faʻatulagaina, lea matou te fiafia i ai (#c25).

Ona matou tuʻufaʻatasia lea (faʻatasi ma le faʻavavevave) le lala faʻamalolo (release_1.1) i le matai. Matou te tuʻuina se faʻailoga ma le lomiga fou i luga o lenei tautinoga (1.1). Ae o lenei ata ua uma ona aoina i le resitala, ina ia aua nei toe aoina, naʻo le faʻaopoopoina o se pine lona lua i le ata o loʻo i ai nei (o lea ua i ai pine i le resitala. #c25 и 1.1). A maeʻa lena, matou te taʻavale i fafo i le gaosiga.

O lo'o i ai se fa'aletonu e na'o le tasi le ata o lo'o tu'uina atu i le fa'atulagaina (#c25), ma i le gaosiga e ese lava (1.1), ae matou te iloa "faʻaletino" o ata tutusa ia mai le resitala.

werf - matou meafaigaluega mo CI / CD i Kubernetes (vaʻaiga lautele ma lipoti vitio)

O le faʻaletonu moni o le leai o se lagolago mo tuʻufaʻatasiga tuʻufaʻatasia, e tatau ona e faia vave-i luma.

E mafai ona tatou agai i luma ma fai se togafiti... Sei o tatou tilotilo i se faʻataʻitaʻiga o se Dockerfile faigofie:

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

Sei o tatou fausia se faila mai ai e tusa ai ma le mataupu faavae lenei:

  • SHA256 mai faʻamatalaga o ata na faʻaaogaina (ruby:2.3 и nginx:alpine), o fa'amaumauga ia o mea o lo'o i totonu;
  • 'au uma (RUN, CMD ma faapena atu ai lava.);
  • SHA256 mai faila na faʻaopoopoina.

... ma ave le siaki siaki (toe SHA256) mai se faila faapena. Lenei saini mea uma e faʻamatalaina mea o loʻo i totonu o le ata Docker.

werf - matou meafaigaluega mo CI / CD i Kubernetes (vaʻaiga lautele ma lipoti vitio)

Tatou toe foi i le ata ma nai lo commit o le a matou faʻaogaina ia saini, i.e. fa'ailoga ata ma saini.

werf - matou meafaigaluega mo CI / CD i Kubernetes (vaʻaiga lautele ma lipoti vitio)

I le taimi nei, pe a manaʻomia, mo se faʻataʻitaʻiga, e tuʻufaʻatasia suiga mai le faʻamalolo i le matai, e mafai ona tatou faia se tuʻufaʻatasiga moni: o le ai ai se faʻamatalaga ese, ae tutusa le saini. Fa'atasi ai ma le fa'asinomaga tutusa o le a matou ta'avale le ata i le gaosiga.

O le mea le lelei o le taimi nei o le a le mafai ona iloa poʻo le a le ituaiga o tautinoga na tuleia i le gaosiga - o siaki tupe e naʻo le tasi le itu e galue ai. O lenei faʻafitauli e foia e se isi faʻaopoopoga faʻatasi ma metadata - o le a ou taʻu atili atu ia te oe mulimuli ane.

Fa'ailoga ile werf

I le werf na matou o atu atili ma o loʻo sauni e faia se faʻasalalauga faʻatasi ma se faʻaoga e le o teuina i luga o se masini e tasi ... O lea, o loʻo matou fausiaina ni ituaiga se lua o ata Docker, matou te taʻua i latou. tūlaga и faʻatusa.

O le werf Git repository o loʻo teuina faʻatonuga faʻapitoa e faʻamatalaina vaega eseese o le fausiaina (a'o le'i fa'apipi'i, faʻapipiʻi, muamua Setup, seti). Matou te aoina le ata o le laasaga muamua ma se saini faʻamatalaina o le siaki siaki o laasaga muamua. Ona matou faʻaopoopoina lea o le code source, mo le ata fou o le ata matou te faʻatatauina lona siaki tupe ... O nei gaioiga e toe fai mo laʻasaga uma, o se taunuuga e maua ai se seti o ata o ata. Ona matou faia lea o le ata mulimuli, lea e iai foʻi metadata e uiga i lona amataga. Ma matou faʻailogaina lenei ata i auala eseese (faʻamatalaga mulimuli ane).

werf - matou meafaigaluega mo CI / CD i Kubernetes (vaʻaiga lautele ma lipoti vitio)

Fa'apea a mae'a ona aliali mai se tautinoga fou lea ua na'o le numera o talosaga ua suia. O le a le mea o le a tupu? Mo suiga code, o le a faia se patch ma o le a saunia se ata tulaga fou. O lona saini o le a faʻamoemoeina o le siaki siaki o le ata tuai ma le patch fou. O se ata mulimuli fou o le a fausia mai lenei ata. O amioga fa'apena o le a tupu i suiga i isi vaega.

O le mea lea, o ata o ata o se faʻaoga e mafai ona teuina faʻasalalau, ma o ata ua uma ona faia mai ai o loʻo tuʻuina atu i le Docker Registry.

werf - matou meafaigaluega mo CI / CD i Kubernetes (vaʻaiga lautele ma lipoti vitio)

Fa'amama le resitala

Matou te le o talanoa e uiga i le tapeina o laupepa na tumau pea ona tautau pe a uma ona tape pine - o se tulaga masani lea o le Docker Registry lava ia. O loʻo matou talanoa e uiga i se tulaga pe a faʻaputuina le tele o pine Docker ma matou malamalama matou te le toe manaʻomia nisi o latou, ae latou te faʻaogaina avanoa (ma / pe matou te totogia).

O a faiga fa'amama?

  1. E leai se mea e mafai ona e faia aua le faamamaina. O nisi taimi e sili atu ona faigofie le totogiina o sina mea itiiti mo avanoa faaopoopo nai lo le tatalaina o le tele o pine. Ae o lenei mea e aoga i se tulaga faapitoa.
  2. Toe seti atoa. Afai e te tapeina uma ata ma toe fausia naʻo ata o loʻo iai nei ile CI system, e ono tulaʻi mai se faʻafitauli. Afai e toe amata le koneteina i le gaosiga, o le a utaina se ata fou mo ia - o se ata e leʻi faʻataʻitaʻiina e se tasi. O lenei mea e faʻaumatia ai le manatu o mea e le mafai ona suia.
  3. Blue-lanumeamata. O le tasi resitala na amata ona tafe - matou te lafoina ata i le isi. Le faʻafitauli lava e tasi e pei o le auala muamua: o le a le taimi e mafai ai ona e faʻamalo le resitala ua amata ona faʻafefe?
  4. I le taimi. Ave'ese ata uma ua sili atu ile 1 masina? Ae e mautinoa lava o le a iai se auaunaga e leʻi faʻafouina mo le masina...
  5. Ma le lima fuafua mea ua uma ona tapeina.

E lua filifiliga talafeagai: aua le mama poʻo se tuʻufaʻatasiga o le lanumoana-lanumeamata + ma le lima. I le tulaga mulimuli, o loʻo matou talanoa e uiga i mea nei: pe a e malamalama ua oʻo i le taimi e faʻamama ai le resitala, e te fatuina se mea fou ma faʻaopoopo uma ata fou i luga o le gasologa o, mo se faʻataʻitaʻiga, masina. Ma a maeʻa le masina, vaʻai poʻo fea pods i Kubernetes o loʻo faʻaaoga pea le resitala tuai, ma faʻafeiloaʻi foi i le resitala fou.

O le a le mea ua tatou o mai ai werf? Matou te aoina:

  1. Git ulu: faʻailoga uma, lala uma - faʻapea tatou te manaʻomia mea uma e faʻailogaina i Git i ata (ma afai e leai, ona tatau lea ona tatou tapeina i Git lava ia);
  2. pa'u uma o lo'o pamu i fafo i Kubernetes;
  3. Old ReplicaSets (mea na faʻasalalau talu ai nei), ma matou fuafua foi e suʻesuʻe faʻasalalauga Helm ma filifili ata lata mai iina.

... ma fai se lisi papae mai lenei seti - o se lisi o ata tatou te le tapeina. Matou te faʻamamaina mea uma, a maeʻa ona matou maua ai lea o ata o tamaiti matuaoti ma tape foi.

Fa'atino tulaga

Fa'atuatuaina ta'utinoga

O le mea muamua ou te manaʻo e tosina atu i ai i le faʻapipiʻiina o le faʻalauiloaina o le faʻafouina o punaoa faʻafouina, faʻaalia faʻaalia. O le uluai pepa YAML o loʻo faʻamatalaina ai punaoa a Kubernetes e matua ese lava mai le taunuʻuga o loʻo tamoe i totonu o le fuifui. Ona ua faaopoopo e Kubernetes le faatulagaga:

  1. fa'ailoga;
  2. faamatalaga o auaunaga;
  3. tele tau fa'aletonu;
  4. vaega ma tulaga o iai nei;
  5. suiga na faia o se vaega o le ulufale webhook;
  6. o le taunuuga o le galuega a pule eseese (ma le scheduler).

O le mea lea, pe a fa'aalia se fa'atulagaga fou o punaoa (fou), e le mafai ona na o le ave ma fa'asolo le fa'atulagaina o le taimi nei, "ola" fa'atasi ma ia (ola). Ina ia faia lenei mea e tatau ona tatou faatusatusa fou fa'atasi ai ma le fa'atulagaga fa'aaoga mulimuli (fa'aaoga mulimuli) ma taavale i luga ola maua patch.

Ua ta'ua lea faiga 2-auala tuufaatasi. E faʻaaogaina, mo se faʻataʻitaʻiga, i le Helm.

E iai foʻi 3-auala tuufaatasi, lea e ese i lena:

  • fa'atusatusa fa'aaoga mulimuli и fou, matou te tilotilo i mea na tapeina;
  • fa'atusatusa fou и ola, tatou te vaavaai i mea ua faaopoopo pe suia;
  • o lo'o fa'aogaina le patch fa'aputuina i ola.

Matou te faʻapipiʻiina le 1000+ tusi talosaga ma Helm, o lea matou te ola moni ai ma 2-way merge. Ae ui i lea, o loʻo i ai le tele o faʻafitauli ua matou foia i a matou patch, lea e fesoasoani ia Helm e galue masani.

Tulaga fa'alauiloa moni

A maeʻa ona faʻatupuina e le matou CI se faʻatulagaga fou mo Kubernetes e faʻavae i luga o le isi mea na tupu, e tuʻuina atu mo le faʻaaogaina (fa'aoga) i se fuifui - fa'aaoga Helm po'o kubectl apply. O le isi, o le N-way merge ua uma ona faʻamatalaina e tupu, lea e tali atu ai le Kubernetes API ma le faʻamaonia i le CI system, ma i lona tagata faʻaoga.

werf - matou meafaigaluega mo CI / CD i Kubernetes (vaʻaiga lautele ma lipoti vitio)

Ae ui i lea, o loʻo i ai se faʻafitauli tele: mulimuli ane manuia le talosaga e le faapea o le fa'asolo manuia. Afai e malamalama Kubernetes i suiga e manaʻomia ona faʻaoga ma faʻaaogaina, matou te le iloa poʻo le a le taunuuga. Mo se faʻataʻitaʻiga, o le faʻafouina ma le toe faʻafouina o pods i le pito i luma atonu e manuia, ae le o le pito i tua, ma o le a tatou maua ni faʻaaliga eseese o ata o loʻo faʻaogaina.

Ina ia faia mea uma saʻo, o lenei polokalame e manaʻomia se fesoʻotaʻiga faʻaopoopo - o se tracker faʻapitoa o le a maua faʻamatalaga tulaga mai le Kubernetes API ma faʻasalalau atu mo le suʻesuʻeina atili o le tulaga moni o mea. Na matou faia se faletusi Open Source i Go - cubedog (silasila i lana fa'aaliga iinei), lea e foia ai lenei faafitauli ma fausia i totonu o le werf.

O le amio a lenei tracker i le werf level o loʻo faʻatulagaina e faʻaaoga ai faʻamatalaga o loʻo tuʻuina i Deployments poʻo StatefulSets. Fa'amatalaga autu - fail-mode - malamalama i uiga nei:

  • IgnoreAndContinueDeployProcess - matou te le amanaiaina faʻafitauli o le taʻavaleina o lenei vaega ma faʻaauau le faʻapipiʻiina;
  • FailWholeDeployProcessImmediately - o se mea sese i lenei vaega e taofia ai le faʻagaioiina o le faʻagaioiga;
  • HopeUntilEndOfDeployProcess - matou te faʻamoemoe o le a aoga lenei vaega i le faaiuga o le faʻapipiʻiina.

Mo se faʻataʻitaʻiga, o lenei tuʻufaʻatasiga o punaoa ma faʻamatalaga taua fail-mode:

werf - matou meafaigaluega mo CI / CD i Kubernetes (vaʻaiga lautele ma lipoti vitio)

A matou faʻapipiʻi mo le taimi muamua, o le database (MongoDB) atonu e leʻi saunia - O le a le manuia le faʻaogaina. Ae e mafai ona e faʻatali mo le taimi e amata ai, ma o le faʻapipiʻiina o le a faia pea.

E lua isi fa'amatalaga mo kubedog i werf:

  • failures-allowed-per-replica - le numera o pa'u fa'atagaina mo fa'atusa ta'itasi;
  • show-logs-until - fa'atonutonu le taimi e fa'aalia ai (i le stdout) ogalaau mai pusa ta'avale uma. O le faaletonu o le PodIsReady (ia le amanaʻia feʻau atonu tatou te le manaʻo pe a amata ona oʻo mai le taʻavale i le pod), ae faʻamaonia foi tau: ControllerIsReady и EndOfDeploy.

O le a se isi mea tatou te manaʻomia mai le faʻapipiʻiina?

I le faaopoopo atu i manatu e lua ua uma ona faamatalaina, matou te mananao:

  • ia iloa ogalaau - ma naʻo mea e manaʻomia, ae le o mea uma i se laina;
  • ala alualu i luma, aua afai e tautau le galuega "le leoa" mo ni nai minute, e taua le malamalama i le mea o loʻo tupu iina;
  • e aunoa ma otometi le solomuli pe a iai se mea na tupu (ma o lea e taua ai le iloa o le tulaga moni o le faʻapipiʻiina). E tatau ona fa'aatomika le ta'avale: a le o le alu i le iuga, pe toe fo'i mea uma i lona tulaga muamua.

O taunuʻuga

Mo i matou o se kamupani, e faʻatino uma faʻamatalaga faʻamatalaina i laʻasaga eseese o le tuʻuina atu (fausia, faʻasalalau, faʻapipiʻi), o se CI system ma le aoga e lava. werf.

Nai lo o le faaiuga:

werf - matou meafaigaluega mo CI / CD i Kubernetes (vaʻaiga lautele ma lipoti vitio)

Faatasi ai ma le fesoasoani a werf, ua matou alualu i luma lelei i le foia o le tele o faafitauli mo inisinia DevOps ma o le a fiafia pe a faʻataʻitaʻiina e le lautele lautele lenei aoga i le gaioiga. O le a faigofie ona ausia se taunuuga lelei faatasi.

Vitio ma fa'asolo

Vitio mai le faatinoga (~47 minute):

Tuuina atu o le lipoti:

SALA

O isi lipoti e uiga i Kubernetes i la matou blog:

puna: www.habr.com

Faaopoopo i ai se faamatalaga