Ci gaba da Ayyukan Isarwa tare da Docker (bita da bidiyo)

Za mu fara shafin yanar gizon mu tare da wallafe-wallafe bisa sabbin jawabai na daraktan fasaha na mu distol (Dmitry Stolyarov). Dukkansu sun faru ne a cikin 2016 a cikin ƙwararrun ƙwararru daban-daban kuma an sadaukar da su ga batun DevOps da Docker. Bidiyo ɗaya daga taron Docker Moscow a ofishin Badoo, mun riga mun samu aka buga Kan layi. Sababbin za su kasance tare da kasidu masu isar da ainihin rahotannin. Don haka…

Mayu 31 a taron RootConf 2016, wanda aka gudanar a matsayin wani ɓangare na bikin "Fasahar Intanet na Rasha" (RIT ++ 2016), sashin "Ci gaba da Ƙaddamarwa da Ƙaddamarwa" ya buɗe tare da rahoton "Mafi kyawun Ayyuka na Ci gaba da Bayarwa tare da Docker". Ya taƙaita kuma ya tsara mafi kyawun ayyuka don gina tsarin Isar da Ci gaba (CD) ta amfani da Docker da sauran samfuran Buɗewa. Muna aiki tare da waɗannan mafita a cikin samarwa, wanda ke ba mu damar dogara ga ƙwarewar aiki.

Ci gaba da Ayyukan Isarwa tare da Docker (bita da bidiyo)

Idan kuna da damar kashe awa daya bidiyon rahoton, muna ba da shawarar kallon shi cikakke. In ba haka ba, a ƙasa shine babban taƙaice a cikin sigar rubutu.

Ci gaba da Bayarwa tare da Docker

A karkashin Bayarwa na ci gaba mun fahimci jerin abubuwan da suka faru a sakamakon wanda lambar aikace-aikacen daga ma'ajiyar Git ta fara zuwa samarwa, sannan ta ƙare a cikin tarihin. Ga alama kamar haka: Git → Gina → Gwaji → Saki → Aiki.

Ci gaba da Ayyukan Isarwa tare da Docker (bita da bidiyo)
Yawancin rahoton an keɓance shi ne ga matakin ginawa (taron aikace-aikacen), kuma an taɓo batutuwan da aka saki da aiki a taƙaice. Za mu yi magana game da matsaloli da alamu waɗanda ke ba ku damar magance su, kuma takamaiman aiwatar da waɗannan alamu na iya bambanta.

Me yasa ake buƙatar Docker a nan kwata-kwata? Ba don komai ba ne muka yanke shawarar yin magana game da ayyukan Isar da Ci gaba a cikin mahallin wannan kayan aikin Buɗewa. Ko da yake gabaɗayan rahoton ya keɓe ga amfani da shi, ana bayyana dalilai da yawa yayin da ake la'akari da babban tsarin ƙaddamar da lambar aikace-aikacen.

Babban tsarin fitarwa

Don haka, lokacin da muka fitar da sabbin nau'ikan aikace-aikacen, tabbas muna fuskantar matsala downtime, wanda aka haifar yayin sauyawa na uwar garken samarwa. Traffic daga tsohon sigar aikace-aikacen zuwa sabon ba zai iya canzawa nan take: da farko dole ne mu tabbatar da cewa sabon sigar ba kawai an samu nasarar sauke shi ba, har ma da "dumi" (watau, gaba ɗaya shirye don buƙatun).

Ci gaba da Ayyukan Isarwa tare da Docker (bita da bidiyo)
Don haka, na ɗan lokaci duka nau'ikan aikace-aikacen (tsohuwa da sababbi) za su yi aiki a lokaci ɗaya. Wanda kai tsaye take kaiwa zuwa Rikicin albarkatu da aka raba: cibiyar sadarwa, tsarin fayil, IPC, da dai sauransu. Tare da Docker, ana iya magance wannan matsalar cikin sauƙi ta hanyar gudanar da nau'ikan aikace-aikacen daban-daban a cikin kwantena daban-daban, waɗanda ke ba da garantin keɓewar albarkatu a cikin runduna ɗaya (uwar garken / injin kama-da-wane). Tabbas, zaku iya samun ta tare da wasu dabaru ba tare da rufi ba kwata-kwata, amma idan akwai kayan aiki da aka shirya da dacewa, to akwai kishiyar dalili - kar a manta da shi.

