Ana tura aikace-aikace zuwa VM, Nomad da Kubernetes

Sannu duka! Sunana Pavel Agaletsky. Ina aiki a matsayin jagorar ƙungiyar a cikin ƙungiyar da ke haɓaka tsarin isar da Lamoda. A cikin 2018, na yi magana a taron HighLoad ++, kuma a yau ina so in gabatar da kwafin rahoton na.

Batun nawa an sadaukar da shi ga kwarewar kamfaninmu wajen tura tsarin da ayyuka zuwa wurare daban-daban. Tun daga zamaninmu na farko, lokacin da muka tura duk tsarin zuwa sabar sabar na yau da kullun, yana ƙarewa da sannu a hankali daga Nomad zuwa turawa a Kubernetes. Zan gaya muku dalilin da ya sa muka yi shi da kuma matsalolin da muka samu a cikin aikin.

Ana tura aikace-aikace zuwa VM

Bari mu fara da gaskiyar cewa shekaru 3 da suka gabata an tura duk tsarin da sabis na kamfanin akan sabar sabar na yau da kullun. A fasaha, an tsara shi ta yadda aka adana duk lambobin tsarin mu kuma an haɗa su ta amfani da kayan aikin haɗawa ta atomatik, ta amfani da jenkins. Yin amfani da Mai yiwuwa, an fitar da shi daga tsarin sarrafa sigar mu zuwa sabobin kama-da-wane. Bugu da ƙari, kowane tsarin da kamfaninmu ke da shi an tura shi zuwa akalla 2 sabobin: daya daga cikinsu a kai, na biyu a kan wutsiya. Waɗannan tsarin guda biyu sun kasance daidai da juna a cikin dukkan saitunan su, iko, daidaitawa, da sauransu. Bambancin kawai tsakanin su shine shugaban ya karɓi zirga-zirgar masu amfani, yayin da wutsiya ba ta karɓi zirga-zirgar mai amfani ba.

Me yasa aka yi haka?

Lokacin da muka tura sabbin fitowar aikace-aikacenmu, muna so mu tabbatar da fitowar su ba tare da wani lahani ba ga masu amfani. An cimma wannan ne saboda gaskiyar cewa sakin na gaba da aka haɗa ta amfani da Ansible an yi birgima zuwa wutsiya. A can, mutanen da suka shiga cikin ƙaddamarwa zasu iya dubawa kuma tabbatar da cewa duk abin da ke da kyau: duk ma'auni, sassan da aikace-aikace suna aiki; an kaddamar da rubutun da ake bukata. Sai bayan sun gamsu cewa komai ya yi kyau, an canza zirga-zirga. Ya fara zuwa uwar garken da ke a baya wutsiya. Kuma wanda a baya shi ne shugaban ya kasance ba tare da zirga-zirgar mai amfani ba, yayin da yake da nau'in aikace-aikacenmu na baya.

Don haka ya kasance mara kyau ga masu amfani. Domin sauyawa yana nan take, tunda kawai yana canza ma'aunin. Kuna iya jujjuyawa cikin sauƙi zuwa sigar da ta gabata ta hanyar sauya ma'aunin baya kawai. Hakanan zamu iya tabbatar da cewa aikace-aikacen yana iya samarwa tun kafin ya karɓi zirga-zirgar mai amfani, wanda ya dace sosai.

Waɗanne fa'idodi ne muka gani a cikin wannan duka?

  1. Da farko, ya isa yana aiki kawai. Kowa ya fahimci yadda irin wannan tsarin turawa ke aiki, saboda yawancin mutane sun taɓa tura zuwa sabar na yau da kullun.
  2. Wannan ya isa abin dogaro, Tun da fasahar ƙaddamarwa yana da sauƙi, an gwada ta dubban kamfanoni. Miliyoyin sabobin ana tura su ta wannan hanya. Yana da wuya a karya wani abu.
  3. Kuma a karshe za mu iya samun atomic deployments. Ƙaddamar da abubuwan da ke faruwa a lokaci guda don masu amfani, ba tare da wani matakin da ya dace na sauyawa tsakanin tsohuwar sigar da sabuwar ba.

