Ṣiṣe awọn ohun elo si VM, Nomad ati Kubernetes

Bawo ni gbogbo eniyan! Orukọ mi ni Pavel Agaletsky. Mo ṣiṣẹ bi oludari ẹgbẹ kan ni ẹgbẹ kan ti o dagbasoke eto ifijiṣẹ Lamoda. Ni 2018, Mo sọrọ ni apejọ HighLoad ++, ati loni Emi yoo fẹ lati ṣafihan iwe-kikọ ti ijabọ mi.

Koko-ọrọ mi jẹ igbẹhin si iriri ile-iṣẹ wa ni sisọ awọn eto ati awọn iṣẹ si awọn agbegbe oriṣiriṣi. Bibẹrẹ lati awọn akoko iṣaaju wa, nigba ti a gbe gbogbo awọn ọna ṣiṣe sinu awọn olupin foju lasan, ti o pari pẹlu iyipada mimu lati Nomad si imuṣiṣẹ ni Kubernetes. Emi yoo sọ fun ọ idi ti a ṣe ati awọn iṣoro wo ni a ni ninu ilana naa.

Ṣiṣe awọn ohun elo si VM

Jẹ ki a bẹrẹ pẹlu otitọ pe ni ọdun 3 sẹhin gbogbo awọn eto ile-iṣẹ ati awọn iṣẹ ni a gbe lọ sori awọn olupin foju deede. Ni imọ-ẹrọ, o ti ṣeto ni ọna ti gbogbo koodu fun awọn eto wa ti wa ni ipamọ ati pejọ ni lilo awọn irinṣẹ apejọ adaṣe, ni lilo awọn jenkins. Lilo Ansible, o ti yiyi jade lati eto iṣakoso ẹya wa si awọn olupin foju. Pẹlupẹlu, eto kọọkan ti ile-iṣẹ wa ti gbe lọ si o kere ju awọn olupin 2: ọkan ninu wọn lori ori, keji lori iru. Awọn ọna ṣiṣe meji wọnyi jẹ aami kanna si ara wọn ni gbogbo awọn eto wọn, agbara, iṣeto ni, ati bẹbẹ lọ. Iyatọ laarin wọn nikan ni pe ori gba ijabọ olumulo, lakoko ti iru ko gba ijabọ olumulo.

Kí nìdí tí èyí fi ṣe?

Nigba ti a ba gbe awọn idasilẹ titun ti ohun elo wa lọ, a fẹ lati rii daju yiyijade lainidi, iyẹn ni, laisi awọn abajade akiyesi fun awọn olumulo. Eyi jẹ aṣeyọri nitori otitọ pe itusilẹ akojọpọ atẹle nipa lilo Ansible ti yiyi si iru. Nibe, awọn eniyan ti o ni ipa ninu imuṣiṣẹ le ṣayẹwo ati rii daju pe ohun gbogbo dara: gbogbo awọn metiriki, awọn apakan ati awọn ohun elo ṣiṣẹ; awọn pataki iwe afọwọkọ ti wa ni se igbekale. Nikan lẹhin ti won ni won ìdánilójú pé ohun gbogbo wà ok, awọn ijabọ ti a Switched. O bẹrẹ lilọ si olupin ti o jẹ iru tẹlẹ. Ati eyi ti o jẹ ori iṣaaju wa laisi ijabọ olumulo, lakoko ti o tun ni ẹya ti tẹlẹ ti ohun elo wa lori rẹ.

Nitorina o jẹ ailopin fun awọn olumulo. Nitori iyipada jẹ lẹsẹkẹsẹ, niwọn igba ti o jẹ iyipada iwọntunwọnsi nirọrun. O le ni irọrun yiyi pada si ẹya ti tẹlẹ nipa yiyipada iwọntunwọnsi nirọrun. A tun le rii daju pe ohun elo naa lagbara ti iṣelọpọ paapaa ṣaaju ki o to gba ijabọ olumulo, eyiti o rọrun pupọ.

Awọn anfani wo ni a ri ninu gbogbo eyi?

  1. Ni akọkọ, o ti to o kan ṣiṣẹ. Gbogbo eniyan loye bii iru ero imuṣiṣẹ bẹ ṣiṣẹ, nitori ọpọlọpọ eniyan ti gbe lọ si awọn olupin foju deede.
  2. Eyi ti to ni igbẹkẹle, niwon imọ-ẹrọ imuṣiṣẹ jẹ rọrun, idanwo nipasẹ ẹgbẹẹgbẹrun awọn ile-iṣẹ. Milionu ti awọn olupin ti wa ni ransogun ni ọna yi. O soro lati fọ nkankan.
  3. Ati nikẹhin a le gba atomiki imuṣiṣẹ. Awọn imuṣiṣẹ ti o waye nigbakanna fun awọn olumulo, laisi ipele akiyesi ti iyipada laarin ẹya atijọ ati tuntun.

