IiNdlela eziqhubekayo zokuHanjiswa ngeDocker (uphononongo kunye nevidiyo)

Siza kuqalisa iblogi yethu ngeempapasho ezisekelwe kwiintetho zamva nje zomlawuli wethu wezobugcisa distol (UDmitry Stolyarov). Zonke zenzeke kwi-2016 kwiziganeko ezahlukeneyo zobuchwephesha kwaye zanikezelwa kwisihloko se-DevOps kunye ne-Docker. Ividiyo enye evela kwintlanganiso yaseDocker eMoscow kwiofisi yaseBadoo, sele sinayo ipapashiwe Kwi-intanethi. Abatsha baya kukhatshwa ngamanqaku adlulisa umongo weengxelo. Ngoko...

Ngomhla wama-31 kuCanzibe kwinkomfa RootConf 2016, ebanjwe njengenxalenye yomthendeleko "Ubuchwephesha be-Intanethi baseRashiya" (RIT ++ 2016), icandelo elithi "Ukusasazwa ngokuqhubekayo kunye nokuThuthwa" kwavulwa ngengxelo ethi "Iindlela ezihamba phambili zokuThuthwa ngokuqhubekayo kunye neDocker". Yashwankathela yaza yacwangcisa ezona zenzo zilungileyo zokwakha inkqubo yokuZisa ngokuQolekileyo (CD) kusetyenziswa iDocker kunye nezinye iimveliso zoMthombo oVulekileyo. Sisebenza ngezi zisombululo kwimveliso, esivumela ukuba sithembele kumava asebenzayo.

IiNdlela eziqhubekayo zokuHanjiswa ngeDocker (uphononongo kunye nevidiyo)

Ukuba unethuba lokuchitha iyure ividiyo yengxelo, sincoma ukuyibukela ngokupheleleyo. Ngaphandle koko, ngezantsi isishwankathelo esiphambili kwifom yesicatshulwa.

Ukuhanjiswa okuqhubekekayo kunye neDocker

Ngaphantsi Ukuhambisa ngokuqhubekayo siqonda ikhonkco leziganeko ngenxa yokuba ikhowudi yesicelo evela kwindawo yokugcina i-Git iza kuqala kwimveliso, kwaye iphelela kwindawo yokugcina. Ijongeka ngolu hlobo: IGit β†’ Yakha β†’ Uvavanyo β†’ Khupha β†’ Sebenza.

IiNdlela eziqhubekayo zokuHanjiswa ngeDocker (uphononongo kunye nevidiyo)
Uninzi lwengxelo lunikezelwe kwinqanaba lokwakha (indibano yesicelo), kwaye ukukhutshwa kwezihloko kunye nokusebenza kuchukunyiswe ngokufutshane. Siza kuthetha ngeengxaki kunye neepatheni ezikuvumela ukuba uzisombulule, kwaye ukuphunyezwa okuthe ngqo kwale patheni kunokwahluka.

Kutheni iDocker ifuneka apha konke konke? Ayisiyonto ukuba sigqibe kwelokuba sithethe malunga neendlela zokuZisa ngokuqhubekayo kumxholo wesi sixhobo soMthombo oVulekileyo. Nangona yonke ingxelo inikezelwe ekusebenziseni kwayo, izizathu ezininzi zibonakaliswe xa kuqwalaselwa iphethini ephambili yokukhutshwa kwekhowudi yesicelo.

Ipatheni yokukhupha engundoqo

Ke, xa sikhupha iinguqulelo ezintsha zesicelo, ngokuqinisekileyo sijongene nazo ingxaki yexesha lokuphumla, eveliswe ngexesha lokutshintshwa komncedisi wemveliso. I-traffic esuka kuhlelo oludala lwesicelo ukuya kwentsha ayinakutshintshela ngokukhawuleza: okokuqala kufuneka siqinisekise ukuba inguqulelo entsha ayikhutshelwanga ngempumelelo kuphela, kodwa "yafudumala" (oko kukuthi, ilungele ngokupheleleyo ukukhonza izicelo).

