werf - ár n-uirlis le haghaidh CI / CD i Kubernetes (tuarascáil forbhreathnú agus físeáin)

27 Bealtaine i bpríomh-halla chomhdháil DevOpsConf 2019, a reáchtáladh mar chuid den fhéile RIT++ 2019, mar chuid den rannán “Seachadadh Leanúnach”, tugadh tuarascáil “werf - our tool for CI/CD in Kubernetes”. Labhraíonn sé faoi siúd fadhbanna agus dúshláin a bhíonn le sárú ag gach duine agus iad ag imscaradh go Kubernetes, chomh maith le faoi nuances nach féidir a bheith faoi deara láithreach. Ag anailísiú réitigh fhéideartha, léirímid conas a chuirtear é seo i bhfeidhm in uirlis Foinse Oscailte caoirigh.

Ó cuireadh i láthair é, tá garsprioc stairiúil bainte amach ag ár bhfóntas (dapp ar a dtugtaí roimhe seo). 1000 réalta ar GitHub — tá súil againn go ndéanfaidh a phobal úsáideoirí atá ag dul i méid an saol níos éasca do go leor innealtóirí DevOps.

werf - ár n-uirlis le haghaidh CI / CD i Kubernetes (tuarascáil forbhreathnú agus físeáin)

Mar sin, déanaimis a thabhairt isteach físeán den tuarascáil (~47 nóiméad, i bhfad níos faisnéiseach ná an t-alt) agus an príomhshliocht as i bhfoirm téacs. Téigh!

Cód a sheachadadh chuig Kubernetes

Ní bheidh an chaint faoi fíneog a thuilleadh, ach faoi CI/CD in Kubernetes, rud a thugann le tuiscint go bhfuil ár mbogearraí pacáistithe i gcoimeádáin Docker (Labhair mé faoi seo i tuarascáil 2016), agus úsáidfear K8s chun é a reáchtáil i dtáirgeadh (tuilleadh faoi seo i 2017 bliana).

Cén chuma atá ar sheachadadh i Kubernetes?

  • Tá stór Git ann leis an gcód agus na treoracha chun é a thógáil. Tá an feidhmchlár ionsuite in íomhá Docker agus foilsithe i gClárlann Docker.
  • Tá treoracha sa stór céanna freisin maidir le conas an feidhmchlár a imscaradh agus a rith. Ag an gcéim imlonnaithe, seoltar na treoracha seo chuig Kubernetes, a fhaigheann an íomhá atá ag teastáil ón gclárlann agus a sheolann é.
  • Plus, tá tástálacha de ghnáth. Is féidir cuid díobh seo a dhéanamh agus íomhá á fhoilsiú. Is féidir leat freisin (de réir na dtreoracha céanna) cóip den fheidhmchlár a imscaradh (in ainmspás K8 ar leith nó i mbraisle ar leith) agus tástálacha a rith ansin.
  • Ar deireadh, tá córas CI ag teastáil uait a fhaigheann imeachtaí ó Git (nó cliceáil cnaipe) agus glaonna ar na céimeanna ainmnithe go léir: tógáil, foilsiú, imscaradh, tástáil.

werf - ár n-uirlis le haghaidh CI / CD i Kubernetes (tuarascáil forbhreathnú agus físeáin)

Tá cúpla nótaí tábhachtacha anseo:

  1. Toisc go bhfuil infrastruchtúr do-laghdaithe againn (bonneagar dochorraithe), íomhá an iarratais a úsáidtear ag gach céim (stáitsiú, táirgeadh, etc.), caithfidh ceann a bheith ann. Labhair mé faoi seo go mion agus le samplaí. anseo.
  2. Toisc go leanaimid an bonneagar mar chód cur chuige (IaC), ba cheart go mbeadh an cód iarratais, treoracha chun é a chur le chéile agus a sheoladh go díreach in aon stór amháin. Chun tuilleadh eolais a fháil faoi seo, féach an tuairisc chéanna.
  3. Slabhra seachadta (seachadadh) de ghnáth feicimid é mar seo: cuireadh an t-iarratas le chéile, a thástáil, a scaoileadh (céim scaoilte) agus sin é - tá seachadadh déanta. Ach i ndáiríre, faigheann an t-úsáideoir an méid a rolladh amach duit, aon ansin nuair a sheachadann tú chuig táirgeadh é, agus nuair a bhí sé in ann dul ann agus d'oibrigh an táirgeadh seo. Mar sin creidim go dtiocfaidh deireadh leis an slabhra seachadta ag an gcéim oibríochta amháin (rith), nó níos cruinne, fiú i láthair na huaire nuair a baineadh an cód as táirgeadh (ag cur ceann nua ina ionad).