Ṣugbọn a tun rii ọpọlọpọ awọn ailagbara ninu gbogbo eyi:

  1. Ni afikun si agbegbe iṣelọpọ, agbegbe idagbasoke, awọn agbegbe miiran wa. Fun apẹẹrẹ, qa ati igbejade. Ni akoko yẹn a ni ọpọlọpọ awọn olupin ati nipa awọn iṣẹ 60. Fun idi eyi o jẹ dandan fun kọọkan iṣẹ, bojuto awọn titun ti ikede fun o foju ẹrọ. Pẹlupẹlu, ti o ba fẹ ṣe imudojuiwọn awọn ile-ikawe tabi fi awọn igbẹkẹle tuntun sori ẹrọ, o nilo lati ṣe eyi ni gbogbo awọn agbegbe. O tun nilo lati muuṣiṣẹpọ akoko ti o yoo fi ẹya tuntun ti ohun elo rẹ ṣiṣẹ pẹlu akoko ti awọn devops ṣe awọn eto agbegbe to wulo. Ni idi eyi, o rọrun lati wọle si ipo kan nibiti ayika wa yoo jẹ iyatọ diẹ ni gbogbo awọn agbegbe ni ẹẹkan. Fun apẹẹrẹ, ni agbegbe QA kan yoo wa diẹ ninu awọn ẹya ti awọn ile-ikawe, ati ni agbegbe iṣelọpọ yoo jẹ awọn ti o yatọ, eyiti yoo ja si awọn iṣoro.
  2. Iṣoro imudojuiwọn awọn igbẹkẹle ohun elo rẹ. Ko da lori iwọ, ṣugbọn lori ẹgbẹ miiran. Eyun, lati awọn devops egbe ti o ntẹnumọ awọn olupin. O gbọdọ fun wọn ni iṣẹ-ṣiṣe ti o yẹ ati apejuwe ohun ti o fẹ ṣe.
  3. Ni akoko yẹn, a tun fẹ lati pin awọn monolith nla nla ti a ni si awọn iṣẹ kekere ti o yatọ, niwọn bi a ti loye pe ọpọlọpọ yoo wa. Ni akoko yẹn, a ti ni diẹ sii ju 100 ninu wọn. Fun iṣẹ tuntun kọọkan, o jẹ dandan lati ṣẹda ẹrọ foju tuntun ti o yatọ, eyiti o tun nilo lati ṣetọju ati gbejade. Ni afikun, iwọ ko nilo ọkọ ayọkẹlẹ kan, ṣugbọn o kere ju meji. Fi kun si gbogbo eyi ni agbegbe QA. Eyi fa awọn iṣoro ati mu ki o nira sii fun ọ lati kọ ati ṣiṣe awọn eto tuntun. eka, gbowolori ati gigun ilana.

Nitorinaa, a pinnu pe yoo rọrun diẹ sii lati gbe lati gbigbe awọn ẹrọ foju deede si gbigbe awọn ohun elo wa sinu apo eiyan docker. Ti o ba ni docker, o nilo eto kan ti o le ṣiṣẹ ohun elo ni iṣupọ kan, nitori o ko le kan gbe eiyan kan soke. Nigbagbogbo o fẹ lati tọju iye awọn apoti ti a gbe soke ki wọn gbe soke laifọwọyi. Fun idi eyi, a nilo lati yan eto iṣakoso kan.

A ro fun igba pipẹ nipa eyi ti a le mu. Otitọ ni pe ni akoko yẹn akopọ imuṣiṣẹ yii lori awọn olupin foju deede jẹ igba atijọ, nitori wọn ko ni awọn ẹya tuntun ti awọn ẹrọ ṣiṣe. Ni aaye kan, paapaa FreeBSD wa, eyiti ko rọrun pupọ lati ṣe atilẹyin. A loye pe a nilo lati jade lọ si docker ni yarayara bi o ti ṣee. Awọn devops wa wo iriri wọn ti o wa pẹlu awọn solusan oriṣiriṣi ati yan eto kan bii Nomad.

Yipada si Nomad

Nomad jẹ ọja ti HashiCorp. Wọn tun mọ fun awọn ojutu miiran wọn:

Ṣiṣe awọn ohun elo si VM, Nomad ati Kubernetes

"Consul" jẹ ọpa fun wiwa iṣẹ.

"Teraform" - eto fun iṣakoso awọn olupin ti o fun ọ laaye lati tunto wọn nipasẹ iṣeto ni, ohun ti a npe ni amayederun-bi-a-koodu.

"Asanfo" gba ọ laaye lati mu awọn ẹrọ foju ṣiṣẹ ni agbegbe tabi ni awọsanma nipasẹ awọn faili iṣeto ni pato.

Nomad ni akoko yẹn dabi ojutu ti o rọrun ti o rọrun ti o le yipada ni iyara si laisi iyipada gbogbo awọn amayederun. Ni afikun, o rọrun pupọ lati kọ ẹkọ. Ti o ni idi ti a yàn o bi awọn sisẹ eto fun wa eiyan.

Kini o nilo lati ran eto rẹ lọ si Nomad?

  1. Akọkọ ti gbogbo awọn ti o nilo docker aworan ohun elo rẹ. O nilo lati kọ ati gbe si ibi ipamọ aworan docker. Ninu ọran wa, eyi jẹ ohun-ọṣọ - eto ti o fun ọ laaye lati Titari ọpọlọpọ awọn ohun-ọṣọ ti awọn oriṣiriṣi oriṣiriṣi sinu rẹ. O le fipamọ awọn ile-ipamọ, awọn aworan docker, awọn akopọ PHP olupilẹṣẹ, awọn idii NPM, ati bẹbẹ lọ.
  2. Tun nilo iṣeto ni faili, eyi ti yoo sọ fun Nomad kini, nibo ati ninu iwọn wo ni o fẹ lati fi ranṣẹ.