IiNdlela eziqhubekayo zokuHanjiswa ngeDocker (uphononongo kunye nevidiyo)
Ke, kangangexesha elithile zombini iinguqulelo zesicelo (ezindala nezintsha) ziya kusebenza ngaxeshanye. Okukhokelela ngokuzenzekelayo kwi ungquzulwano lwezibonelelo ekwabelwana ngalo: inethiwekhi, inkqubo yefayile, IPC, njl. Nge-Docker, le ngxaki isonjululwa ngokulula ngokuqhuba iinguqulelo ezahlukeneyo zesicelo kwizikhongozeli ezahlukileyo, apho ukwahlulwa kovimba kuqinisekiswa ngaphakathi komkhosi omnye (umncedisi/umatshini obambekayo). Ewe kunjalo, unokufikelela ngamanye amaqhinga ngaphandle kokugquma konke, kodwa ukuba kukho isixhobo esenziwe eselenziwe kwaye esifanelekileyo, ke kukho isizathu esichaseneyo - ungasihoyi.

I-Containerization ibonelela ngezinye izibonelelo ezininzi xa zisetyenziswa. Nasiphi na isicelo sixhomekeke kwi inguqulelo ethile (okanye uluhlu lwenguqulelo) itoliki, ukufumaneka kweemodyuli/izandiso, njalo njalo, kunye neenguqulelo zazo. Kwaye oku akusebenzi nje kuphela kwimeko-bume ephunyeziweyo, kodwa nakwimeko-bume yonke, kuquka inkqubo yesoftware kunye noguqulelo lwayo (ukuya kunikezelo lweLinux olusetyenzisiweyo). Ngenxa yokuba izikhongozeli aziqukethe ikhowudi yesicelo kuphela, kodwa kunye nenkqubo efakwe ngaphambili kunye nesofthiwe yesicelo seenguqulelo ezifunekayo, unokulibala malunga neengxaki ngokuxhomekeka.

Makhe sishwankathele ipateni yokukhutshwa engundoqo iinguqulelo ezintsha kuthathelwa ingqalelo le miba ilandelayo:

  1. Ekuqaleni, uguqulelo oludala lwesicelo lusebenza kwisikhongozeli sokuqala.
  2. Uguqulelo olutsha luqengqeleka kwaye "lufudunyezwe" kwisitya sesibini. Kuyaphawuleka ukuba le nguqulo entsha ngokwayo ayinakuthwala ikhowudi yesicelo ehlaziyiweyo kuphela, kodwa nayo nayiphi na into exhomekeke kuyo, kunye namacandelo enkqubo (umzekelo, inguqulelo entsha ye-OpenSSL okanye usasazo lonke).
  3. Xa inguqulelo entsha ikulungele ngokupheleleyo ukukhonza izicelo, itrafikhi iyatshintsha ukusuka kwisitya sokuqala ukuya kwesesibini.
  4. Inguqulelo endala inokuyekwa.

Le ndlela yokuhambisa iinguqulelo ezahlukeneyo zesicelo kwizikhongozeli ezahlukeneyo ibonelela ngolunye uncedo - ukubuyisela umva ngokukhawuleza kwinguqulo endala (emva koko, kwanele ukutshintshela i-traffic kwisitya esifunwayo).

IiNdlela eziqhubekayo zokuHanjiswa ngeDocker (uphononongo kunye nevidiyo)
Isindululo sokuqala sokugqibela sivakala njengento engazange ibonwe nguKapteni: β€œ[xa uququzelela ukuhanjiswa okuQhubekayo kunye neDocker] Sebenzisa iDocker [kwaye uqonde ukuba inika ntoni]" Khumbula, oku akusiyo i-bullet yesilivere eya kusombulula zonke iingxaki, kodwa isixhobo esinika isiseko esihle.

Ukuvelisa kwakhona

Ngokuthi "ukuveliswa kwakhona" sithetha isethi ngokubanzi yeengxaki ezifunyenwe xa usetyenziso lwezicelo. Sithetha ngeemeko ezinjalo:

  • Izikripthi ezijongwe lisebe lomgangatho ukuze zenziwe nokwenziwa ngokutsha ngokuchanekileyo kwimveliso.
  • Izicelo zipapashwa kwiiseva ezinokufumana iipakethe ezivela kwizibuko ezahlukeneyo zokugcina (ekuhambeni kwexesha zihlaziywa, kunye nazo iinguqulelo zezicelo ezifakiweyo).
  • β€œYonke into indisebenzela ekuhlaleni!” (... kwaye abaphuhlisi abavumelekanga kwimveliso.)
  • Kufuneka ujonge into endala (egciniweyo) inguqulelo.
  • ...