Fillfimid ar an scéim seachadta thuas i Kubernetes: bhí sé invented ní hamháin linne, ach go litriúil gach duine a dhéileáil leis an bhfadhb seo. Go deimhin, tugtar GitOps ar an bpatrún seo anois (Is féidir leat tuilleadh a léamh faoin téarma agus na smaointe taobh thiar de anseo). Breathnaímid ar chéimeanna na scéime.

Céim tógála

Is cosúil gur féidir leat labhairt faoi íomhánna Docker a thógáil i 2019, nuair a bhíonn a fhios ag gach duine conas Dockerfiles a scríobh agus a reáchtáil docker build?.. Seo iad na nuances ar mhaith liom aird a thabhairt orthu:

  1. Meáchan íomhá cúrsaí, mar sin úsáid il-chéima fhágáil san íomhá ach an t-iarratas atá fíor-riachtanach chun na hoibríochta.
  2. Líon na sraitheanna a íoslaghdú trí shlabhraí de RUN-orduithe de réir brí.
  3. Mar sin féin, cuireann sé seo fadhbanna dífhabhtaithe, mar nuair a thuairteanna an tionól, caithfidh tú a fháil ar an ordú ceart as an slabhra ba chúis leis an bhfadhb.
  4. Luas an tionóil tábhachtach mar ba mhaith linn athruithe a rolladh amach go tapa agus na torthaí a fheiceáil. Mar shampla, níl tú ag iarraidh spleáchais i leabharlanna teanga a atógáil gach uair a thógann tú feidhmchlár.
  5. Go minic ó stór Git amháin a theastaíonn uait go leor íomhánna, is féidir a réiteach le sraith Dockerfiles (nó céimeanna ainmnithe i gcomhad amháin) agus script Bash lena n-tionól seicheamhach.

Ní raibh anseo ach barr an chnoic oighir atá os comhair gach duine. Ach tá fadhbanna eile ann, go háirithe:

  1. Go minic ag an gcéim tionóil teastaíonn rud éigin uainn sléibhe (mar shampla, cuir i dtaisce toradh ordaithe mar apt in eolaire tríú páirtí).
  2. Ba mhaith linn Freagra in ionad a bheith ag scríobh sa bhlaosc.
  3. Ba mhaith linn a thógáil gan Docker (cén fáth a bhfuil gá againn le meaisín fíorúil breise inar gá dúinn gach rud a chumrú le haghaidh seo, nuair atá braisle Kubernetes againn cheana féin inar féidir linn coimeádáin a rith?).
  4. Tionól comhthreomhar, is féidir a thuiscint ar bhealaí éagsúla: orduithe éagsúla ón Dockerfile (má úsáidtear ilchéimeanna), tá roinnt gealltanas den stór céanna, roinnt Dockerfiles.
  5. Tionól dáilte: Ba mhaith linn a bhailiú rudaí i pods go bhfuil "seasmhach" toisc imíonn a dtaisce, rud a chiallaíonn gur gá é a stóráil áit éigin ar leithligh.
  6. Ar deireadh, d'ainmnigh mé an pinnacle na mianta uathdraíochta: Bheadh ​​sé iontach dul go dtí an stór, clóscríobh ordú agus íomhá réidh a fháil, le chéile le tuiscint ar conas agus cad atá le déanamh i gceart. Mar sin féin, níl mé cinnte go pearsanta an féidir na nuances go léir a thuar ar an mbealach seo.

Agus seo iad na tionscadail:

  • moby/buildkit — tógálaí ó Docker Inc (atá comhtháite cheana féin i leaganacha reatha Docker), atá ag iarraidh na fadhbanna seo go léir a réiteach;
  • cailiocht — tógálaí ó Google a ligeann duit tógáil gan Docker;
  • Tógáil pacáistí.io — Iarracht CNCF chun draíocht uathoibríoch a dhéanamh agus, go háirithe, réiteach suimiúil le hathbhunú sraitheanna;
  • agus braon fóntais eile, mar shampla tóg, fíoruirlisí/img...