Amma kuma mun ga gazawa da yawa a cikin wannan duka:

  1. Baya ga yanayin samarwa, yanayin ci gaba, akwai sauran mahalli. Misali, qa da preproduction. A lokacin muna da sabobin da yawa da ayyuka kusan 60. A saboda wannan dalili ya zama dole ga kowane sabis, kula da sabon sigar don shi injin kama-da-wane. Bugu da ƙari, idan kuna son sabunta ɗakunan karatu ko shigar da sabbin abubuwan dogaro, kuna buƙatar yin wannan a kowane yanayi. Hakanan kuna buƙatar daidaita lokacin da zaku tura sabon sigar aikace-aikacenku na gaba tare da lokacin da devops ke aiwatar da saitunan muhalli masu dacewa. A wannan yanayin, yana da sauƙi mu shiga cikin yanayin da yanayin mu zai ɗan bambanta a kowane yanayi a lokaci ɗaya. Alal misali, a cikin yanayin QA za a sami wasu nau'ikan ɗakunan karatu, kuma a cikin yanayin samarwa za a sami nau'o'in daban-daban, wanda zai haifar da matsala.
  2. Wahalar sabunta abubuwan dogaro aikace-aikacen ku. Ya dogara ba akan ku ba, amma akan sauran ƙungiyar. Wato, daga ƙungiyar devops da ke kula da sabobin. Dole ne ku ba su aikin da ya dace da bayanin abin da kuke son yi.
  3. A lokacin, mu ma muna so mu raba manya-manyan ma’abota girman daya da muke da su zuwa kananan hidimomi daban, tun da mun fahimci cewa za a yi ta kara yawa. A lokacin, muna da fiye da 100 daga cikinsu. Ga kowane sabon sabis, ya zama dole don ƙirƙirar sabon na'ura mai mahimmanci, wanda kuma yana buƙatar kulawa da turawa. Bugu da kari, ba ku buƙatar mota ɗaya, amma aƙalla biyu. Ƙara wa duk wannan shine yanayin QA. Wannan yana haifar da matsaloli kuma yana sa ya fi wahalar ginawa da gudanar da sababbin tsarin. hadaddun, tsada da tsari mai tsayi.

Saboda haka, mun yanke shawarar cewa zai fi dacewa don matsawa daga tura injinan kama-da-wane na yau da kullun zuwa tura aikace-aikacen mu a cikin akwati na docker. Idan kuna da docker, kuna buƙatar tsarin da zai iya tafiyar da aikace-aikacen a cikin gungu, tunda ba za ku iya ɗaga akwati kawai ba. Yawancin lokaci kuna son ci gaba da lura da kwantena nawa aka ɗaga domin su ɗaga kai tsaye. Saboda wannan dalili, muna buƙatar zaɓar tsarin sarrafawa.

Mun dade muna tunanin wanda zamu iya dauka. Gaskiyar ita ce, a wancan lokacin wannan tari na turawa akan sabar na yau da kullun ya ɗan daɗe, tunda ba su da sabbin nau'ikan tsarin aiki. A wani lokaci, akwai ma FreeBSD, wanda bai dace sosai don tallafawa ba. Mun fahimci cewa muna buƙatar ƙaura zuwa docker da sauri. Masu bautar mu sun kalli kwarewar da suke da ita tare da mafita daban-daban kuma sun zaɓi tsari kamar Nomad.

Canja zuwa Nomad

Nomad samfurin HashiCorp ne. An kuma san su da sauran hanyoyin magance su:

Ana tura aikace-aikace zuwa VM, Nomad da Kubernetes

"Consul" kayan aiki ne don gano sabis.

"Teraform" - tsarin kula da sabobin da ke ba ku damar daidaita su ta hanyar daidaitawa, abin da ake kira kayan aiki-as-a-code.

"Bazara" yana ba ku damar tura injunan kama-da-wane a cikin gida ko cikin gajimare ta takamaiman fayilolin daidaitawa.

Nomad a wancan lokacin ya zama kamar mafita mai sauƙi wanda za a iya canza shi da sauri ba tare da canza duk kayan aikin ba. Bugu da kari, yana da sauƙin koya. Shi ya sa muka zabe shi a matsayin tsarin tacewa ga kwandon mu.

Me kuke buƙata don tura tsarin ku zuwa Nomad?

  1. Da farko kuna buƙatar hoton docker aikace-aikacen ku. Kuna buƙatar gina shi kuma sanya shi cikin ma'ajiyar hoton docker. A cikin mu, wannan kayan tarihi ne - tsarin da ke ba ku damar tura kayan tarihi daban-daban na iri daban-daban a ciki. Yana iya adana kayan tarihi, hotunan docker, fakitin PHP na mawaki, fakitin NPM, da sauransu.
  2. Ana kuma bukata fayil ɗin sanyi, wanda zai gaya wa Nomad menene, a ina da kuma adadin da kuke son turawa.