Kwantena yana ba da fa'idodi da yawa idan an tura shi. Kowane aikace-aikace ya dogara da takamaiman sigar (ko sigar sigar) mai fassara, samuwan kayayyaki / kari, da sauransu, da kuma nau'ikan su. Kuma wannan ya shafi ba kawai ga yanayin da za a iya aiwatar da shi ba, har ma ga dukan yanayin, ciki har da tsarin software da sigar sa (har zuwa rarraba Linux da ake amfani da shi). Saboda gaskiyar cewa kwantena sun ƙunshi ba kawai lambar aikace-aikacen ba, har ma da tsarin da aka riga aka shigar da software da software na nau'ikan da ake buƙata, zaku iya mantawa da matsaloli tare da dogaro.

Mu takaita babban tsarin jujjuyawa sababbin nau'ikan la'akari da waɗannan abubuwan:

  1. Da farko, tsohon sigar aikace-aikacen yana gudana a cikin akwati na farko.
  2. Ana fitar da sabon sigar sannan a “dumi” a cikin akwati na biyu. Abin lura ne cewa wannan sabon sigar kanta na iya ɗaukar ba kawai sabunta lambar aikace-aikacen ba, har ma da duk wani abin dogaronta, da kuma abubuwan haɗin tsarin (misali, sabon sigar OpenSSL ko gabaɗayan rarrabawa).
  3. Lokacin da sabon sigar ya shirya don ba da buƙatun, zirga-zirgar zirga-zirgar zirga-zirgar zirga-zirgar zirga-zirgar zirga-zirgar zirga-zirgar zirga-zirgar zirga-zirgar zirga-zirgar zirga-zirgar zirga-zirgar zirga-zirgar zirga-zirgar zirga-zirgar zirga-zirgar zirga-zirgar zirga-zirgar zirga-zirgar zirga-zirgar zirga-zirgar zirga-zirgar ababen hawa ta sauya daga kwantena ta farko zuwa na biyu.
  4. Ana iya dakatar da tsohon sigar yanzu.

Wannan tsarin tura nau'ikan aikace-aikacen daban-daban a cikin kwantena daban-daban yana ba da wani jin daɗi - saurin juyowa zuwa tsohuwar sigar (bayan duka, ya isa ya canza zirga-zirga zuwa akwati da ake so).

Ci gaba da Ayyukan Isarwa tare da Docker (bita da bidiyo)
Shawarar farko ta ƙarshe tana kama da wani abu wanda ko Kyaftin ba zai iya samun laifi ba: "[lokacin da ake shirya Isar da Ci gaba tare da Docker] Yi amfani da Docker [kuma ku fahimci abin da yake bayarwa]" Ka tuna, wannan ba harsashi na azurfa ba ne wanda zai magance kowace matsala, amma kayan aiki ne wanda ke ba da tushe mai ban mamaki.

Maimaituwa