Ukubaluleka kwabo ngokubanzi kubilisa kwinto yokuba ukuthotyelwa ngokupheleleyo kweemeko ezisetyenziswayo (kunye nokungabikho kwento yomntu) kuyimfuneko. Singakuqinisekisa njani ukuzala kwakhona? Yenza imifanekiso yeDocker ngokusekelwe kwikhowudi esuka kwiGit, kwaye ke uyisebenzise kuyo nayiphi na imisebenzi: kwiindawo zokuvavanya, kwimveliso, koomatshini bendawo beprogram ... Ngelo xesha, kubalulekile ukunciphisa izenzo ezenziwayo. послС ukudibanisa umfanekiso: kulula ngakumbi, kunokubakho iimpazamo.

Iziseko zophuhliso yikhowudi

Ukuba iimfuno zeziseko zophuhliso (ubukho besoftware yeseva, uguqulelo lwayo, njl.njl.) azenziwanga kwaye "zicwangcisiwe," ngoko ke ukukhutshwa kwalo naluphi na uhlaziyo lwesicelo kunokukhokelela kwiziphumo ezibi. Umzekelo, kwistaging sele utshintshele kwi-PHP 7.0 kwaye uphinde ubhale ikhowudi ngokufanelekileyo - emva koko ukubonakala kwayo kwimveliso kunye ne-PHP endala (5.5) ngokuqinisekileyo kuya kumangalisa umntu. Awukwazi ukulibala malunga noshintsho olukhulu kwinguqulelo yetoliki, kodwa "umtyholi ukwiinkcukacha": ukumangaliswa kusenokuba kuhlaziyo oluncinane lwalo naluphi na ukuxhomekeka.

Indlela yokusombulula le ngxaki yaziwa ngokuba IaC (Iziseko ezingundoqo njengeKhowudi, "iziseko zophuhliso njengekhowudi") kwaye ibandakanya ukugcina iimfuno zeziseko zophuhliso kunye nekhowudi yesicelo. Ukuyisebenzisa, abaphuhlisi kunye neengcali ze-DevOps banokusebenza kunye ne-Git application repository, kodwa kwiindawo ezahlukeneyo zayo. Ukusuka kule khowudi, umfanekiso we-Docker wenziwa kwi-Git, apho isicelo sisetyenziswe ngokuqwalasela zonke iinkcukacha zesiseko. Ukubeka ngokulula, izikripthi (imithetho) yokudibanisa imifanekiso kufuneka ibe kwindawo yokugcina kunye nekhowudi yomthombo kwaye idibaniswe kunye.

IiNdlela eziqhubekayo zokuHanjiswa ngeDocker (uphononongo kunye nevidiyo)

Kwimeko yolwakhiwo lwesicelo se-multi-layer-umzekelo, kukho i-nginx, emi phambi kwesicelo esele sisebenza ngaphakathi kwisitya se-Docker - imifanekiso ye-Docker kufuneka yenziwe kwikhowudi kwi-Git kuluhlu ngalunye. Emva koko umfanekiso wokuqala uya kuba nesicelo kunye netoliki kunye nezinye "ezisondeleyo" ezixhomekeke, kwaye umfanekiso wesibini uya kuqulatha i-nginx ephezulu.

Imifanekiso yeDocker, unxibelelwano kunye neGit

Sahlulahlula yonke imifanekiso yeDocker eqokelelwe kwiGit ibe ziindidi ezimbini: okwethutyana kunye nokukhululwa. Imifanekiso yethutyana ephawulwe ngegama lesebe kwi-Git, inokubhalwa ngaphezulu ngesibophelelo esilandelayo kwaye ikhutshelwe ngaphandle kuphela imboniso (hayi yemveliso). Lo ngumahluko wabo ophambili kwezi zikhutshiweyo: soze wazi ukuba yeyiphi isithembiso esikubo.

Kunengqiqo ukuqokelela kwimifanekiso yesikhashana: i-master branch (unokuyikhupha ngokuzenzekelayo kwindawo eyahlukileyo ukuze ubone rhoqo inguqu yangoku yenkosi), amasebe anokukhutshwa, amasebe ezinto ezintsha.

IiNdlela eziqhubekayo zokuHanjiswa ngeDocker (uphononongo kunye nevidiyo)
Emva kokubonwa kwemifanekiso yethutyana kuza kwimfuno yokuguqulelwa kwimveliso, abaphuhlisi babeka ithegi ethile. Iqokelelwe ngokuzenzekelayo ngethegi khulula umfanekiso (ithegi yayo ihambelana nethegi esuka kwiGit) kwaye ikhutshelwe ngaphandle kwistaging. Ukuba iqinisekiswa ngempumelelo lisebe lomgangatho, iya kwimveliso.