Lokacin da muke magana game da Nomad, yana amfani da yaren HCL azaman tsarin fayil ɗin bayanin sa, wanda ke tsaye ga Harshen Kanfigareshan HashiCorp. Wannan babban saitin Yaml ne wanda ke ba ku damar siffanta sabis ɗin ku a cikin kalmomin Nomad.

Ana tura aikace-aikace zuwa VM, Nomad da Kubernetes

Yana ba ku damar faɗin kwantena nawa kuke son turawa, daga wane hotuna don wuce sigogi daban-daban zuwa gare su yayin turawa. Don haka, kuna ciyar da wannan fayil ɗin zuwa Nomad, kuma yana ƙaddamar da kwantena don samarwa bisa ga shi.

A cikin yanayinmu, mun fahimci cewa kawai rubuta fayilolin HCL iri ɗaya ga kowane sabis ba zai dace sosai ba, saboda akwai ayyuka da yawa kuma wani lokacin kuna son sabunta su. Yana faruwa cewa sabis ɗaya aka tura ba a cikin misali ɗaya ba, amma a cikin nau'ikan daban-daban. Misali, daya daga cikin tsarin da muke da shi a samarwa yana da fiye da lokuta 100 a samarwa. Suna gudana daga hotuna iri ɗaya, amma sun bambanta a cikin saitunan sanyi da fayilolin sanyi.

Saboda haka, mun yanke shawarar cewa zai dace a gare mu mu adana duk fayilolin tsarin mu don turawa cikin ma'ajiyar gama gari ɗaya. Ta wannan hanyar sun kasance a bayyane: sun kasance masu sauƙin kulawa kuma muna iya ganin irin tsarin da muke da shi. Idan ya cancanta, yana da sauƙi don ɗaukaka ko canza wani abu. Ƙara sabon tsarin kuma ba shi da wahala - kawai kuna buƙatar ƙirƙirar fayil ɗin sanyi a cikin sabon kundin adireshi. A ciki akwai fayiloli masu zuwa: service.hcl, wanda ya ƙunshi bayanin sabis ɗinmu, da wasu fayilolin env waɗanda ke ba da izinin wannan sabis ɗin, ana tura shi cikin samarwa, don daidaita su.

Ana tura aikace-aikace zuwa VM, Nomad da Kubernetes

Koyaya, ana tura wasu tsarin mu don samarwa ba a cikin kwafi ɗaya ba, amma a yawancin lokaci ɗaya. Saboda haka, mun yanke shawarar cewa zai dace a gare mu mu adana ba configs a cikin tsantsar sigar su ba, amma sigar da aka tsara. Kuma mun zaba jinji 2. A cikin wannan tsari, muna adana duka saitunan sabis ɗin kanta da fayilolin env da ake buƙata don sa.

Bugu da ƙari, mun sanya rubutun turawa a cikin ma'ajiyar kayan aiki na yau da kullum ga duk ayyukan, wanda ke ba ku damar ƙaddamar da ƙaddamar da sabis ɗin ku a cikin samarwa, cikin yanayin da ake so, cikin manufa da ake so. A cikin yanayin lokacin da muka juya tsarin HCL ɗin mu zuwa samfuri, sannan fayil ɗin HCL, wanda a da ya kasance tsarin Nomad na yau da kullun, a wannan yanayin ya fara ɗan bambanta.

Ana tura aikace-aikace zuwa VM, Nomad da Kubernetes

Wato, mun maye gurbin wasu masu canjin wurin saiti tare da maɓalli masu canji waɗanda aka ɗauka daga fayilolin env ko wasu tushe. Bugu da kari, mun sami damar tattara fayilolin HCL a hankali, wato, za mu iya amfani da ba kawai abubuwan sakawa na yau da kullun ba. Tunda jinja yana goyan bayan madaukai da yanayi, zaku iya ƙirƙirar fayilolin sanyi a wurin, waɗanda ke canzawa dangane da inda kuke tura aikace-aikacenku daidai.

