Zochita Zopitilira Zopereka ndi Docker (ndemanga ndi kanema)

Tidzayambitsa blog yathu ndi zofalitsa kutengera zolankhula zaposachedwa za director wathu waukadaulo distol (Dmitry Stolyarov). Zonsezi zidachitika mu 2016 pazochitika zosiyanasiyana zamaluso ndipo zidaperekedwa pamutu wa DevOps ndi Docker. Kanema imodzi yochokera ku msonkhano wa Docker Moscow ku ofesi ya Badoo, tili nayo kale zosindikizidwa Pa intaneti. Zatsopano zidzatsagana ndi nkhani zofotokoza tanthauzo la malipotiwo. Ndiye…

May 31 pamsonkhanowu RootConf 2016, yomwe idachitika ngati gawo la chikondwererochi "Russian Internet Technologies" (RIT ++ 2016), gawo la "Kutumiza ndi Kutumiza Kupitiliza" linatsegulidwa ndi lipoti lakuti "Best Practices of Continuous Delivery with Docker". Idafotokoza mwachidule ndikukonza njira zabwino zopangira njira yopititsira patsogolo (CD) pogwiritsa ntchito Docker ndi zinthu zina za Open Source. Timagwira ntchito ndi zothetsera izi popanga, zomwe zimatilola kudalira zochitika zothandiza.

Zochita Zopitilira Zopereka ndi Docker (ndemanga ndi kanema)

Ngati muli ndi mwayi wokhala ola limodzi kanema wa lipoti, timalimbikitsa kuwonera kwathunthu. Kupanda kutero, m'munsimu muli chidule chachikulu m'mawu.

Kutumiza Kopitilira ndi Docker

Ndi Kupitiliza kopitilira timamvetsetsa zochitika zambiri zomwe khodi yogwiritsira ntchito kuchokera kumalo osungirako a Git imayamba kupanga, ndiyeno imathera muzosungirako. Zikuwoneka motere: Git β†’ Pangani β†’ Yesani β†’ Tulutsani β†’ Gwirani ntchito.

Zochita Zopitilira Zopereka ndi Docker (ndemanga ndi kanema)
Zambiri mwa lipotilo zimaperekedwa ku gawo lomanga (msonkhano wamapulogalamu), ndipo mitu yotulutsidwa ndikugwira ntchito imakhudzidwa mwachidule. Tidzakambirana za mavuto ndi machitidwe omwe amakulolani kuwathetsa, ndipo machitidwe enieni a machitidwewa angakhale osiyana.

Chifukwa chiyani Docker amafunikira pano konse? Sizopanda pake kuti tidaganiza zolankhula za machitidwe Opitilira Kutumiza molingana ndi chida ichi cha Open Source. Ngakhale lipoti lonse likugwiritsidwa ntchito pakugwiritsa ntchito kwake, zifukwa zambiri zimawululidwa poganizira njira yayikulu yoyendetsera kachidindo.

Njira yayikulu yotulutsira

Chifukwa chake, tikatulutsa mitundu yatsopano ya pulogalamuyo, timakumana nazo vuto la nthawi yochepa, yopangidwa panthawi yakusintha kwa seva yopanga. Magalimoto ochokera ku mtundu wakale wa pulogalamuyo kupita ku chatsopano sangathe kusintha nthawi yomweyo: choyamba tiyenera kuwonetsetsa kuti mtundu watsopanowo sudatsitsidwa bwino, komanso "kutenthetsa" (mwachitsanzo, okonzeka kupereka zopempha).

