Imikhuba Eqhubekayo Yokulethwa Nge-Docker (ukubuyekeza nevidiyo)

Sizoqala ibhulogi yethu ngokushicilelwa okusekelwe enkulumweni yakamuva yomqondisi wethu wezobuchwepheshe distol (Dmitry Stolyarov). Zonke zenzeka ngo-2016 emicimbini eyahlukene yobungcweti futhi bezinikezelwe esihlokweni se-DevOps ne-Docker. Ividiyo eyodwa evela emhlanganweni we-Docker Moscow ehhovisi le-Badoo, sesinayo kakade eshicilelwe Ku-inthanethi. Ezintsha zizohambisana nezindatshana ezidlulisa umongo wemibiko. Ngakho...

Meyi 31 engqungqutheleni I-RootConf 2016, ebanjwe njengengxenye yomkhosi othi "Russian Internet Technologies" (RIT++ 2016), isigaba esithi "Ukuthunyelwa Okuqhubekayo Nokuthunyelwa" sivulwe ngombiko othi "Imikhuba Engcono Kakhulu Yokulethwa Okuqhubekayo Nge-Docker". Ifingqe futhi yahlela izinqubo ezihamba phambili zokwakha inqubo Yokulethwa Okuqhubekayo (CD) kusetshenziswa i-Docker neminye imikhiqizo yomthombo ovulekile. Sisebenza nalezi zixazululo ekukhiqizeni, okusivumela ukuthi sithembele kulwazi olusebenzayo.

Imikhuba Eqhubekayo Yokulethwa Nge-Docker (ukubuyekeza nevidiyo)

Uma unethuba lokuchitha ihora ividiyo yombiko, sincoma ukuyibuka ngokugcwele. Uma kungenjalo, ngezansi isifinyezo esikhulu sefomu lombhalo.

Ukulethwa Okuqhubekayo nge-Docker

Ngaphansi Ukulethwa Okuqhubekayo siyaluqonda uchungechunge lwemicimbi njengomphumela wokuthi ikhodi yohlelo lokusebenza evela endaweni ye-Git ize kuqala ekukhiqizweni, bese igcina kungobo yomlando. Kubukeka kanjena: I-Git → Yakha → Isivivinyo → Khipha → Sebenza.

Imikhuba Eqhubekayo Yokulethwa Nge-Docker (ukubuyekeza nevidiyo)
Iningi lombiko ligxile esiteji sokwakha (ukuhlanganiswa kwesicelo), futhi izihloko ezikhishwa nokusebenza zithintwa kafushane. Sizokhuluma ngezinkinga namaphethini akuvumela ukuthi uwaxazulule, futhi ukusetshenziswa okuqondile kwalawa maphethini kungase kwehluke.

Kungani i-Docker idingeka lapha nhlobo? Akukhona lutho ukuthi sinqume ukukhuluma ngezinqubo Zokulethwa Okuqhubekayo kumongo waleli thuluzi Lomthombo Ovulekile. Nakuba wonke umbiko uzinikele ekusetshenzisweni kwawo, izizathu eziningi ziyadalulwa uma kubhekwa iphethini eyinhloko yokukhishwa kwekhodi yohlelo lokusebenza.

Iphethini yokukhishwa eyinhloko

Ngakho-ke, lapho sikhipha izinguqulo ezintsha zohlelo lokusebenza, ngokuqinisekile sibhekene nazo inkinga yesikhathi sokuphumula, ekhiqizwe ngesikhathi kushintshwa iseva yokukhiqiza. Ithrafikhi esuka kunguqulo yakudala yohlelo lokusebenza iye kwentsha ayikwazi ukushintsha ngokushesha: okokuqala kufanele siqinisekise ukuthi inguqulo entsha ayilandwa ngempumelelo kuphela, kodwa futhi "ifudunyeziwe" (okungukuthi, isilungele ngokuphelele ukunikeza izicelo).