idapp

Yonke into echazwe (ukukhutshwa, ukuhlanganiswa komfanekiso, ukulungiswa okulandelayo) kunokuphunyezwa ngokuzimeleyo ngokusebenzisa izikripthi zeBash kunye nezinye izixhobo "eziphuculweyo". Kodwa ukuba wenza oku, ngoko ngexesha elithile ukuphunyezwa kuya kubangela ubunzima obukhulu kunye nokulawulwa kakubi. Ukuqonda oku, size ukwenza eyethu i-Workflow utility ekhethekileyo yokwakha iCI/CD - idapp.

Ikhowudi yayo yomthombo ibhalwe kwiRuby, umthombo ovulekileyo kwaye upapashwe kuyo GitHub. Ngelishwa, amaxwebhu okwangoku yeyona ndawo ibuthathaka kwisixhobo, kodwa sisebenza kuyo. Kwaye siya kubhala kwaye sithethe nge-dapp ngaphezulu kwesihlandlo esinye, kuba... Ngokunyanisekileyo asinakulinda ukwabelana ngezakhono zayo kunye noluntu lonke olunomdla, kodwa okwangoku, thumela imiba yakho kwaye utsale izicelo kunye / okanye ulandele uphuhliso lweprojekthi kwi-GitHub.

Ihlaziywe ngo-Agasti 13, 2019: ngoku yiprojekthi idapp ithiywe kwakhona ku i-werf, ikhowudi yayo ibhalwe ngokutsha ngokupheleleyo kwi-Go, kwaye amaxwebhu ayo aphuculwe kakhulu.

Kubernetes

Esinye isixhobo esisele senziwe senziwe nguMthombo oVulekileyo esele sifumene ukuqatshelwa okubalulekileyo kwimekobume yobungcali Kubernetes, iqela lolawulo lweDocker. Isihloko sokusetyenziswa kwayo ekusebenzeni kweeprojekthi ezakhiwe kwi-Docker ingaphaya kobubanzi bengxelo, ngoko umboniso unqunyelwe kwisishwankathelo sezinye iimpawu ezinomdla.

Ukukhutshwa, iKubernetes ibonelela:

  • iprobe yokulungela - ukujonga ukulungela kwenguqulelo entsha yesicelo (ukutshintsha itrafikhi kuyo);
  • uhlaziyo oluqengqelekayo - uhlaziyo lomfanekiso olulandelelanayo kwiqela lezikhongozeli (ukuvalwa, uhlaziyo, ukulungiselela ukuqaliswa, ukutshintsha kwetrafikhi);
  • ukuhlaziywa kwe-synchronous - ukuhlaziya umfanekiso kwi-cluster kunye nendlela eyahlukileyo: okokuqala kwisiqingatha sezikhongozeli, emva koko kwezinye;
  • ukukhutshwa kwe-canary - ukusungula umfanekiso omtsha kwinani eliqingqiweyo (elincinci) leekhonteyina ukujonga izinto ezingaqhelekanga.

Ekubeni ukuhanjiswa ngokuqhubekayo akukona nje ukukhutshwa kwenguqu entsha, i-Kubernetes inamathuba amaninzi okugcinwa kweziseko ezingundoqo ezilandelayo: ukubeka iliso eyakhelwe-ngaphakathi kunye nokugawulwa kwemithi kuzo zonke izitya, ukulinganisa ngokuzenzekelayo, njl. ukuphunyezwa kwiinkqubo zakho.

Iingcebiso zokugqibela

  1. Sebenzisa iDocker.
  2. Yenza imifanekiso yeDocker yezicelo kuzo zonke iimfuno zakho.
  3. Landela umgaqo othi β€œIziseko zophuhliso yikhowudi.”
  4. Xhuma iGit kwiDocker.
  5. Ukulawula ulandelelwano lokuqaliswa.
  6. Sebenzisa iqonga esele lilungile (Kubernetes okanye enye).

Iividiyo kunye nezilayidi

Ividiyo esuka kumdlalo (malunga neyure) ipapashwe kuYouTube (ingxelo ngokwayo iqala ngomzuzu we-5 - landela ikhonkco lokudlala ukusuka kulo mzuzu).

Ukunikezelwa kwengxelo:

PS

Ezinye iingxelo ngesihloko kwibhlog yethu:

umthombo: www.habr.com

Yongeza izimvo