Zochita Zopitilira Zopereka ndi Docker (ndemanga ndi kanema)
Chifukwa chake, kwakanthawi mitundu yonse iwiri ya pulogalamuyi (yakale ndi yatsopano) idzagwira ntchito nthawi imodzi. Zomwe zimatsogolera ku kusagwirizana kwazinthu: network, file system, IPC, etc. Ndi Docker, vutoli limathetsedwa mosavuta pogwiritsa ntchito mitundu yosiyanasiyana ya pulogalamuyo m'miphika yosiyana, yomwe kudzipatula kumatsimikiziridwa mkati mwa wolandira yemweyo (seva / makina enieni). Zachidziwikire, mutha kuthana ndi zidule zina popanda kutsekereza konse, koma ngati pali chida chokonzekera komanso chothandiza, ndiye kuti pali chifukwa chosiyana - osachinyalanyaza.

Containerization imapereka maubwino ena ambiri ikatumizidwa. Ntchito iliyonse imadalira Baibulo lenileni (kapena mtundu wamtundu) wotanthauzira, kupezeka kwa ma modules/zowonjezera, ndi zina zotero, komanso matembenuzidwe awo. Ndipo izi sizikugwira ntchito kokha ku chilengedwe chomwe chingathe kuchitika posachedwa, komanso ku chilengedwe chonse, kuphatikizapo pulogalamu yamapulogalamu ndi mtundu wake (mpaka kugawa kwa Linux kogwiritsidwa ntchito). Chifukwa chakuti zotengera sizikhala ndi ma code ogwiritsira ntchito, komanso pulogalamu yokhazikitsidwa kale ndi mapulogalamu ofunikira amitundu yofunikira, mutha kuyiwala zamavuto odalira.

Tiyeni tifotokoze mwachidule njira yayikulu yotulutsira Mabaibulo atsopano poganizira izi:

  1. Poyamba, mtundu wakale wa pulogalamuyo umayenda mu chidebe choyamba.
  2. Mtundu watsopanowo umatulutsidwa ndi "kutenthedwa" mu chidebe chachiwiri. Ndizofunikira kudziwa kuti mtundu watsopanowu sungakhale ndi nambala yosinthidwa yokha, komanso zodalira zake zilizonse, komanso zida zamakina (mwachitsanzo, mtundu watsopano wa OpenSSL kapena kugawa konse).
  3. Mtundu watsopanowu ukakonzeka kupereka zopempha, magalimoto amasintha kuchoka pachidebe choyamba kupita chachiwiri.
  4. Mtundu wakale ukhoza kuyimitsidwa.

Njira iyi yotumizira mitundu yosiyanasiyana ya pulogalamuyo m'zotengera zosiyanasiyana imaperekanso mwayi wina - kubweza msanga ku mtundu wakale (pambuyo pake, ndikwanira kusintha magalimoto ku chidebe chomwe mukufuna).

Zochita Zopitilira Zopereka ndi Docker (ndemanga ndi kanema)
Malingaliro omaliza omaliza akumveka ngati chinthu chomwe ngakhale Kaputeni sanachipeze cholakwika: "[pokonzekera Kutumiza Kopitiriza ndi Docker] Gwiritsani ntchito Docker [ndi kumvetsetsa zomwe zimapereka]" Kumbukirani, ichi si chipolopolo chasiliva chomwe chingathetse vuto lililonse, koma chida chomwe chimapereka maziko abwino.

Kuberekanso

Ndi mawu akuti "reproducibility" timatanthawuza mavuto omwe amakumana nawo pogwiritsa ntchito mapulogalamu. Tikukamba za milandu yotereyi:

  • Ma script omwe amawunikiridwa ndi dipatimenti yazabwino kuti awonetsedwe akuyenera kupangidwanso molondola popanga.
  • Mapulogalamu amasindikizidwa pa maseva omwe amatha kulandira mapaketi kuchokera ku magalasi osiyanasiyana osungira (pakapita nthawi amasinthidwa, komanso ndi mitundu ya mapulogalamu omwe adayikidwa).
  • "Zonse zimandiyendera kwanuko!" (...ndipo opanga saloledwa kupanga.)
  • Muyenera kuyang'ana china chake mumtundu wakale (wosungidwa).
  • ...