Nigba ti a ba sọrọ nipa Nomad, o nlo ede HCL gẹgẹbi ọna kika faili alaye rẹ, eyiti o duro fun Ede Iṣeto ni HashiCorp. Eyi jẹ superset ti Yaml ti o fun ọ laaye lati ṣapejuwe iṣẹ rẹ ni awọn ofin Nomad.

Ṣiṣe awọn ohun elo si VM, Nomad ati Kubernetes

O gba ọ laaye lati sọ iye awọn apoti ti o fẹ lati ran lọ, lati eyiti awọn aworan lati ṣe awọn aye oriṣiriṣi si wọn lakoko imuṣiṣẹ. Nitorinaa, o jẹ ifunni faili yii si Nomad, ati pe o ṣe ifilọlẹ awọn apoti sinu iṣelọpọ ni ibamu si rẹ.

Ninu ọran wa, a rii pe kikọ kikọ awọn faili HCL ti o jọra fun iṣẹ kọọkan kii yoo rọrun pupọ, nitori ọpọlọpọ awọn iṣẹ lo wa ati nigba miiran o fẹ lati mu wọn dojuiwọn. O ṣẹlẹ pe iṣẹ kan ti gbejade kii ṣe ni apẹẹrẹ kan, ṣugbọn ni ọpọlọpọ awọn oriṣiriṣi. Fun apẹẹrẹ, ọkan ninu awọn ọna ṣiṣe ti a ni ni iṣelọpọ ni diẹ sii ju awọn iṣẹlẹ 100 ni iṣelọpọ. Wọn nṣiṣẹ lati awọn aworan kanna, ṣugbọn yatọ ni awọn eto iṣeto ati awọn faili iṣeto.

Nitorinaa, a pinnu pe yoo rọrun fun wa lati fipamọ gbogbo awọn faili atunto wa fun imuṣiṣẹ ni ibi-ipamọ kan ti o wọpọ. Ni ọna yii wọn han: wọn rọrun lati ṣetọju ati pe a le rii iru awọn ọna ṣiṣe ti a ni. Ti o ba jẹ dandan, o tun rọrun lati ṣe imudojuiwọn tabi yi nkan kan pada. Ṣafikun eto tuntun ko tun nira - o kan nilo lati ṣẹda faili iṣeto ni inu itọsọna tuntun. Ninu rẹ ni awọn faili wọnyi: service.hcl, eyiti o ni apejuwe iṣẹ wa, ati diẹ ninu awọn faili env ti o gba laaye iṣẹ yii gan-an, ni gbigbe ni iṣelọpọ, lati tunto.

Ṣiṣe awọn ohun elo si VM, Nomad ati Kubernetes

Bibẹẹkọ, diẹ ninu awọn eto wa ti gbejade ni iṣelọpọ kii ṣe ni ẹda kan, ṣugbọn ni pupọ ni ẹẹkan. Nitorinaa, a pinnu pe yoo rọrun fun wa lati tọju kii ṣe awọn atunto ni fọọmu mimọ wọn, ṣugbọn fọọmu apẹrẹ wọn. Ati pe a yan jinja 2. Ni ọna kika yii, a tọju mejeeji awọn atunto ti iṣẹ funrararẹ ati awọn faili env ti o nilo fun rẹ.

Ni afikun, a ti gbe sinu ibi ipamọ iwe afọwọkọ imuṣiṣẹ ti o wọpọ si gbogbo awọn iṣẹ akanṣe, eyiti o fun ọ laaye lati ṣe ifilọlẹ ati mu iṣẹ rẹ ṣiṣẹ sinu iṣelọpọ, sinu agbegbe ti o fẹ, sinu ibi-afẹde ti o fẹ. Ninu ọran naa nigba ti a yi atunto HCL wa sinu awoṣe, lẹhinna faili HCL, eyiti o jẹ atunto Nomad deede, ninu ọran yii bẹrẹ lati wo iyatọ diẹ.

Ṣiṣe awọn ohun elo si VM, Nomad ati Kubernetes

Iyẹn ni, a rọpo diẹ ninu awọn oniyipada ipo atunto pẹlu awọn oniyipada ti a fi sii ti o ya lati awọn faili env tabi awọn orisun miiran. Ni afikun, a ni aye lati gba awọn faili HCL ni agbara, iyẹn ni, a le lo kii ṣe awọn ifibọ oniyipada lasan nikan. Niwọn igba ti jinja ṣe atilẹyin awọn losiwajulosehin ati awọn ipo, o tun le ṣẹda awọn faili atunto nibẹ, eyiti o da lori ibiti o ti gbe awọn ohun elo rẹ gangan.

Fun apẹẹrẹ, o fẹ lati ran iṣẹ rẹ lọ si iṣaju iṣelọpọ ati iṣelọpọ. Jẹ ki a sọ pe ni iṣaaju-iṣelọpọ o ko fẹ lati ṣiṣe awọn iwe afọwọkọ cron, ṣugbọn o kan fẹ lati rii iṣẹ naa lori agbegbe lọtọ lati rii daju pe o n ṣiṣẹ. Fun ẹnikẹni ti o mu iṣẹ naa ṣiṣẹ, ilana naa dabi irọrun pupọ ati sihin. Gbogbo ohun ti o nilo lati ṣe ni ṣiṣe faili deploy.sh, pato iru iṣẹ ti o fẹ fi ranṣẹ ati si iru ibi-afẹde. Fun apẹẹrẹ, o fẹ lati fi eto kan ranṣẹ si Russia, Belarus tabi Kasakisitani. Lati ṣe eyi, nìkan yi ọkan ninu awọn paramita, ati awọn ti o yoo ni awọn ti o tọ iṣeto ni faili.