Misali, kuna son tura sabis ɗin ku don samarwa da samarwa. Bari mu ce a cikin samarwa kafin samarwa ba kwa son gudanar da rubutun cron, amma kawai kuna son ganin sabis ɗin akan wani yanki daban don tabbatar da yana aiki. Ga duk wanda ya tura sabis ɗin, tsarin ya yi kama da sauƙi da bayyananne. Duk abin da kuke buƙatar yi shine aiwatar da fayil ɗin deploy.sh, ƙayyade sabis ɗin da kuke son turawa da kuma wace manufa. Misali, kuna son tura wani tsarin zuwa Rasha, Belarus ko Kazakhstan. Don yin wannan, kawai canza ɗaya daga cikin sigogi, kuma zaku sami fayil ɗin daidaitawa daidai.

Lokacin da an riga an tura sabis ɗin Nomad zuwa gungu, yana kama da wannan.

Ana tura aikace-aikace zuwa VM, Nomad da Kubernetes

Da farko, kuna buƙatar wani nau'in ma'auni a waje, wanda zai karɓi duk zirga-zirgar mai amfani. Zai yi aiki tare tare da Consul kuma gano daga gare ta inda, a kan wane kumburi, a wane adireshin IP akwai takamaiman sabis ɗin da ya dace da wani sunan yanki. Ayyuka a cikin Consul sun fito daga Nomad kanta. Tun da waɗannan samfuran ne daga kamfani ɗaya, suna da alaƙa da juna sosai. Za mu iya cewa Nomad daga cikin akwatin na iya yin rajistar duk ayyukan da aka ƙaddamar a ciki a cikin Consul.

Da zarar ma'aunin ma'auni na ƙarshen gaban ku ya san sabis ɗin da za ku aika da zirga-zirga zuwa gare shi, yana tura shi zuwa akwati da ya dace ko kwantena da yawa waɗanda suka dace da aikace-aikacenku. A zahiri, ya zama dole kuma a yi tunani game da aminci. Ko da yake duk sabis ɗin suna gudana akan injuna iri ɗaya a cikin kwantena, wannan yawanci yana buƙatar hana damar shiga kyauta daga kowane sabis zuwa wani. Mun cimma hakan ne ta hanyar rarrabawa. Kowane sabis an ƙaddamar da shi a cikin hanyar sadarwar sa ta kama-da-wane, wanda akansa aka tsara ka'idoji da ƙa'idodi don ba da damar / hana damar zuwa wasu tsarin da ayyuka. Ana iya samun su duka a cikin wannan tari da wajenta. Misali, idan kuna son hana sabis daga haɗawa zuwa takamaiman bayanan bayanai, ana iya yin wannan ta hanyar rarrabuwa-matakin cibiyar sadarwa. Wato, ko da bisa kuskure, ba za ku iya haɗawa da gangan daga wurin gwajin zuwa bayanan samar da ku ba.

Nawa ne sauyin ya kashe mu ta fuskar albarkatun ɗan adam?

Canjin gabaɗayan kamfanin zuwa Nomad ya ɗauki kusan watanni 5-6. Mun ƙaura bisa tsarin sabis-by-sabis, amma a cikin sauri da sauri. Dole ne kowace ƙungiya ta ƙirƙira kwantena nasu don ayyukan.

Mun ɗauki irin wannan hanyar da kowace ƙungiya ke da alhakin ɗaukar hotuna na tsarin su da kanta. DevOps yana ba da cikakken kayan aikin da ake buƙata don turawa, wato, goyan baya ga gungu kanta, tallafi ga tsarin CI, da sauransu. Kuma a lokacin, muna da tsarin fiye da 60 sun koma Nomad, wanda ya kai kimanin kwantena 2.

Devops yana da alhakin samar da kayan aikin gabaɗaya na duk abin da ya shafi turawa da sabar. Kuma kowace ƙungiyar ci gaba, ita ce ke da alhakin aiwatar da kwantena don takamaiman tsarinta, tunda ƙungiyar ce ta san abin da gabaɗaya take buƙata a cikin wani akwati.

Dalilan watsi da Nomad