Zomwe zimayambira zimatengera kuti kutsata kwathunthu malo omwe amagwiritsidwa ntchito (komanso kusakhalapo kwa munthu) ndikofunikira. Kodi tingatsimikizire bwanji kuberekana? Pangani zithunzi za Docker zochokera ku code kuchokera ku Git, ndiyeno muzigwiritsa ntchito pa ntchito iliyonse: pa malo oyesera, pakupanga, pamakina am'deralo a mapulogalamu ... послС kusonkhanitsa chithunzi: chosavuta, ndizovuta kuti pakhale zolakwika.

Infrastructure ndi code

Ngati zofunikira za zomangamanga (kukhalapo kwa mapulogalamu a seva, mtundu wake, ndi zina zotero) sizinapangidwe komanso "zokonzedwa," ndiye kuti kutulutsidwa kwa zosintha zilizonse za pulogalamu kungayambitse zotsatira zoopsa. Mwachitsanzo, popanga masitepe mwasinthira kale ku PHP 7.0 ndikulembanso kachidindo moyenerera - ndiye kuti mawonekedwe ake akupanga ndi PHP yakale (5.5) adzadabwitsa wina. Simungaiwale za kusintha kwakukulu kwa womasulira, koma "mdierekezi ali mwatsatanetsatane": chodabwitsa chikhoza kukhala pakusintha kwakung'ono kwa kudalira kulikonse.

Njira yothetsera vutoli imadziwika kuti IaC (Infrastructure as Code, "infrastructure as code") ndikuphatikizanso kusunga zofunikira za zomangamanga pamodzi ndi nambala yofunsira. Pogwiritsa ntchito, opanga ndi akatswiri a DevOps amatha kugwira ntchito ndi malo omwewo a Git application, koma m'malo osiyanasiyana. Kuchokera pa code iyi, chithunzi cha Docker chimapangidwa ku Git, momwe ntchitoyo imayikidwa poganizira zonse za zomangamanga. Mwachidule, malemba (malamulo) osonkhanitsa zithunzi ayenera kukhala m'malo omwewo ndi code source ndikuphatikizidwa pamodzi.

Zochita Zopitilira Zopereka ndi Docker (ndemanga ndi kanema)

Pankhani ya zomangamanga zamitundu yambiri - mwachitsanzo, pali nginx, yomwe imayima kutsogolo kwa pulogalamu yomwe ikuyenda kale mkati mwa chidebe cha Docker - Zithunzi za Docker ziyenera kupangidwa kuchokera ku code ku Git pagawo lililonse. Kenako chithunzi choyamba chizikhala ndi pulogalamu yokhala ndi womasulira ndi zodalira zina "zapafupi", ndipo chithunzi chachiwiri chizikhala ndi nginx yakumtunda.

Zithunzi za Docker, kulumikizana ndi Git

Timagawa zithunzi zonse za Docker zomwe zasonkhanitsidwa kuchokera ku Git m'magulu awiri: osakhalitsa komanso omasulidwa. Zithunzi zosakhalitsa yolembedwa ndi dzina la nthambi ku Git, imatha kulembedwanso ndi ntchito yotsatira ndipo imatulutsidwa kuti iwonetsedwe (osati kupanga). Uku ndiye kusiyana kwawo kwakukulu ndi omwe amamasulidwa: simudziwa kuti ndi chiyani chomwe chili mwa iwo.

Ndizomveka kusonkhanitsa zithunzi zosakhalitsa: nthambi ya mbuye (mutha kuziyika pamalo ena kuti muwone nthawi zonse za mbuye), nthambi zotulutsa, nthambi zazinthu zatsopano.

Zochita Zopitilira Zopereka ndi Docker (ndemanga ndi kanema)
Pambuyo powonera zithunzi zosakhalitsa pakufunika kumasulira kuti apange, opanga amaika chizindikiro china. Zasonkhanitsidwa ndi tag kumasula chithunzi (chidziwitso chake chikufanana ndi tag yochokera ku Git) ndipo imatulutsidwa kuti ipangidwe. Ngati itsimikiziridwa bwino ndi dipatimenti yabwino, imapita kukupanga.