Nigbati iṣẹ Nomad ti wa ni ransogun tẹlẹ si iṣupọ rẹ, o dabi eyi.

Ṣiṣe awọn ohun elo si VM, Nomad ati Kubernetes

Ni akọkọ, o nilo diẹ ninu iru iwọntunwọnsi ni ita, eyiti yoo gba gbogbo ijabọ olumulo. Yoo ṣiṣẹ pọ pẹlu Consul ati rii lati ọdọ rẹ nibiti, lori iru ipade, ni kini adiresi IP iṣẹ kan pato wa ti o baamu si orukọ ìkápá kan pato. Awọn iṣẹ ni Consul wa lati Nomad funrararẹ. Niwọn bi iwọnyi jẹ awọn ọja lati ile-iṣẹ kanna, wọn ni ibatan pupọ si ara wọn. A le sọ pe Nomad lati inu apoti le forukọsilẹ gbogbo awọn iṣẹ ti a ṣe ifilọlẹ ninu rẹ inu Consul.

Ni kete ti iwọntunwọnsi fifuye iwaju-iwaju mọ iru iṣẹ wo ni lati fi ijabọ ranṣẹ si, o dari siwaju si apoti ti o yẹ tabi awọn apoti pupọ ti o baamu ohun elo rẹ. Nipa ti, o tun jẹ dandan lati ronu nipa aabo. Paapaa botilẹjẹpe gbogbo awọn iṣẹ nṣiṣẹ lori awọn ẹrọ foju kanna ni awọn apoti, eyi nigbagbogbo nilo idilọwọ iraye si ọfẹ lati eyikeyi iṣẹ si eyikeyi miiran. A ṣe aṣeyọri eyi nipasẹ ipin. Iṣẹ kọọkan ti ṣe ifilọlẹ ni nẹtiwọọki foju tirẹ, eyiti awọn ofin ipa-ọna ati awọn ofin fun gbigba/kiko iraye si awọn eto ati awọn iṣẹ miiran ti paṣẹ. Wọn le wa ni inu iṣupọ yii ati ni ita rẹ. Fun apẹẹrẹ, ti o ba fẹ ṣe idiwọ iṣẹ kan lati sopọ si aaye data kan pato, eyi le ṣee ṣe nipasẹ ipin ipele-nẹtiwọọki. Iyẹn ni, paapaa nipasẹ aṣiṣe, o ko le sopọ lairotẹlẹ lati agbegbe idanwo si ibi ipamọ data iṣelọpọ rẹ.

Elo ni idiyele iyipada wa ni awọn ofin ti awọn orisun eniyan?

Iyipada ti gbogbo ile-iṣẹ si Nomad gba to oṣu 5-6. A gbe lori ipilẹ iṣẹ-nipasẹ-iṣẹ, ṣugbọn ni iyara ti o yara. Ẹgbẹ kọọkan ni lati ṣẹda awọn apoti tiwọn fun awọn iṣẹ naa.

A ti gba iru ọna ti ẹgbẹ kọọkan jẹ iduro fun awọn aworan docker ti awọn eto wọn ni ominira. DevOps pese awọn amayederun gbogbogbo pataki fun imuṣiṣẹ, iyẹn ni, atilẹyin fun iṣupọ funrararẹ, atilẹyin fun eto CI, ati bẹbẹ lọ. Ati ni akoko yẹn, a ni diẹ sii ju awọn ọna ṣiṣe 60 lọ si Nomad, eyiti o to bii 2 ẹgbẹrun awọn apoti.

Devops jẹ iduro fun awọn amayederun gbogbogbo ti ohun gbogbo ti o ni ibatan si imuṣiṣẹ ati awọn olupin. Ati pe ẹgbẹ idagbasoke kọọkan, ni ọwọ, jẹ iduro fun imuse awọn apoti fun eto rẹ pato, nitori pe o jẹ ẹgbẹ ti o mọ ohun ti o nilo gbogbogbo ninu apoti kan pato.

Awọn idi fun kikọ Nomad silẹ