Wadanne fa'idodi muka samu ta hanyar canzawa zuwa tura aiki ta amfani da Nomad da docker, da sauransu?

  1. Mu an ba da daidaitattun sharuɗɗa ga dukkan mahalli. A cikin haɓakawa, yanayin QA, pre-samarwa, samarwa, ana amfani da hotuna iri ɗaya, tare da dogaro iri ɗaya. Saboda haka, kusan ba ku da damar cewa abin da zai ƙare a samarwa ba shine abin da kuka gwada a baya ba a cikin gida ko a yanayin gwajin ku.
  2. Mun kuma gano cewa ya isa sauki don ƙara sabon sabis. Daga ra'ayi na turawa, kowane sabon tsarin ana ƙaddamar da shi cikin sauƙi. Kawai je wurin ma'ajin da ke adana configs, ƙara wani config don tsarin ku a can, kuma kun gama. Kuna iya tura tsarin ku don samarwa ba tare da wani ƙarin ƙoƙari daga devops ba.
  3. All fayilolin sanyi a cikin ma'ajiyar gama gari ɗaya ya zama ana dubawa. A lokacin da muka tura tsarin mu ta hanyar amfani da sabar sabar, mun yi amfani da Mai yiwuwa, wanda saitin ke cikin ma'ajiya guda. Koyaya, ga yawancin masu haɓaka wannan ya ɗan fi wahalar aiki da su. Anan ƙarar saiti da lambar da kuke buƙatar ƙarawa don tura sabis ɗin ya zama ƙarami sosai. Bugu da ƙari, yana da sauƙi ga masu ba da izini don gyara ko canza shi. Idan akwai sauye-sauye, alal misali, zuwa sabon sigar Nomad, za su iya ɗauka da sabunta duk fayilolin da ke aiki a wuri guda.

Amma kuma mun ci karo da rashin amfani da yawa:

Sai ya zama mu ba zai iya cimma matsaya ba a wajen Nomad. Lokacin fitar da kwantena a ƙarƙashin yanayi daban-daban, zai iya zama yana gudana, kuma Nomad ya ɗauka a matsayin akwati da ke shirye don karɓar zirga-zirga. Wannan ya faru tun kafin aikace-aikacen da ke cikinsa ya sami damar ƙaddamarwa. A saboda haka ne tsarin ya fara haifar da kurakurai 500 na ɗan lokaci kaɗan, saboda zirga-zirgar ababen hawa sun fara shiga cikin kwantena wanda bai riga ya shirya karɓe shi ba.

Mun ci karo da wasu kwari. Babban mahimmin kwaro shine Nomad baya ɗaukar babban gungu sosai idan kuna da tsarin da kwantena da yawa. Lokacin da kake son fitar da ɗaya daga cikin sabar da aka haɗa cikin rukunin Nomad don kulawa, akwai yuwuwar babban yuwuwar cewa gungu ba zai ji daɗi sosai ba kuma zai rabu. Wasu kwantena na iya, alal misali, su faɗi kuma ba za su tashi ba - wannan zai biya ku da yawa daga baya idan duk tsarin samar da ku yana cikin gungu na Nomad.

Don haka muka yanke shawarar yin tunanin inda ya kamata mu bi. A wannan lokacin, mun ƙara fahimtar abin da muke son cimmawa. Wato: muna son dogaro, ɗan ƙarin ayyuka fiye da yadda Nomad ke bayarwa, da ingantaccen tsarin balagagge.

Dangane da wannan, zaɓinmu ya faɗi akan Kubernetes a matsayin mafi mashahuri dandamali don ƙaddamar da gungu. Musamman ganin cewa girman da adadin kwantenanmu sun isa sosai. Don irin waɗannan dalilai, Kubernetes ya zama kamar tsarin da ya fi dacewa da za mu iya kallo.

Canje-canje zuwa Kubernetes

Zan gaya muku kadan game da ainihin ra'ayoyin Kubernetes da yadda suka bambanta da Nomad.

Ana tura aikace-aikace zuwa VM, Nomad da Kubernetes

Da farko, mafi mahimmancin ra'ayi a cikin Kubernetes shine manufar kwafsa. kwafsa rukuni ne na kwantena ɗaya ko fiye waɗanda koyaushe suna tafiya tare. Kuma koyaushe suna aiki kamar dai a kan injin kama-da-wane. Suna samun dama ga juna ta hanyar IP 127.0.0.1 akan tashoshin jiragen ruwa daban-daban.

Bari mu ɗauka cewa kuna da aikace-aikacen PHP wanda ya ƙunshi nginx da php-fpm - tsarin gargajiya. Mafi mahimmanci, kuna so ku adana kwantena nginx da php-fpm tare a koyaushe. Kubernetes yana ba ku damar cimma wannan ta hanyar kwatanta su azaman kwafsa ɗaya ɗaya. Wannan shi ne ainihin abin da ba za mu iya samu tare da Nomad ba.

Magana ta biyu ita ce kwashewa. Gaskiyar ita ce, kwafsa kanta abu ne na al'ada, yana farawa kuma ya ɓace. Shin kuna son kashe duk kwantena na baya da farko, sannan ku ƙaddamar da sabbin sigogin lokaci guda, ko kuna son fitar da su a hankali? Yana bayyana yadda kuke tura kwas ɗin ku, a wane adadi da yadda ake sabunta su.