...agus féach cé mhéad réalta atá acu ar GitHub. Is é sin, ar thaobh amháin, docker build ann agus is féidir rud éigin a dhéanamh, ach i ndáiríre níl an cheist réitithe go hiomlán - is cruthúnas é seo ná forbairt chomhthreomhar na mbailitheoirí malartacha, agus réitíonn gach ceann acu cuid de na fadhbanna.

Tionól i werf

Mar sin fuaireamar caoirigh (roimhe seo cáiliúil cosúil le dapp) — Fóntas foinse oscailte ón gcuideachta Flant, atá á dhéanamh againn le blianta fada. Thosaigh sé ar fad 5 bliana ó shin le scripteanna Bash a d'fheabhsaigh cóimeáil Dockerfiles, agus le 3 bliana anuas tá forbairt iomlán déanta laistigh de chreat tionscadail amháin lena stór Git féin. (ar dtús i Ruby, agus ansin athscríofa le Téigh, agus ag an am céanna athainmníodh). Cad iad na saincheisteanna tionóil a réitítear i bhfoirgnimh?

werf - ár n-uirlis le haghaidh CI / CD i Kubernetes (tuarascáil forbhreathnú agus físeáin)

Tá na fadhbanna atá scáthaithe i gorm curtha i bhfeidhm cheana féin, rinneadh an tógáil comhthreomhar laistigh den óstach céanna, agus tá sé beartaithe na saincheisteanna a aibhsítear i buí a bheith críochnaithe faoi dheireadh an tsamhraidh.

Céim an fhoilsithe sa chlár (foilsigh)

Diailigh muid docker push... - cad a d'fhéadfadh a bheith deacair faoi íomhá a uaslódáil chuig an gclárlann? Agus ansin éiríonn an cheist: "Cén chlib ba cheart dom a chur ar an íomhá?" Éiríonn sé ar an gcúis atá againn Sreabhadh Gitflow (nó straitéis Git eile) agus Kubernetes, agus tá an tionscal ag iarraidh a chinntiú go leanann an méid a tharlaíonn i Kubernetes cad a tharlaíonn i Git. Tar éis an tsaoil, is é Git an t-aon fhoinse fírinne atá againn.

Cad atá chomh deacair faoi seo? In-atáirgtheacht a chinntiú: ó ghealltanas i Git, atá do-athlasach ó nádúr (dochorraithe), a íomhá Docker, ba chóir a choinneáil mar an gcéanna.

Tá sé tábhachtach dúinn freisin tionscnaimh a chinneadh, Mar ba mhaith linn a thuiscint as a tiomantas Tógadh an t-iarratas ag rith i Kubernetes (ansin is féidir linn a dhéanamh difríochtaí agus rudaí den chineál céanna).

Straitéisí Clibeála

Tá an chéad cheann simplí lá git. Tá clárlann againn le híomhá atá clibáilte mar 1.0. Tá stáitse agus táirgeadh ag Kubernetes, áit a n-uaslódáiltear an íomhá seo. In Git déanaimid gealltanais agus ag pointe éigin tagaimid 2.0. Bailímid é de réir na dtreoracha ón stór agus cuirimid sa chlár leis an gclib é 2.0. Déanaimid é a rolladh amach ar an stáitse agus, má tá gach rud go maith, ansin chuig an táirgeadh.

werf - ár n-uirlis le haghaidh CI / CD i Kubernetes (tuarascáil forbhreathnú agus físeáin)

Is í an fhadhb atá leis an gcur chuige seo ná gur shocraigh muid an chlib ar dtús, agus gan ach ansin tástáil agus rolladh amach é. Cén fáth? Ar an gcéad dul síos, tá sé míloighciúil: tá leagan de bhogearraí á n-eisiúint againn nach bhfuil tástáil déanta againn orthu go fóill (ní féidir linn a mhalairt a dhéanamh, mar chun seiceáil a dhéanamh, ní mór dúinn clib a chur). Ar an dara dul síos, níl an cosán seo comhoiriúnach le Gitflow.