Awọn anfani wo ni a gba nipa yi pada si imuṣiṣẹ ni lilo Nomad ati docker, laarin awọn miiran?

  1. awa pese dogba awọn ipo fun gbogbo awọn ayika. Ni idagbasoke, agbegbe QA, iṣelọpọ iṣaaju, iṣelọpọ, awọn aworan eiyan kanna ni a lo, pẹlu awọn igbẹkẹle kanna. Nitorinaa, o fẹrẹ ko ni aye pe ohun ti yoo pari ni iṣelọpọ kii ṣe ohun ti o ti ni idanwo tẹlẹ ni agbegbe tabi ni agbegbe idanwo rẹ.
  2. A tun rii pe o to rọrun lati ṣafikun iṣẹ tuntun kan. Lati oju wiwo imuṣiṣẹ, eyikeyi awọn eto tuntun ti ṣe ifilọlẹ ni irọrun pupọ. Kan lọ si ibi ipamọ ti o tọju awọn atunto, ṣafikun atunto miiran fun eto rẹ nibẹ, ati pe o ti ṣeto. O le ran eto rẹ lọ si iṣelọpọ laisi igbiyanju afikun eyikeyi lati awọn devops.
  3. gbogbo iṣeto ni awọn faili ninu ọkan wọpọ ibi ipamọ ti jade lati wa labẹ awotẹlẹ. Ni akoko ti a ba gbe awọn eto wa ni lilo awọn olupin foju, a lo Ansible, ninu eyiti awọn atunto wa ni ibi ipamọ kanna. Sibẹsibẹ, fun julọ Difelopa yi je kan bit siwaju sii soro lati ṣiṣẹ pẹlu awọn. Nibi iwọn didun awọn atunto ati koodu ti o nilo lati ṣafikun lati fi iṣẹ naa ṣiṣẹ ti di kere pupọ. Pẹlupẹlu, o rọrun pupọ fun awọn devops lati ṣatunṣe tabi yi pada. Ni ọran ti awọn iyipada, fun apẹẹrẹ, si ẹya tuntun ti Nomad, wọn le mu ati ṣe imudojuiwọn gbogbo awọn faili iṣẹ ti o wa ni aaye kanna.

Ṣugbọn a tun pade ọpọlọpọ awọn alailanfani:

O wa ni jade wipe a ko le ṣaṣeyọri awọn imuṣiṣẹ ailopin ninu ọran ti Nomad. Nigbati o ba n yi awọn apoti jade labẹ awọn ipo oriṣiriṣi, o le tan lati nṣiṣẹ, ati pe Nomad ṣe akiyesi rẹ bi eiyan ti o ṣetan lati gba ijabọ. Eyi ṣẹlẹ ṣaaju ki ohun elo inu rẹ paapaa ni aye lati ṣe ifilọlẹ. Fun idi eyi, eto naa bẹrẹ lati gbe awọn aṣiṣe 500 jade fun igba diẹ, nitori awọn ijabọ bẹrẹ si lọ si apoti ti ko ti ṣetan lati gba.

A pade diẹ ninu awọn idun. Kokoro pataki julọ ni pe Nomad ko mu iṣupọ nla kan daradara ti o ba ni ọpọlọpọ awọn ọna ṣiṣe ati awọn apoti. Nigbati o ba fẹ mu ọkan ninu awọn olupin ti o wa ninu iṣupọ Nomad jade fun itọju, iṣeeṣe giga kan wa ti iṣupọ naa kii yoo ni irọrun pupọ ati pe yoo ṣubu yato si. Diẹ ninu awọn apoti le, fun apẹẹrẹ, ṣubu ati ki o ma dide - eyi yoo jẹ ọ ni iye pupọ nigbamii ti gbogbo awọn eto iṣelọpọ rẹ ba wa ni iṣupọ kan ti iṣakoso nipasẹ Nomad.

Torí náà, a pinnu láti ronú nípa ibi tó yẹ ká tẹ̀ lé. Ni akoko yẹn, a di diẹ sii mọ ohun ti a fẹ lati ṣaṣeyọri. Eyun: a fẹ igbẹkẹle, awọn iṣẹ diẹ diẹ sii ju Nomad pese, ati eto ti o dagba sii, iduroṣinṣin diẹ sii.

Ni iyi yii, yiyan wa ṣubu lori Kubernetes bi pẹpẹ ti o gbajumọ julọ fun ifilọlẹ awọn iṣupọ. Paapa fun pe iwọn ati nọmba ti awọn apoti wa tobi to. Fun iru awọn idi bẹẹ, Kubernetes dabi pe o jẹ eto ti o dara julọ ti a le wo.

Iyipada si Kubernetes

Emi yoo sọ fun ọ diẹ nipa awọn imọran ipilẹ ti Kubernetes ati bi wọn ṣe yatọ si Nomad.

Ṣiṣe awọn ohun elo si VM, Nomad ati Kubernetes

Ni akọkọ, imọran ipilẹ julọ ni Kubernetes jẹ ero ti podu. Podọ jẹ ẹgbẹ kan tabi diẹ ẹ sii awọn apoti ti o nṣiṣẹ papọ nigbagbogbo. Ati pe wọn nigbagbogbo ṣiṣẹ bi ẹnipe o muna lori ẹrọ foju kan. Wọn wa si ara wọn nipasẹ IP 127.0.0.1 lori awọn ebute oko oju omi oriṣiriṣi.

Jẹ ki a ro pe o ni ohun elo PHP kan ti o ni nginx ati php-fpm - ero alailẹgbẹ. O ṣeese julọ, iwọ yoo fẹ lati tọju mejeeji nginx ati awọn apoti php-fpm papọ ni gbogbo igba. Kubernetes gba ọ laaye lati ṣaṣeyọri eyi nipa ṣiṣe apejuwe wọn bi adarọ-ese kan ti o wọpọ. Eyi ni pato ohun ti a ko le gba pẹlu Nomad.