Magana ta uku ita ce sabis. Sabis ɗin ku shine ainihin tsarin ku, wanda ke karɓar wasu zirga-zirga sannan a tura shi zuwa ɗaya ko fiye da kwas ɗin da ya dace da sabis ɗin ku. Wato, yana ba ku damar faɗi cewa duk zirga-zirgar da ke shigowa zuwa irin wannan kuma irin wannan sabis ɗin tare da irin wannan suna dole ne a aika zuwa waɗannan takamaiman kwasfa. Kuma a lokaci guda yana samar muku da daidaita hanyoyin zirga-zirga. Wato, zaku iya ƙaddamar da kwas ɗin aikace-aikacen ku guda biyu, kuma duk zirga-zirgar da ke shigowa za su kasance daidai da daidaito tsakanin kwas ɗin da ke da alaƙa da wannan sabis ɗin.

Kuma manufa ta huɗu ta asali ita ce Ingress. Wannan sabis ne da ke gudana akan gungu na Kubernetes. Yana aiki azaman ma'aunin nauyi na waje wanda ke ɗaukar duk buƙatun. Yin amfani da Kubernetes API, Ingress na iya ƙayyade inda ya kamata a aika waɗannan buƙatun. Bugu da ƙari, yana yin wannan a hankali. Kuna iya cewa duk buƙatun wannan mai masaukin baki da irin wannan URL ɗin ana aika su zuwa wannan sabis ɗin. Kuma waɗannan buƙatun da ke zuwa ga wannan rundunar da kuma zuwa wani URL ana aika su zuwa wani sabis ɗin.

Mafi kyawun abin da ya fi dacewa daga ra'ayi na wanda ya haɓaka aikace-aikacen shine cewa za ku iya sarrafa shi duka da kanku. Ta hanyar saita saitin Ingress, zaku iya aika duk zirga-zirga zuwa irin wannan kuma irin API don raba kwantena da aka rubuta, misali, a cikin Go. Amma wannan zirga-zirgar, zuwa yanki ɗaya, amma zuwa wani URL daban, yakamata a aika zuwa kwantena da aka rubuta a cikin PHP, inda akwai dabaru masu yawa, amma ba su da sauri sosai.

Idan muka kwatanta duk waɗannan ra'ayoyin da Nomad, za mu iya cewa ra'ayoyi uku na farko duk suna tare Sabis. Kuma ra'ayi na ƙarshe ba ya nan a Nomad kanta. Mun yi amfani da ma'auni na waje: yana iya zama haproxy, nginx, nginx +, da sauransu. A cikin yanayin cube, ba kwa buƙatar gabatar da wannan ƙarin ra'ayi daban. Koyaya, idan kun kalli Ingress a ciki, ko dai nginx ne, haproxy, ko traefik, amma nau'in an gina shi cikin Kubernetes.

Duk ra'ayoyin da na bayyana, a zahiri, albarkatun da ke wanzu a cikin gungu na Kubernetes. Don kwatanta su a cikin kube, ana amfani da tsarin yaml, wanda ya fi iya karantawa da saninsa fiye da fayilolin HCL a yanayin Nomad. Amma a tsarin su suna kwatanta abu ɗaya a cikin yanayin, misali, kwas. Suna cewa - Ina so in tura irin waɗannan kwasfan fayiloli a wurin, tare da irin waɗannan hotuna, a cikin irin wannan da yawa.

Ana tura aikace-aikace zuwa VM, Nomad da Kubernetes

Bugu da ƙari, mun gane cewa ba ma son ƙirƙirar kowane ɗayan albarkatun da hannu: ƙaddamarwa, ayyuka, Ingress, da dai sauransu. Madadin haka, muna so mu bayyana kowane tsarin mu dangane da Kubernetes yayin turawa, ta yadda ba za mu sake ƙirƙirar duk abubuwan dogaron da ake buƙata da hannu cikin tsari mai kyau ba. An zaɓi Helm a matsayin tsarin da ya ba mu damar yin wannan.

Basic Concepts a cikin Helm