An dara rogha - git tiomnaigh + clib. Tá clib ag an máistir-bhrainse 1.0; chun é sa chlár - íomhá imscaradh le táirgeadh. Ina theannta sin, tá comhrianta réamhamhairc agus stáitse ag braisle Kubernetes. Ansin leanaimid Gitflow: sa phríomhbhrainse le haghaidh forbartha (develop) a dhéanann muid gnéithe nua, a eascraíonn i tiomantas leis an aitheantóir #c1. Bailímid é agus foilsímid sa chlár é leis an aitheantóir seo (#c1). Leis an aitheantóir céanna a rollaimid amach chun réamhamharc. Déanaimid an rud céanna le gealltanais #c2 и #c3.

Nuair a thuig muid go bhfuil go leor gnéithe ann, cuirimid tús le gach rud a chobhsú. Cruthaigh brainse i Git release_1.1 (ar an mbonn #c3 de develop). Ní gá an scaoileadh seo a bhailiú, mar... rinneadh é seo sa chéim roimhe seo. Mar sin, is féidir linn é a rolladh amach go dtí an stáitse. Ceartaímid fabhtanna isteach #c4 agus ar an mbealach céanna rolladh amach go stáitse. Ag an am céanna, tá forbairt ar siúl i develop, áit a dtógtar athruithe go tréimhsiúil release_1.1. Ag am éigin, cuirtear gealltanas le chéile agus uaslódáiltear é chuig an stáitse, rud a bhfuilimid sásta leis (#c25).

Ansin cumascaimid (le tapa ar aghaidh) an brainse scaoileadh (release_1.1) sa mháistir. Chuireamar clib leis an leagan nua ar an tiomantas seo (1.1). Ach tá an íomhá seo bailithe cheana féin sa chlár, mar sin ionas nach mbailítear arís é, ní gá dúinn ach an dara clib a chur leis an íomhá atá ann cheana féin (tá clibeanna air sa chlár anois #c25 и 1.1). Tar éis sin, déanaimid é a rolladh amach go dtí an táirgeadh.

Tá míbhuntáiste ann nach uaslódáiltear ach íomhá amháin chuig an stáitsiú (#c25), agus i dtáirgeadh tá sé cineál difriúil (1.1), ach tá a fhios againn gurb iad seo “go fisiciúil” an íomhá chéanna ón gclárlann.

werf - ár n-uirlis le haghaidh CI / CD i Kubernetes (tuarascáil forbhreathnú agus físeáin)

Is é an fíor-mhíbhuntáiste ná nach bhfuil aon tacaíocht ann do thiomantais chumaisc, caithfidh tú a dhéanamh go tapa ar aghaidh.

Is féidir linn dul níos faide agus cleas a dhéanamh... Breathnaímid ar shampla de Chomhad Docker simplí:

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

Déanaimis comhad a thógáil uaidh de réir an phrionsabail seo a leanas:

  • SHA256 ó aitheantóirí na n-íomhánna a úsáideadh (ruby:2.3 и nginx:alpine), ar seiceálacha iad ar a bhfuil iontu;
  • gach foireann (RUN, CMD agus mar sin de.);
  • SHA256 ó chomhaid a cuireadh leis.

... agus tóg an seic (arís SHA256) ó chomhad den sórt sin. seo síniú gach rud a shainmhíníonn an t-ábhar ar an íomhá Docker.

werf - ár n-uirlis le haghaidh CI / CD i Kubernetes (tuarascáil forbhreathnú agus físeáin)

A ligean ar dul ar ais go dtí an léaráid agus in ionad gealltanais úsáidfimid sínithe den sórt sin, i.e. íomhánna tag le sínithe.

werf - ár n-uirlis le haghaidh CI / CD i Kubernetes (tuarascáil forbhreathnú agus físeáin)

Anois, nuair is gá, mar shampla, athruithe a chumasc ó scaoileadh go máistreacht, is féidir linn fíor-ghealltanas cumaisc a dhéanamh: beidh aitheantóir difriúil aige, ach an síniú céanna. Leis an aitheantóir céanna cuirfimid an íomhá ar fáil don táirgeadh.

Is é an míbhuntáiste ná nach mbeifear in ann a chinneadh anois cén cineál gealltanas a cuireadh chun cinn - ní oibríonn seiceálacha ach i dtreo amháin. Réitítear an fhadhb seo le ciseal breise le meiteashonraí - inseoidh mé duit níos déanaí.

Clibeáil i werf

I werf chuaigh muid níos faide fós agus táimid ag ullmhú a dhéanamh ar thógáil dáilte le taisce nach bhfuil stóráilte ar mheaisín amháin... Mar sin, táimid ag tógáil dhá chineál na n-íomhánna Docker, tugaimid orthu céim и íomha.

Stórálann stór werf Git treoracha a bhaineann go sonrach le tógáil a chuireann síos ar na céimeanna éagsúla den tógáil (roimh Suiteáil, shuiteáil, roimhSocrú, thus). Bailímid an íomhá den chéad chéim le síniú a shainmhínítear mar sheic de na chéad chéimeanna. Ansin cuirimid an cód foinse, le haghaidh íomhá na céime nua ríomhaimid a sheic... Déantar na hoibríochtaí seo arís agus arís eile do gach céim, agus mar thoradh air sin faigheann muid sraith íomhánna stáitse. Ansin déanaimid an íomhá deiridh, ina bhfuil meiteashonraí faoina bhunús freisin. Agus tagaimid an íomhá seo ar bhealaí éagsúla (sonraí níos déanaí).

werf - ár n-uirlis le haghaidh CI / CD i Kubernetes (tuarascáil forbhreathnú agus físeáin)

Cuir i gcás ina dhiaidh seo go bhfuil gealltanas nua le feiceáil nach bhfuil ach an cód feidhmchláir athraithe. Cad a tharlóidh? Le haghaidh athruithe cód, cruthófar paiste agus ullmhófar íomhá stáitse nua. Cinnfear a shíniú mar sheiceála ar an sean-íomhá stáitse agus ar an bpaiste nua. Cruthófar íomhá deiridh nua ón íomhá seo. Tarlóidh iompar comhchosúil le hathruithe i gcéimeanna eile.

Mar sin, is taisce iad íomhánna stáitse is féidir a stóráil go scaipthe, agus déantar na híomhánna a cruthaíodh cheana a uaslódáil chuig Clárlann an Docker.

werf - ár n-uirlis le haghaidh CI / CD i Kubernetes (tuarascáil forbhreathnú agus físeáin)

An clárlann a ghlanadh

Níl muid ag caint faoi sraitheanna a d'fhan ag crochadh tar éis clibeanna a scriosadh a scriosadh - is gné chaighdeánach é seo de Chlárlann Docker féin. Táimid ag caint faoi chás ina gcruinníonn go leor clibeanna Docker agus tuigimid nach bhfuil cuid acu de dhíth orainn a thuilleadh, ach glacann siad spás (agus / nó íocaimid as).

Cad iad na straitéisí glantacháin?

  1. Is féidir leat a dhéanamh ach rud ar bith ná glan. Uaireanta bíonn sé i ndáiríre níos éasca beagán a íoc as spás breise ná chun teacht ar raon mór clibeanna. Ach ní oibríonn sé seo ach suas go pointe áirithe.
  2. Athshocrú iomlán. Má scriosann tú na híomhánna go léir agus mura ndéanann tú ach na cinn reatha sa chóras CI a atógáil, d’fhéadfadh fadhb a bheith ann. Má atosaítear an coimeádán i dtáirgeadh, déanfar íomhá nua a luchtú dó - ceann nach bhfuil tástáil déanta ag duine ar bith fós. Maraíonn sé seo an smaoineamh ar bhonneagar domhalartaithe.
  3. Gorm-ghlas. Thosaigh clárlann amháin ag cur thar maoil - uaslódálaimid íomhánna go ceann eile. An fhadhb chéanna leis an modh roimhe seo: ag an bpointe is féidir leat soiléir ar an chlár go bhfuil tús curtha ag cur thar maoil?
  4. Le himeacht ama. An bhfuil fonn ort gach íomhá atá níos sine ná mí amháin a scriosadh? Ach is cinnte go mbeidh seirbhís ann nach bhfuil nuashonraithe le mí...
  5. De láimh a chinneadh cad is féidir a scriosadh cheana féin.

Tá dhá rogha fíor-inmharthana: ná glan nó meascán de gorm-uaine + de láimh. Sa chás deireanach, táimid ag caint faoi na nithe seo a leanas: nuair a thuigeann tú go bhfuil sé in am an chlár a ghlanadh, cruthaíonn tú ceann nua agus cuireann tú gach íomhá nua leis thar thréimhse míosa, mar shampla. Agus tar éis míosa, féach cé na pods i Kubernetes atá fós ag baint úsáide as an seanchlár, agus aistrigh iad freisin chuig an gclárlann nua.

Cad a tháinig muid caoirigh? Bailímid:

  1. Ceann Git: gach clib, gach brainse, ag glacadh leis go dteastaíonn uainn gach rud atá clibáilte i Git sna híomhánna (agus mura bhfuil, ansin ní mór dúinn é a scriosadh i Git féin);
  2. na pods go léir atá pumpáilte amach go Kubernetes faoi láthair;
  3. Sean ReplicaSets (rud a eisíodh le déanaí), agus tá sé beartaithe againn freisin eisiúintí Helm a scanadh agus na híomhánna is déanaí a roghnú ann.

... agus déan liosta bán ón tacar seo - liosta íomhánna nach scriosfaimid. Glanaimid amach gach rud eile, agus ina dhiaidh sin aimsímid íomhánna stáitse dílleachta agus scriosaimid iad freisin.

Céim imscaradh

Dearbhú iontaofa

Is é an chéad phointe ar mhaith liom aird a tharraingt air san imscaradh ná an chumraíocht acmhainne nuashonraithe a chur i bhfeidhm, arna dhearbhú go dearbhaithe. Tá buncháipéis YAML ina ndéantar cur síos ar acmhainní Kubernetes an-difriúil i gcónaí ón toradh a bhí ar siúl sa bhraisle. Toisc go gcuireann Kubernetes leis an gcumraíocht:

  1. aitheantóirí;
  2. faisnéis seirbhíse;
  3. go leor luachanna réamhshocraithe;
  4. alt le stádas reatha;
  5. athruithe a rinneadh mar chuid den ghréasán iontrála;
  6. toradh obair rialtóirí éagsúla (agus an sceidealóir).

Mar sin, nuair a thaispeánfar cumraíocht acmhainne nua (nua), ní féidir linn an chumraíocht reatha “beo” a thógáil agus a fhorscríobh leis (ina gcónaí). Chun seo a dhéanamh beidh orainn comparáid a dhéanamh nua leis an gcumraíocht dheireanach a cuireadh i bhfeidhm (deireanach i bhfeidhm) agus rolladh isteach ina gcónaí fuair paiste.

Tugtar an cur chuige seo chumasc 2-bhealach. Úsáidtear é, mar shampla, i Helm.

Tá freisin chumasc 3-bhealach, atá difriúil sa mhéid seo:

  • ag comparáid deireanach i bhfeidhm и nua, féachaimid ar an méid a scriosadh;
  • ag comparáid nua и ina gcónaí, féachaimid ar an méid atá curtha leis nó athraithe;
  • cuirtear an paiste achoimrithe i bhfeidhm ar ina gcónaí.

Déanaimid 1000+ feidhmchlár a imscaradh le Helm, mar sin mairimid i ndáiríre le cumasc 2-bhealach. Mar sin féin, tá roinnt fadhbanna aige atá réitithe againn lenár gcuid paistí, rud a chabhraíonn le Helm oibriú de ghnáth.

Stádas rolladh amach fíor

Tar éis dár gcóras CI cumraíocht nua a ghiniúint do Kubernetes bunaithe ar an gcéad imeacht eile, tarchuireann sé é le húsáid (cuir i bhfeidhm) go braisle - ag baint úsáide as Helm nó kubectl apply. Ina dhiaidh sin, tarlaíonn an cumasc N-way a bhfuil cur síos air cheana féin, agus freagraíonn API Kubernetes go ceadmhach don chóras CI, agus freagraíonn sé sin dá úsáideoir.

werf - ár n-uirlis le haghaidh CI / CD i Kubernetes (tuarascáil forbhreathnú agus físeáin)

Mar sin féin, tá fadhb ollmhór ann: tar éis an tsaoil ní hionann iarratas rathúil agus rolladh amach rathúil. Má thuigeann Kubernetes cad iad na hathruithe is gá a chur i bhfeidhm agus má chuireann sé i bhfeidhm iad, níl a fhios againn fós cad a bheidh i gceist. Mar shampla, d'fhéadfadh go n-éireoidh le nuashonrú agus atosú pods sa tosaigh, ach ní sa inneall, agus gheobhaidh muid leaganacha éagsúla de na híomhánna feidhmchláir reatha.

Chun gach rud a dhéanamh i gceart, éilíonn an scéim seo nasc breise - rianaitheoir speisialta a gheobhaidh faisnéis stádais ó Kubernetes API agus a tharchuirfidh sé le haghaidh tuilleadh anailíse ar fhíor-staid na rudaí. Chruthaíomar leabharlann Foinse Oscailte in Go - ciúbóg (féach a fhógra anseo), a réitíonn an fhadhb seo agus atá ionsuite i bhfoirgnimh.

Cumraítear iompar an rianaithe seo ag leibhéal na fíre trí úsáid a bhaint as nótaí a chuirtear ar Imscaradh nó ar StatefulSets. Príomhnóta - fail-mode - tuigeann sé na bríonna seo a leanas:

  • IgnoreAndContinueDeployProcess — déanaimid neamhaird de na fadhbanna a bhaineann leis an gcomhpháirt seo a rolladh amach agus leanaimid den imscaradh;
  • FailWholeDeployProcessImmediately — cuireann earráid sa chomhpháirt seo stop leis an bpróiseas imlonnaithe;
  • HopeUntilEndOfDeployProcess — tá súil againn go n-oibreoidh an chomhpháirt seo faoi dheireadh an imscartha.

Mar shampla, an meascán seo d'acmhainní agus luachanna nótaí fail-mode:

werf - ár n-uirlis le haghaidh CI / CD i Kubernetes (tuarascáil forbhreathnú agus físeáin)

Nuair a dhéanaimid imscaradh den chéad uair, b'fhéidir nach mbeidh an bunachar sonraí (MongoDB) réidh fós - Teipfidh ar Imscaradh. Ach is féidir leat fanacht go dtí an nóiméad chun é a thosú, agus beidh an t-imscaradh ar siúl fós.

Tá dhá nóta eile le haghaidh kubedog i werf:

  • failures-allowed-per-replica — líon na dtiteann ceadaithe do gach macasamhail;
  • show-logs-until — rialaíonn sé an tráth a dtaispeánann werf (i stdout) logaí ó na pods rolladh amach go léir. Is é an réamhshocrú PodIsReady (chun neamhaird a dhéanamh ar theachtaireachtaí is dócha nach dteastaíonn uainn nuair a thosaíonn an trácht ag teacht go dtí an pod), ach tá luachanna bailí freisin: ControllerIsReady и EndOfDeploy.

Cad eile atá uainn ón imscaradh?

Chomh maith leis an dá phointe atá tuairiscithe cheana féin, ba mhaith linn:

  • a fheiceáil logs - agus gan ach na cinn is gá, agus ní gach rud i ndiaidh a chéile;
  • rian dul chun cinn, mar má tá an post crochta "go ciúin" ar feadh roinnt nóiméad, tá sé tábhachtach a thuiscint cad atá ag tarlú ann;
  • иметь ais-rolladh uathoibríoch i gcás go ndeachaigh rud éigin mícheart (agus dá bhrí sin tá sé ríthábhachtach go mbeadh a fhios agat cén stádas atá ag an imscaradh). Caithfidh an rolladh amach a bheith adamhach: téann sé tríd go dtí an deireadh, nó filleann gach rud ar a staid roimhe sin.

Torthaí

Maidir linne mar chuideachta, a chur i bhfeidhm go léir an nuances cur síos ag céimeanna éagsúla den seachadadh (a thógáil, a fhoilsiú, a imscaradh), tá córas CI agus fóntais go leor caoirigh.

In ionad tátal:

werf - ár n-uirlis le haghaidh CI / CD i Kubernetes (tuarascáil forbhreathnú agus físeáin)

Le cabhair ó werf, tá dul chun cinn maith déanta againn maidir le líon mór fadhbanna a réiteach d’innealtóirí DevOps agus bheadh ​​áthas orainn dá ndéanfadh an pobal i gcoitinne iarracht an áirgiúlacht seo i ngníomh ar a laghad. Beidh sé níos éasca toradh maith a bhaint amach le chéile.

Físeáin agus sleamhnáin

Físeán ón léiriú (~47 nóiméad):

Cur i láthair na tuarascála:

PS

Tuarascálacha eile faoi Kubernetes ar ár mblag:

Foinse: will.com

Add a comment