Awọn keji Erongba jẹ imuṣiṣẹ. Otitọ ni pe podu funrararẹ jẹ ohun ephemeral; o bẹrẹ ati sọnu. Ṣe o fẹ lati pa gbogbo awọn apoti iṣaaju rẹ ni akọkọ, lẹhinna ṣe ifilọlẹ awọn ẹya tuntun ni ẹẹkan, tabi ṣe o fẹ lati yi wọn jade ni diėdiė? Eyi ni ilana ti imọran imuṣiṣẹ jẹ lodidi fun. O ṣe apejuwe bi o ṣe mu awọn adarọ-ese rẹ ṣiṣẹ, ni iwọn wo ati bii o ṣe le ṣe imudojuiwọn wọn.

Awọn kẹta Erongba jẹ iṣẹ. Iṣẹ rẹ jẹ eto rẹ gangan, eyiti o gba diẹ ninu awọn ijabọ ati lẹhinna dari siwaju si ọkan tabi diẹ ẹ sii awọn adarọ-ese ti o baamu si iṣẹ rẹ. Iyẹn ni, o gba ọ laaye lati sọ pe gbogbo awọn ijabọ ti nwọle si iru ati iru iṣẹ kan pẹlu iru ati iru orukọ gbọdọ wa ni fifiranṣẹ si awọn adarọ-ese kan pato. Ati ni akoko kanna o pese fun ọ pẹlu iwọntunwọnsi ijabọ. Iyẹn ni, o le ṣe ifilọlẹ awọn podu meji ti ohun elo rẹ, ati gbogbo awọn ijabọ ti nwọle yoo jẹ iwọntunwọnsi boṣeyẹ laarin awọn adarọ-ese ti o ni ibatan si iṣẹ yii.

Ati awọn kẹrin ipilẹ Erongba jẹ Ingress. Eyi jẹ iṣẹ kan ti o nṣiṣẹ lori iṣupọ Kubernetes kan. O ṣe bi iwọntunwọnsi fifuye ita ti o gba gbogbo awọn ibeere. Lilo Kubernetes API, Ingress le pinnu ibi ti o yẹ ki o firanṣẹ awọn ibeere wọnyi. Pẹlupẹlu, o ṣe eyi ni irọrun pupọ. O le sọ pe gbogbo awọn ibeere si agbalejo yii ati iru URL bẹẹ ni a fi ranṣẹ si iṣẹ yii. Ati pe awọn ibeere wọnyi ti o nbọ si agbalejo yii ati URL miiran ni a fi ranṣẹ si iṣẹ miiran.

Ohun ti o tutu julọ lati oju wiwo ti ẹnikan ti o dagbasoke ohun elo ni pe o ni anfani lati ṣakoso gbogbo rẹ funrararẹ. Nipa siseto atunto Ingress, o le firanṣẹ gbogbo ijabọ ti n bọ si iru ati iru API lati ya awọn apoti ti a kọ, fun apẹẹrẹ, ni Go. Ṣugbọn ijabọ yii, ti o nbọ si agbegbe kanna, ṣugbọn si URL ti o yatọ, o yẹ ki o firanṣẹ si awọn apoti ti a kọ sinu PHP, nibiti o wa ni imọran pupọ, ṣugbọn wọn ko yara pupọ.

Ti a ba ṣe afiwe gbogbo awọn imọran wọnyi pẹlu Nomad, a le sọ pe awọn imọran mẹta akọkọ ni gbogbo wọn papọ Iṣẹ. Ati imọran ti o kẹhin ko si ni Nomad funrararẹ. A lo iwọntunwọnsi ita bi o: o le jẹ haproxy, nginx, nginx +, ati bẹbẹ lọ. Ninu ọran ti cube, iwọ ko nilo lati ṣafihan imọran afikun yii lọtọ. Sibẹsibẹ, ti o ba wo Ingress ni inu, o jẹ boya nginx, haproxy, tabi traefik, ṣugbọn too ti a ṣe sinu Kubernetes.

Gbogbo awọn imọran ti Mo ṣapejuwe jẹ, ni otitọ, awọn orisun ti o wa laarin iṣupọ Kubernetes kan. Lati ṣe apejuwe wọn ni cube, ọna kika yaml ti lo, eyiti o jẹ kika diẹ sii ati faramọ ju awọn faili HCL ni ọran ti Nomad. Ṣugbọn ni igbekale wọn ṣe apejuwe ohun kanna ni ọran ti, fun apẹẹrẹ, pod. Wọn sọ - Mo fẹ lati gbe iru ati iru awọn podu nibẹ, pẹlu iru ati iru awọn aworan, ni iru ati iru awọn iwọn.

Ṣiṣe awọn ohun elo si VM, Nomad ati Kubernetes

Ni afikun, a ṣe akiyesi pe a ko fẹ ṣẹda orisun kọọkan kọọkan nipasẹ ọwọ: imuṣiṣẹ, awọn iṣẹ, Ingress, bbl Dipo, a fẹ lati ṣe apejuwe ọkọọkan awọn eto wa ni awọn ofin ti Kubernetes lakoko imuṣiṣẹ, nitorinaa a ko ni lati tun ṣe gbogbo awọn igbẹkẹle awọn orisun pataki ni ilana to tọ. Helm ti yan bi eto ti o gba wa laaye lati ṣe eyi.

Ipilẹ agbekale ni Helm