Helm da kunshin sarrafa don Kubernetes. Yayi kama da yadda masu sarrafa fakiti a cikin harsunan shirye-shirye ke aiki. Suna ba ku damar adana sabis ɗin da ya ƙunshi, alal misali, ƙaddamar da nginx, tura php-fpm, saita don Ingress, configmaps (wannan mahaluƙi ne wanda ke ba ku damar saita env da sauran sigogi don tsarin ku) ta hanyar so- ake kira jadawali. A lokaci guda Helm yana gudana a saman Kubernetes. Wato, wannan ba wani nau'i bane na tsarin da ke tsaye a gefe, amma kawai wani sabis ne da aka ƙaddamar a cikin kube. Kuna mu'amala da shi ta API ɗin sa ta umarnin na'urar bidiyo. Dacewar sa da kyawun sa shine koda helm ya karye ko kun cire shi daga gungu, ayyukanku ba za su ɓace ba, tunda helm yana aiki ne kawai don fara tsarin. Kubernetes da kanta ke da alhakin ayyuka da yanayin ayyuka.

Mun kuma gane haka samfuri, wanda a baya aka tilasta mana yin kanmu ta hanyar gabatar da jinja a cikin tsarin mu, yana daya daga cikin manyan abubuwan da ke tattare da helm. Duk abubuwan da kuka ƙirƙira don tsarin ku ana adana su a cikin helm ta sigar samfuri, ɗan kama da jinja, amma, a zahiri, ta yin amfani da ƙirar harshen Go, wanda aka rubuta helm, kamar Kubernetes.

Helm yana ƙara mana wasu ra'ayoyi kaɗan.

Chart - wannan shine bayanin sabis ɗin ku. A cikin wasu manajan fakitin za a kira shi kunshin, daure ko wani abu makamancin haka. Anan ana kiran shi ginshiƙi.

dabi'u su ne masu canji waɗanda kuke son amfani da su don gina saitunan ku daga samfuri.

release. Duk lokacin da sabis ɗin da aka tura ta amfani da helm yana karɓar ƙarin sigar sakin. Helm yana tunawa da abin da tsarin sabis ɗin yake a cikin sakin da ya gabata, saki kafin wannan, da sauransu. Don haka, idan kuna buƙatar jujjuyawar, kawai gudanar da umarnin dawo da kira, kuna nuna shi zuwa sigar sakin da ta gabata. Ko da madaidaicin daidaitawa a cikin ma'ajin ku ba ya samuwa a lokacin jujjuyawar, helm zai ci gaba da tunawa da abin da yake kuma zai mayar da tsarin ku zuwa yanayin da yake a cikin sakin da ya gabata.

A cikin yanayin lokacin da muke amfani da helm, saiti na yau da kullun don Kubernetes suma sun zama samfura waɗanda a ciki zai yiwu a yi amfani da masu canji, ayyuka, da amfani da maganganun sharadi. Ta wannan hanyar zaku iya tattara saitin sabis ɗin ku dangane da muhalli.

Ana tura aikace-aikace zuwa VM, Nomad da Kubernetes

A aikace, mun yanke shawarar yin abubuwa da ɗan bambanci fiye da yadda muka yi da Nomad. Idan a Nomad duka na'urorin turawa da n-variables waɗanda ake buƙata don tura sabis ɗinmu an adana su a ma'aji guda ɗaya, a nan mun yanke shawarar raba su zuwa ma'aji biyu daban-daban. Ma'ajiyar "aiwatar da" tana adana n-variables ne kawai da ake buƙata don turawa, kuma ma'ajiyar "helm" tana adana saiti ko sigogi.

Ana tura aikace-aikace zuwa VM, Nomad da Kubernetes

Menene wannan ya bamu?

Duk da cewa ba mu adana duk wani mahimman bayanai masu mahimmanci a cikin fayilolin sanyi da kansu. Misali, kalmomin shiga zuwa bayanan bayanai. An adana su azaman sirri a Kubernetes, amma duk da haka, har yanzu akwai wasu abubuwan da ba mu so mu ba kowa damar shiga. Sabili da haka, samun dama ga ma'ajin "aiwatar da" ya fi iyakancewa, kuma ma'ajin "helm" kawai ya ƙunshi bayanin sabis ɗin. Saboda wannan dalili, mutane da yawa za su iya isa gare shi lafiya.

Tun da ba mu da samarwa kawai ba, har ma da sauran wurare, godiya ga wannan rabuwa za mu iya sake amfani da taswirar kwalkwali don tura ayyuka ba kawai don samarwa ba, har ma, misali, zuwa yanayin QA. Ko da tura su cikin gida ta amfani da su Minikube - Wannan abu ne don gudanar da Kubernetes a cikin gida.