Imikhuba Eqhubekayo Yokulethwa Nge-Docker (ukubuyekeza nevidiyo)
Ngakho-ke, isikhathi esithile zombili izinguqulo zohlelo lokusebenza (ezindala nezintsha) zizosebenza kanyekanye. Okuholela ngokuzenzakalelayo ku ukungqubuzana kwezinsiza ezabiwe: inethiwekhi, isistimu yefayela, i-IPC, njll. Nge-Docker, le nkinga ixazululwa kalula ngokusebenzisa izinguqulo ezihlukene zohlelo lokusebenza ezitsheni ezihlukene, lapho ukuhlukaniswa kwensiza kuqinisekiswa ngaphakathi komsingathi ofanayo (iseva/umshini obonakalayo). Vele, ungadlula ngamanye amaqhinga ngaphandle kokufakwa nhlobo, kepha uma kukhona ithuluzi elenziwe ngomumo nelilungele, khona-ke kunesizathu esiphambene - ukungakunaki.

I-Containerization inikeza ezinye izinzuzo eziningi lapho kuthunyelwa. Noma yiluphi uhlelo lokusebenza luncike inguqulo ethile (noma ububanzi benguqulo) umhumushi, ukutholakala kwamamojula/izandiso, njll., kanye nezinguqulo zazo. Futhi lokhu akusebenzi nje kuphela endaweni esebenza ngokushesha, kodwa nakuyo yonke imvelo, kuhlanganise isofthiwe yesistimu kanye nenguqulo yayo (kufika ekusabalaliseni kwe-Linux esetshenzisiwe). Ngenxa yokuthi iziqukathi aziqukethe ikhodi yohlelo lokusebenza kuphela, kodwa futhi nesistimu efakwe ngaphambili kanye nesofthiwe yohlelo lokusebenza yezinguqulo ezidingekayo, ungakhohlwa ngezinkinga ngokuncika.

Ake sifingqe iphethini yokukhishwa eyinhloko izinguqulo ezintsha kucatshangelwa izici ezilandelayo:

  1. Ekuqaleni, inguqulo endala yohlelo lokusebenza isebenza esitsheni sokuqala.
  2. Inguqulo entsha bese ikhishwa futhi "ifudunyezwe" esitsheni sesibili. Kuyaphawuleka ukuthi le nguqulo entsha ngokwayo ngeke iphathe ikhodi yohlelo lokusebenza ebuyekeziwe kuphela, kodwa futhi nanoma yikuphi ukuncika kwayo, kanye nezingxenye zesistimu (isibonelo, inguqulo entsha ye-OpenSSL noma yonke ukusatshalaliswa).
  3. Uma inguqulo entsha isilungele ngokugcwele ukunikeza izicelo, ithrafikhi iyashintsha isuka esitsheni sokuqala iye kwesesibili.
  4. Inguqulo endala manje ingamiswa.

Le ndlela yokuthumela izinguqulo ezihlukene zohlelo lokusebenza ezitsheni ezihlukene inikeza okunye ukunethezeka - ukubuyisela emuva ngokushesha enguqulweni endala (ngemuva kwakho konke, kwanele ukushintsha ithrafikhi esitsheni oyifunayo).

Imikhuba Eqhubekayo Yokulethwa Nge-Docker (ukubuyekeza nevidiyo)
Isincomo sokuqala sokugcina sizwakala njengento uKaputeni angazange ayithole iphutha: “[lapho uhlela ukulethwa okuqhubekayo nge-Docker] Sebenzisa i-Docker [futhi uqonde ukuthi inikezani]" Khumbula, lena akuyona inhlamvu yesiliva ezoxazulula zonke izinkinga, kodwa ithuluzi elinikeza isisekelo esihle.

Ukukhiqiza kabusha

Ngokuthi “ukukhiqiza kabusha” sisho isethi ejwayelekile yezinkinga okuhlangatshezwana nazo lapho kusetshenziswa izinhlelo zokusebenza. Sikhuluma ngamacala anjalo:

  • Imibhalo ehloliwe umnyango wekhwalithi ukuze ihlelwe kufanele ikhiqizwe ngokunembile ekukhiqizweni.
  • Izicelo zishicilelwa kumaseva angathola amaphakheji avela ezibukweni zekhosombe ezahlukene (ngokuhamba kwesikhathi ayabuyekezwa, kanye nazo izinguqulo zezinhlelo zokusebenza ezifakiwe).
  • “Konke kungisebenzela endaweni!” (...futhi onjiniyela abavunyelwe ukukhiqiza.)
  • Udinga ukuhlola okuthile enguqulweni endala (efakwe kungobo yomlando).
  • ...