Helm ni oluṣakoso package fun Kubernetes. O jọra pupọ si bii awọn alakoso package ni awọn ede siseto ṣe n ṣiṣẹ. Wọn gba ọ laaye lati tọju iṣẹ kan ti o ni, fun apẹẹrẹ, nginx imuṣiṣẹ, php-fpm imuṣiṣẹ, atunto fun Ingress, configmaps (eyi jẹ nkan ti o fun ọ laaye lati ṣeto env ati awọn aye miiran fun eto rẹ) ni irisi so- ti a npe ni shatti. Ni akoko kanna Helm nṣiṣẹ lori oke Kubernetes. Iyẹn ni, eyi kii ṣe iru eto kan ti o duro lẹgbẹẹ, ṣugbọn o kan iṣẹ miiran ti a ṣe ifilọlẹ inu cube naa. O ṣe ajọṣepọ pẹlu rẹ nipasẹ API rẹ nipasẹ aṣẹ console kan. Irọrun ati ẹwa rẹ ni pe paapaa ti Helm ba fọ tabi ti o yọkuro kuro ninu iṣupọ, awọn iṣẹ rẹ kii yoo parẹ, nitori Helm pataki yoo ṣiṣẹ nikan lati bẹrẹ eto naa. Kubernetes funrararẹ jẹ iduro fun iṣẹ ati ipo awọn iṣẹ.

A tun mọ pe awoṣe, eyiti a ti fi agbara mu wa tẹlẹ lati ṣe ara wa nipa sisọ jinja sinu awọn atunto wa, jẹ ọkan ninu awọn ẹya akọkọ ti Helm. Gbogbo awọn atunto ti o ṣẹda fun awọn ọna ṣiṣe rẹ ti wa ni ipamọ ni irisi awọn awoṣe, diẹ ti o jọra si jinja, ṣugbọn, ni otitọ, lilo awoṣe ti ede Go, ninu eyiti a ti kọ Helm, bii Kubernetes.

Helm ṣe afikun awọn imọran diẹ sii fun wa.

apẹrẹ - Eyi jẹ apejuwe iṣẹ rẹ. Ninu awọn alakoso package miiran yoo pe ni package, lapapo tabi nkan ti o jọra. Nibi ti a npe ni chart.

iye jẹ awọn oniyipada ti o fẹ lati lo lati kọ awọn atunto rẹ lati awọn awoṣe.

Tu. Nigbakugba iṣẹ kan ti o nlo ni lilo Helm gba ẹya afikun ti itusilẹ. Helm ranti kini atunto iṣẹ wa ninu itusilẹ iṣaaju, itusilẹ ṣaaju iyẹn, ati bẹbẹ lọ. Nitorinaa, ti o ba nilo lati yi pada, kan ṣiṣẹ pipaṣẹ ipe pada Helm, tọka si ẹya itusilẹ ti tẹlẹ. Paapaa ti iṣeto ti o baamu ninu ibi ipamọ rẹ ko ba si ni akoko yiyi pada, Helm yoo tun ranti ohun ti o jẹ ati pe yoo yi eto rẹ pada si ipo ti o wa ninu idasilẹ iṣaaju.

Ninu ọran nigba ti a ba lo Helm, awọn atunto deede fun Kubernetes tun yipada si awọn awoṣe ninu eyiti o ṣee ṣe lati lo awọn oniyipada, awọn iṣẹ, ati lo awọn alaye ipo. Ni ọna yii o le gba atunto iṣẹ rẹ da lori agbegbe.

Ṣiṣe awọn ohun elo si VM, Nomad ati Kubernetes

Ni iṣe, a pinnu lati ṣe awọn nkan diẹ yatọ ju ti a ṣe pẹlu Nomad. Ti o ba jẹ ni Nomad mejeeji awọn atunto imuṣiṣẹ ati awọn n-variables ti o nilo lati fi iṣẹ wa ṣiṣẹ ni a fipamọ sinu ibi ipamọ kan, nibi a pinnu lati pin wọn si awọn ibi ipamọ lọtọ meji. Ibi-ipamọ “fifiranṣẹ” awọn ile itaja n-oniyipada nikan ti o nilo fun imuṣiṣẹ, ati ibi-ipamọ “helm” n tọju awọn atunto tabi awọn shatti.

Ṣiṣe awọn ohun elo si VM, Nomad ati Kubernetes

Kí ni èyí fún wa?

Bíótilẹ o daju wipe a ko tọjú eyikeyi gan kókó data ninu awọn iṣeto ni awọn faili ara wọn. Fun apẹẹrẹ, awọn ọrọigbaniwọle si awọn database. Wọn ti wa ni ipamọ bi awọn aṣiri ni Kubernetes, ṣugbọn sibẹsibẹ, awọn ohun kan tun wa nibẹ ti a ko fẹ lati fun gbogbo eniyan ni iwọle si. Nitorinaa, iraye si ibi ipamọ “fifiranṣẹ” jẹ opin diẹ sii, ati ibi ipamọ “helm” ni irọrun ni apejuwe ti iṣẹ naa. Fun idi eyi, o le wọle lailewu nipasẹ ọpọlọpọ awọn eniyan.

Niwọn igba ti a ko ni iṣelọpọ nikan, ṣugbọn tun awọn agbegbe miiran, o ṣeun si ipinya yii a le tun lo awọn shatti helm wa lati fi awọn iṣẹ ranṣẹ kii ṣe si iṣelọpọ nikan, ṣugbọn tun, fun apẹẹrẹ, si agbegbe QA kan. Paapaa lati ran wọn si agbegbe ni lilo Minikube - Eyi jẹ ohun kan fun ṣiṣe Kubernetes ni agbegbe.