apa

Chilichonse chomwe chafotokozedwa (kutulutsa, kusonkhanitsa zithunzi, kukonza kotsatira) chitha kukhazikitsidwa paokha pogwiritsa ntchito zolemba za Bash ndi zida zina "zosinthidwa". Koma ngati muchita izi, ndiye kuti nthawi ina kukhazikitsidwa kumabweretsa zovuta komanso kusawongolera bwino. Kumvetsetsa izi, tabwera kudzapanga zida zathu zapadera za Workflow pomanga CI/CD - apa.

Khodi yake yoyambira idalembedwa mu Ruby, gwero lotseguka ndikusindikizidwa GitHub. Tsoka ilo, zolemba ndizomwe zimafooka kwambiri pazida, koma tikugwira ntchito. Ndipo tidzalemba ndikulankhula za dapp kangapo, chifukwa ... Sitingadikire moona mtima kugawana zomwe tingathe ndi anthu onse omwe ali ndi chidwi, koma pakadali pano, tumizani zovuta zanu ndikukokera zopempha ndi/kapena tsatirani chitukuko cha polojekitiyi pa GitHub.

Zasinthidwa pa Ogasiti 13, 2019: pano ndi polojekiti apa adasinthidwa ku werf, code yake yalembedwanso kwathunthu mu Go, ndipo zolemba zake zasinthidwa kwambiri.

Kubernetes

Chida china chopangidwa kale cha Open Source chomwe chalandira kale kuzindikirika kwakukulu m'malo mwa akatswiri ndi Kubernetes, gulu loyang'anira Docker. Mutu wakugwiritsa ntchito kwake pama projekiti omangidwa pa Docker ndi wopitilira lipotilo, chifukwa chake ulalikiwu umangofotokoza mwachidule zinthu zina zosangalatsa.

Potulutsa, Kubernetes amapereka:

  • kukonzekera kafukufuku - kuyang'ana kukonzekera kwa mtundu watsopano wa pulogalamuyo (kusintha traffic kwa izo);
  • kusinthika - kusintha kwazithunzi zotsatizana m'magulu azinthu (kutseka, kusintha, kukonzekera kukhazikitsidwa, kusintha kwa magalimoto);
  • kusintha kwa synchronous - kukonzanso chithunzi mumagulu ndi njira yosiyana: choyamba pa theka la zotengerazo, kenako zina zonse;
  • kutulutsa kwa canary - kuyambitsa chithunzi chatsopano pamipando yocheperako (yaing'ono) kuti muwone zolakwika.

Popeza Continuous Delivery sikuti amangotulutsa mtundu watsopano, Kubernetes ali ndi kuthekera kochulukirapo pakukonzanso zomangamanga: kuyang'anira ndikudula mitengo yazotengera zonse, makulitsidwe odziwikiratu, ndi zina zambiri. kukhazikitsa mu ndondomeko yanu.

Malingaliro omaliza

  1. Gwiritsani ntchito Docker.
  2. Pangani zithunzi za Docker pazosowa zanu zonse.
  3. Tsatirani mfundo yakuti "Infrastructure is code."
  4. Lumikizani Git ku Docker.
  5. Sinthani dongosolo la kutulutsidwa.
  6. Gwiritsani ntchito nsanja yopangidwa kale (Kubernetes kapena ina).

Makanema ndi zithunzi

Kanema wamasewera (pafupifupi ola limodzi) zosindikizidwa pa YouTube (lipotilo likuyamba kuyambira mphindi ya 5 - tsatirani ulalo kuti musewere kuyambira pano).

Kafotokozedwe ka lipoti:

PS

Malipoti ena pamutuwu pabulogu yathu:

Source: www.habr.com

Kuwonjezera ndemanga