A cikin kowane wurin ajiya, mun bar rarrabuwa zuwa kundin adireshi daban don kowane sabis. Wato, a cikin kowane kundin adireshi akwai samfura masu alaƙa da taswirar da suka dace da kuma bayanin albarkatun da ake buƙatar turawa don ƙaddamar da tsarin mu. Mun bar envs kawai a cikin ma'ajin "aiwatar". A wannan yanayin, ba mu yi amfani da templating ta amfani da jinja ba, saboda helm kanta tana ba da samfuri daga cikin akwatin - wannan shine ɗayan manyan ayyukansa.

Mun bar rubutun turawa - deploy.sh, wanda ke sauƙaƙa da daidaita ƙaddamarwa don turawa ta amfani da helm. Don haka, ga duk wanda ke son turawa, aikin tura aikin yayi daidai da yadda ake yi lokacin turawa ta hanyar Nomad. Haka deploy.sh, sunan sabis ɗin ku, da kuma inda kuke son tura shi. Wannan yana sa helm ya fara farawa a ciki. Shi, bi da bi, yana tattara saiti daga samfuri, shigar da mahimman fayilolin ƙima a cikin su, sannan tura su, ƙaddamar da su cikin Kubernetes.

binciken

Sabis ɗin Kubernetes ya bayyana yana da rikitarwa fiye da Nomad.

Ana tura aikace-aikace zuwa VM, Nomad da Kubernetes

Anan zirga-zirgar ababen hawa suna zuwa Ingress. Wannan shine kawai mai sarrafa gaba, wanda ke ɗaukar duk buƙatun kuma daga baya aika su zuwa ayyukan da suka dace da bayanan buƙatun. Yana ƙayyade su bisa tsarin saiti waɗanda ke cikin ɓangaren bayanin aikace-aikacen ku a helm da waɗanda masu haɓakawa suka saita da kansu. Sabis ɗin yana aika buƙatun zuwa kwas ɗin sa, wato, takamaiman kwantena, daidaita zirga-zirgar shigowa tsakanin duk kwantena na wannan sabis ɗin. Kuma, ba shakka, kada mu manta cewa kada mu je ko'ina daga tsaro a matakin cibiyar sadarwa. Sabili da haka, yanki yana aiki a cikin gungu na Kubernetes, wanda ya dogara da alamar alama. Duk sabis ɗin suna da takamammen alamomi waɗanda haƙƙin samun damar sabis na wasu albarkatun waje/na ciki a ciki ko wajen gungu ke da alaƙa.

Yayin da muke yin sauye-sauye, mun ga cewa Kubernetes yana da dukkan ƙarfin Nomad, wanda muka yi amfani da shi a baya, kuma ya kara sababbin abubuwa da yawa. Ana iya fadada shi ta hanyar plugins, kuma a zahiri ta hanyar nau'ikan albarkatun al'ada. Wato, kuna da damar ba kawai don amfani da wani abu da ya zo tare da Kubernetes daga cikin akwatin ba, amma don ƙirƙirar albarkatun ku da sabis wanda zai karanta albarkatun ku. Wannan yana ba ku ƙarin zaɓuɓɓuka don faɗaɗa tsarin ku ba tare da sake shigar da Kubernetes ba kuma ba tare da buƙatar gyara ba.

Misalin irin wannan amfani shine Prometheus, wanda ke gudana cikin gungu na Kubernetes. Domin ya fara tattara awo daga wani sabis na musamman, muna buƙatar ƙara ƙarin nau'in albarkatu, abin da ake kira saka idanu sabis, zuwa bayanin sabis. Prometheus, saboda gaskiyar cewa yana iya karanta nau'in albarkatun al'ada lokacin da aka ƙaddamar da shi a cikin Kubernetes, ta atomatik yana fara tattara ma'auni daga sabon tsarin. Ya dace sosai.

Tushen farko da muka yi zuwa Kubernetes ya kasance a cikin Maris 2018. Kuma a wannan lokacin ba mu taɓa fuskantar wata matsala da shi ba. Yana aiki sosai a tsaye ba tare da manyan kwari ba. Bugu da kari, za mu iya kara fadada shi. A yau muna da isasshen ƙarfin da yake da shi, kuma muna son saurin ci gaban Kubernetes. A halin yanzu, fiye da kwantena 3000 suna cikin Kubernetes. Tarin ya mamaye Nodes da yawa. A lokaci guda, yana da serviceable, barga kuma mai iko sosai.

source: www.habr.com

Add a comment