Ta “maimaitawa” muna nufin jimlar matsalolin da aka fuskanta lokacin aiki da aikace-aikacen. Muna magana ne game da irin waɗannan lokuta:

  • Rubutun da sashen inganci ya duba don tsarawa dole ne a sake buga su daidai a samarwa.
  • Ana buga aikace-aikacen akan sabar waɗanda za su iya karɓar fakiti daga madubai daban-daban (a tsawon lokaci ana sabunta su, kuma tare da su nau'ikan aikace-aikacen da aka shigar).
  • "Komai yana aiki a gare ni a gida!" (...kuma ba a yarda masu haɓakawa su shiga samarwa ba.)
  • Kuna buƙatar bincika wani abu a cikin tsohuwar sigar (wanda aka adana).
  • ...

Jigon su na gabaɗaya ya gangaro zuwa gaskiyar cewa cikakken yarda da yanayin da aka yi amfani da shi (da kuma rashi na ɗan adam) ya zama dole. Ta yaya za mu iya tabbatar da sake haihuwa? Yi hotuna Docker dangane da lambar daga Git, sa'an nan kuma amfani da su don kowane aiki: a kan shafukan gwaji, a cikin samarwa, a kan na'urorin gida na masu shirye-shirye ... A lokaci guda, yana da mahimmanci don rage girman ayyukan da aka yi. после hada hoton: mafi sauki shine, da ƙarancin samun kurakurai.

Kamfanoni shine code

Idan abubuwan da ake buƙata na kayan aikin (samuwar software na uwar garken, sigar sa, da sauransu) ba a tsara su ba kuma “tsara,” to fidda kowane sabuntawar aikace-aikacen zai iya haifar da mummunan sakamako. Misali, a cikin tsari kun riga kun canza zuwa PHP 7.0 kuma ku sake rubuta lambar daidai - to bayyanarsa a samarwa tare da wasu tsoffin PHP (5.5) tabbas zai ba wa wani mamaki. Ba za ku iya mantawa game da babban canji a cikin fassarar fassarar ba, amma "shaidan yana cikin cikakkun bayanai": abin mamaki yana iya kasancewa a cikin ƙaramin sabuntawa na kowane dogara.

Hanyar magance wannan matsala da aka sani da IaC (Infrastructure as Code, "kayan aiki azaman lambar") kuma ya haɗa da adana abubuwan abubuwan more rayuwa tare da lambar aikace-aikacen. Amfani da shi, masu haɓakawa da ƙwararrun DevOps na iya aiki tare da ma'ajiyar aikace-aikacen Git iri ɗaya, amma akan sassa daban-daban na sa. Daga wannan lambar, an ƙirƙiri hoton Docker a cikin Git, wanda aka tura aikace-aikacen cikin la'akari da ƙayyadaddun kayan aikin. A sauƙaƙe, rubutun (dokokin) don haɗa hotuna ya kamata su kasance a cikin ma'ajiya ɗaya tare da lambar tushe kuma a haɗa su tare.

Ci gaba da Ayyukan Isarwa tare da Docker (bita da bidiyo)

A cikin yanayin tsarin gine-ginen aikace-aikacen multilayer - alal misali, akwai nginx, wanda ke tsaye a gaban aikace-aikacen da ke gudana a cikin akwati Docker - Hotunan Docker dole ne a ƙirƙira su daga lamba a Git don kowane Layer. Sannan hoton farko zai ƙunshi aikace-aikace tare da mai fassara da sauran abubuwan dogaro na "kusa", kuma hoto na biyu zai ƙunshi nginx na sama.

Hotunan Docker, sadarwa tare da Git

Muna raba duk hotunan Docker da aka tattara daga Git zuwa kashi biyu: na wucin gadi da saki. Hotunan wucin gadi wanda aka yiwa alama da sunan reshe a Git, za'a iya sake rubuta shi ta hanyar alƙawari na gaba kuma ana fitar dashi kawai don samfoti (ba don samarwa ba). Wannan shine babban bambancin su da waɗanda aka saki: ba ku taɓa sanin takamaiman takamaiman aiki a cikinsu ba.

Yana da ma'ana don tattarawa cikin hotuna na wucin gadi: babban reshe (zaku iya mirgine shi ta atomatik zuwa wani rukunin daban don ganin sigar maigidan koyaushe), rassan tare da sakewa, rassan ƙayyadaddun sabbin abubuwa.

Ci gaba da Ayyukan Isarwa tare da Docker (bita da bidiyo)
Bayan samfotin hotuna na wucin gadi ya zo ga buƙatar fassarar zuwa samarwa, masu haɓakawa suna sanya tambari. An tattara ta atomatik ta tag sakin hoto (tambarin sa ya yi daidai da alamar daga Git) kuma ana birgima don yin tsari. Idan an sami nasarar tabbatar da ingancin sashen, yana zuwa samarwa.

dapp

Duk abin da aka bayyana (fitarwa, taron hoto, kiyayewa na gaba) ana iya aiwatar da shi da kansa ta amfani da rubutun Bash da sauran kayan aikin "inganta". Amma idan kun yi haka, to a wani lokaci aiwatarwa zai haifar da babban rikitarwa da rashin kulawa. Fahimtar wannan, mun zo ne don ƙirƙirar namu na musamman na kayan aiki don gina CI/CD - dapp.

An rubuta lambar tushe a cikin Ruby, buɗe tushen kuma an buga shi GitHub. Abin takaici, takardun aiki a halin yanzu shine mafi rauni na kayan aiki, amma muna aiki akan shi. Kuma za mu rubuta da magana game da dapp fiye da sau ɗaya, saboda ... Da gaske ba za mu iya jira don raba iyawar sa tare da dukan al'umma masu sha'awar ba, amma a halin yanzu, aika batutuwan ku kuma ja buƙatun da/ko bi ci gaban aikin akan GitHub.

An sabunta ta Agusta 13, 2019: a halin yanzu aikin dapp canza suna zuwa wuf, An sake rubuta lambar sa gaba ɗaya a cikin Go, kuma an inganta takaddun sa sosai.

Kubernetes

Wani kayan aikin Buɗaɗɗen Tushen da aka shirya wanda ya rigaya ya sami karɓuwa mai mahimmanci a cikin yanayin ƙwararru shine Kubernetes, gungu mai sarrafa Docker. Batun amfani da shi wajen gudanar da ayyukan da aka gina a kan Docker ya wuce iyakar rahoton, don haka gabatarwa ya iyakance ga bayyani na wasu abubuwa masu ban sha'awa.

Don ƙaddamarwa, Kubernetes yana ba da:

  • Binciken shirye-shiryen - duba shirye-shiryen sabon sigar aikace-aikacen (don canza zirga-zirga zuwa gare shi);
  • sabuntawar mirgina - sabunta hoto na jeri a cikin gungu na kwantena (kashewa, sabuntawa, shirye-shiryen ƙaddamarwa, canjin zirga-zirga);
  • sabuntawa na aiki tare - sabunta hoto a cikin tari tare da wata hanya dabam: na farko akan rabin kwantena, sannan akan sauran;
  • Canary releases - ƙaddamar da sabon hoto akan iyakataccen adadin kwantena (kananan) don sa ido kan abubuwan da ba su da kyau.

Tun da Ci gaba da Bayarwa ba kawai sakin sabon sigar ba ne, Kubernetes yana da damar da yawa don kula da abubuwan more rayuwa na gaba: ginanniyar saka idanu da shiga ga duk kwantena, sikelin atomatik, da dai sauransu Duk wannan yana aiki kuma yana jira kawai don dacewa. aiwatarwa a cikin ayyukanku.

Shawarwari na ƙarshe

  1. Yi amfani da Docker.
  2. Ƙirƙiri hotunan Docker na aikace-aikace don duk bukatun ku.
  3. Bi ka'idar "Infrastructure code."
  4. Haɗa Git zuwa Docker.
  5. Tsara tsari na fiddawa.
  6. Yi amfani da shirye-shiryen da aka yi (Kubernetes ko wani).

Bidiyo da nunin faifai

Bidiyo daga wasan kwaikwayon (kimanin awa ɗaya) aka buga a YouTube (rahoton da kansa ya fara daga minti na 5 - bi hanyar haɗin don kunna daga wannan lokacin).

Gabatar da rahoton:

PS

Sauran rahotanni kan batun a kan shafinmu:

source: www.habr.com

Add a comment