Ingqikithi yabo evamile igxila eqinisweni lokuthi ukuhambisana ngokugcwele kwezindawo ezisetshenziswayo (kanye nokungabikho kwesici somuntu) kuyadingeka. Singakuqinisekisa kanjani ukukhiqiza kabusha? Yenza izithombe ze-Docker ngokusekelwe kukhodi evela ku-Git, bese uyisebenzisela noma yimuphi umsebenzi: kumasayithi okuhlola, ekukhiqizeni, emishinini yendawo yabahleli bezinhlelo... Ngesikhathi esifanayo, kubalulekile ukunciphisa izenzo ezenziwayo. после ukuhlanganisa isithombe: uma kulula, mancane amathuba okuba namaphutha.

Ingqalasizinda ikhodi

Uma izimfuneko zengqalasizinda (ukutholakala kwesofthiwe yeseva, inguqulo yayo, njll.) zingenziwanga ngokusemthethweni futhi "zihleliwe," khona-ke ukukhishwa kwanoma isiphi isibuyekezo sohlelo lokusebenza kungaholela emiphumeleni eyinhlekelele. Isibonelo, esiteji usuvele ushintshele ku-PHP 7.0 futhi wabhala kabusha ikhodi ngokufanele - khona-ke ukuvela kwayo ekukhiqizeni nge-PHP ethile endala (5.5) kuzomangaza othile. Ungase ungakhohlwa mayelana noshintsho olukhulu enguqulweni yomhumushi, kodwa "udeveli usemininingwaneni": isimangaliso singase sibe yisibuyekezo esincane sanoma yikuphi ukuncika.

Indlela yokuxazulula le nkinga yaziwa ngokuthi I-IaC (Ingqalasizinda njengeKhodi, “ingqalasizinda njengekhodi”) futhi kuhilela ukugcina izidingo zengqalasizinda kanye nekhodi yesicelo. Ngokuyisebenzisa, abathuthukisi kanye nochwepheshe be-DevOps bangasebenza nekhosombe lesicelo le-Git elifanayo, kodwa ezingxenyeni ezihlukene zalo. Kusuka kule khodi, kwakhiwa isithombe se-Docker ku-Git, lapho kuthunyelwa khona uhlelo kucatshangelwa yonke imininingwane yengqalasizinda. Kalula nje, imibhalo (imithetho) yokuhlanganisa izithombe kufanele ibe kunqolobane efanayo nekhodi yomthombo futhi ihlanganiswe ndawonye.

Imikhuba Eqhubekayo Yokulethwa Nge-Docker (ukubuyekeza nevidiyo)

Endabeni yesakhiwo sohlelo lokusebenza lwezendlalelo eziningi - isibonelo, kukhona i-nginx, emi phambi kwesicelo esivele sisebenza ngaphakathi kwesitsha se-Docker - Izithombe ze-Docker kufanele zidalwe kusuka kukhodi ku-Git isendlalelo ngasinye. Khona-ke isithombe sokuqala sizoqukatha uhlelo lokusebenza olunotolika nokunye okuncikile kokuthi "vala", futhi isithombe sesibili sizoqukatha i-nginx ekhuphukayo.

Izithombe ze-Docker, ukuxhumana ne-Git

Sihlukanisa zonke izithombe ze-Docker eziqoqwe ku-Git zibe izigaba ezimbili: ezesikhashana nezokukhululwa. Izithombe zesikhashana okumakwe ngegama legatsha ku-Git, kungacishwa ngokuzibophezela okulandelayo futhi kukhishwe ukuze kuhlolwe kuqala (hhayi okokukhiqiza). Lona umehluko wabo oyinhloko kwabakhululiwe: ngeke wazi ukuthi yikuphi ukuzibophezela okukuzo.

Kunengqondo ukuqoqa ezithombeni zesikhashana: igatsha eliyinhloko (ungalikhipha ngokuzenzakalelayo endaweni ehlukile ukuze ubone njalo inguqulo yamanje ye-master), amagatsha anokukhishwa, amagatsha ezinto ezintsha ezithile.

Imikhuba Eqhubekayo Yokulethwa Nge-Docker (ukubuyekeza nevidiyo)
Ngemuva kokuthi ukubuka kuqala kwezithombe zesikhashana kufike esidingweni sokuhunyushelwa ekukhiqizeni, onjiniyela bafaka umaka othile. Kuqoqwe ngokuzenzakalelayo ngomaka khulula isithombe (ithegi yayo ihambisana nethegi evela ku-Git) futhi ikhishelwa esiteji. Uma iqinisekiswa ngempumelelo umnyango wekhwalithi, iya ekukhiqizeni.