Ninu ibi ipamọ kọọkan, a fi ipin kan silẹ si awọn ilana ti o yatọ fun iṣẹ kọọkan. Iyẹn ni, inu itọsọna kọọkan wa awọn awoṣe ti o ni ibatan si chart ti o baamu ati ti n ṣalaye awọn orisun ti o nilo lati gbe lọ lati ṣe ifilọlẹ eto wa. A fi awọn envs nikan silẹ ni ibi ipamọ “fifiranṣẹ”. Ni idi eyi, a ko lo templating nipa lilo jinja, nitori Helm ara pese templating jade ninu apoti - eyi jẹ ọkan ninu awọn oniwe-akọkọ awọn iṣẹ.

A fi iwe afọwọkọ imuṣiṣẹ silẹ - deploy.sh, eyiti o rọrun ati ṣe idiwọn ifilọlẹ fun imuṣiṣẹ ni lilo Helm. Nitorinaa, fun ẹnikẹni ti o fẹ lati ran lọ, wiwo imuṣiṣẹ n wo deede kanna bi o ti ṣe nigba gbigbe lọ nipasẹ Nomad. Kanna deploy.sh, orukọ iṣẹ rẹ, ati ibiti o fẹ gbe lọ. Eyi jẹ ki Helm bẹrẹ ni inu. O, ni ọna, gba awọn atunto lati awọn awoṣe, fi awọn faili iye pataki sinu wọn, lẹhinna gbe wọn lọ, ifilọlẹ wọn sinu Kubernetes.

awari

Iṣẹ Kubernetes han lati jẹ eka sii ju Nomad lọ.

Ṣiṣe awọn ohun elo si VM, Nomad ati Kubernetes

Nibi ijabọ ti njade wa si Ingress. Eyi jẹ oludari iwaju nikan, eyiti o gba gbogbo awọn ibeere ati lẹhinna firanṣẹ wọn si awọn iṣẹ ti o baamu data ibeere naa. O ṣe ipinnu wọn da lori awọn atunto ti o jẹ apakan ti apejuwe ohun elo rẹ ni Helm ati eyiti awọn olupilẹṣẹ ṣeto lori ara wọn. Iṣẹ naa nfi awọn ibeere ranṣẹ si awọn adarọ-ese rẹ, iyẹn ni, awọn apoti kan pato, iwọntunwọnsi ijabọ ti nwọle laarin gbogbo awọn apoti ti o jẹ ti iṣẹ yii. Ati pe, dajudaju, a ko gbọdọ gbagbe pe a ko gbọdọ lọ nibikibi lati aabo ni ipele nẹtiwọki. Nitorinaa, ipin ṣiṣẹ ni iṣupọ Kubernetes, eyiti o da lori fifi aami si. Gbogbo awọn iṣẹ ni awọn afi si eyiti awọn ẹtọ iraye si awọn iṣẹ ita si awọn orisun ita/inu kan ninu tabi ita iṣupọ naa ni nkan ṣe.

Bi a ṣe ṣe iyipada, a rii pe Kubernetes ni gbogbo awọn agbara ti Nomad, eyiti a ti lo tẹlẹ, ati pe o tun ṣafikun ọpọlọpọ awọn nkan tuntun. O le ṣe afikun nipasẹ awọn afikun, ati ni otitọ nipasẹ awọn iru orisun aṣa. Iyẹn ni, o ni aye kii ṣe lati lo nkan ti o wa pẹlu Kubernetes jade kuro ninu apoti, ṣugbọn lati ṣẹda awọn orisun ati iṣẹ tirẹ ti yoo ka awọn orisun rẹ. Eyi yoo fun ọ ni awọn aṣayan afikun lati faagun eto rẹ laisi nini lati tun fi Kubernetes sori ẹrọ ati laisi awọn iyipada to nilo.

Apeere ti iru lilo ni Prometheus, eyiti o ṣiṣẹ ninu iṣupọ Kubernetes wa. Lati le bẹrẹ gbigba awọn metiriki lati iṣẹ kan pato, a nilo lati ṣafikun iru orisun afikun kan, eyiti a pe ni atẹle iṣẹ, si apejuwe iṣẹ naa. Prometheus, nitori otitọ pe o le ka iru orisun orisun aṣa nigba ti a ṣe ifilọlẹ ni Kubernetes, bẹrẹ laifọwọyi gbigba awọn metiriki lati inu eto tuntun. O rọrun pupọ.

Ifiranṣẹ akọkọ ti a ṣe si Kubernetes wa ni Oṣu Kẹta ọdun 2018. Ati ni akoko yii a ko ni iriri awọn iṣoro eyikeyi pẹlu rẹ. O ṣiṣẹ ni iduroṣinṣin laisi awọn idun pataki. Ni afikun, a le faagun rẹ siwaju sii. Loni a ni to ti awọn agbara ti o ni, ati awọn ti a gan fẹ awọn Pace ti idagbasoke ti Kubernetes. Lọwọlọwọ, diẹ sii ju awọn apoti 3000 wa ni Kubernetes. Iṣupọ naa gba ọpọlọpọ Awọn apa. Ni akoko kanna, o jẹ iṣẹ, iduroṣinṣin ati iṣakoso pupọ.

orisun: www.habr.com

Fi ọrọìwòye kun