i-dapp

Konke okuchazwe (ukukhishwa, ukuhlanganiswa kwesithombe, ukulungiswa okulandelayo) kungenziwa ngokuzimela kusetshenziswa imibhalo ye-Bash namanye amathuluzi "athuthukisiwe". Kodwa uma wenza lokhu, khona-ke ngesikhathi esithile ukuqaliswa kuzoholela enkingeni enkulu kanye nokulawulwa okungalungile. Ngokuqonda lokhu, size ukuzokwakha okwethu okukhethekile kokugeleza komsebenzi wokwakha i-CI/CD - i-dapp.

Ikhodi yayo yomthombo ibhalwe ku-Ruby, umthombo ovulekile futhi ishicilelwe kuyo GitHub. Ngeshwa, amadokhumenti njengamanje ayiphuzu elibuthakathaka lethuluzi, kodwa sisasebenza kukho. Futhi sizobhala futhi sikhulume nge-dapp izikhathi ezingaphezu kwesisodwa, ngoba... Asikwazi ngempela ukulinda ukwabelana ngamakhono ayo nawo wonke umphakathi onentshisekelo, kodwa okwamanje, thumela izinkinga zakho futhi udonse izicelo kanye/noma ulandele ukuthuthukiswa kwephrojekthi ku-GitHub.

Kubuyekezwe Agasti 13, 2019: okwamanje iphrojekthi i-dapp iqanjwe kabusha ku i-werf, ikhodi yayo ibhalwe kabusha ngokuphelele kokuthi Go, futhi imibhalo yayo ithuthukiswe kakhulu.

Kubernetes

Elinye ithuluzi elenziwe ngomumo le-Open Source eselivele lithole ukuqashelwa okubalulekile endaweni yobungcweti Kubernetes, iqoqo labaphathi be-Docker. Isihloko sokusetshenziswa kwayo ekusebenzeni kwamaphrojekthi akhelwe ku-Docker singaphezu kobubanzi bombiko, ngakho-ke isethulo sikhawulelwe ekubukezweni kwezici ezithile ezithakazelisayo.

Ukuze kukhishwe, i-Kubernetes inikeza:

  • i-readiness probe — ukuhlola ukulungela kwenguqulo entsha yohlelo lokusebenza (ukushintsha ithrafikhi kuyo);
  • ukuvuselela kabusha - isibuyekezo sesithombe esilandelanayo kuqoqo leziqukathi (ukuvalwa, ukuvuselela, ukulungiselela ukwethulwa, ukushintsha kwethrafikhi);
  • i-synchronous update - ukuvuselela isithombe eqoqweni ngendlela ehlukile: okokuqala engxenyeni yeziqukathi, bese kuthi kwezinye;
  • ukukhishwa kwe-canary - kwethula isithombe esisha enanini elilinganiselwe (elincane) leziqukathi ukuze kuqashwe okudidayo.

Njengoba Ukulethwa Okuqhubekayo kungekona nje ukukhishwa kwenguqulo entsha, i-Kubernetes inamakhono amaningana okulungisa ingqalasizinda elandelayo: ukuqapha okwakhelwe ngaphakathi nokugawulwa kwazo zonke iziqukathi, ukukala okuzenzakalelayo, njll. Konke lokhu sekuvele kuyasebenza futhi kulinde okufanele. ukuqaliswa ezinqubweni zakho.

Izincomo zokugcina

  1. Sebenzisa i-Docker.
  2. Dala izithombe ze-Docker zezicelo zazo zonke izidingo zakho.
  3. Landela isimiso "Ingqalasizinda ikhodi."
  4. Xhuma i-Git ku-Docker.
  5. Lawula ukuhleleka kokukhishwa.
  6. Sebenzisa inkundla eseyenziwe ngomumo (Kubernetes noma enye).

Amavidiyo namaslayidi

Ividiyo evela ekusebenzeni (cishe ihora) ishicilelwe ku-YouTube (umbiko ngokwawo uqala ngomzuzu wesi-5 - landela isixhumanisi ukuze udlale kusukela kulo mzuzu).

Ukwethulwa kombiko:

PS

Eminye imibiko ngesihloko esikubhulogi yethu:

Source: www.habr.com

Engeza amazwana