Deplwaye aplikasyon pou VM, Nomad ak Kubernetes

Bonjou tout moun! Non mwen se Pavel Agaletsky. Mwen travay kòm yon ekip dirijan nan yon ekip ki devlope sistèm livrezon Lamoda. An 2018, mwen te pale nan konferans HighLoad++, e jodi a mwen ta renmen prezante yon transkripsyon rapò mwen an.

Sijè mwen an dedye a eksperyans konpayi nou an nan deplwaye sistèm ak sèvis nan diferan anviwònman. Kòmanse nan tan pre-istorik nou yo, lè nou te deplwaye tout sistèm nan òdinè sèvè vityèl, fini ak tranzisyon gradyèl soti nan Nomad nan deplwaman nan Kubernetes. Mwen pral di w poukisa nou te fè li ak ki pwoblèm nou te genyen nan pwosesis la.

Deplwaye aplikasyon pou VM

Ann kòmanse ak lefèt ke 3 zan de sa tout sistèm ak sèvis konpayi an te deplwaye sou sèvè regilye vityèl. Teknikman, li te òganize nan yon fason ke tout kòd la pou sistèm nou yo te estoke ak reyini lè l sèvi avèk zouti asanble otomatik, lè l sèvi avèk jenkins. Sèvi ak Ansible, li te woule soti nan sistèm kontwòl vèsyon nou an nan sèvè vityèl. Anplis, chak sistèm ke konpayi nou an te deplwaye nan omwen 2 serveurs: youn nan yo sou tèt la, dezyèm lan sou ke la. De sistèm sa yo te absoliman idantik youn ak lòt nan tout anviwònman yo, pouvwa, konfigirasyon, elatriye. Sèl diferans ki genyen ant yo te ke tèt te resevwa trafik itilizatè, pandan ke ke pa janm resevwa trafik itilizatè.

Poukisa sa te fèt?

Lè nou te deplwaye nouvo degaje aplikasyon nou an, nou te vle asire yon lansman san pwoblèm, se sa ki, san konsekans aparan pou itilizatè yo. Sa a te reyalize akòz lefèt ke pwochen konpile lage lè l sèvi avèk Ansible te woule soti nan ke. La, moun ki te enplike nan deplwaman an te kapab tcheke e asire w ke tout bagay te byen: tout mezi, seksyon ak aplikasyon yo t ap travay; scripts ki nesesè yo lanse. Se sèlman apre yo te konvenki ke tout bagay te ok, trafik la te chanje. Li te kòmanse ale nan sèvè a ki te deja ke. Ak youn nan ki te deja tèt la rete san trafik itilizatè, pandan y ap toujou gen vèsyon an anvan nan aplikasyon nou an sou li.

Se konsa, li te san pwoblèm pou itilizatè yo. Paske chanjman an se enstantane, paske li se tou senpleman chanje balans lan. Ou ka trè fasil retounen nan vèsyon anvan an pa tou senpleman chanje balans lan tounen. Nou te kapab verifye tou ke aplikasyon an te kapab pwodiksyon menm anvan li te resevwa trafik itilizatè, ki te byen pratik.

Ki avantaj nou te wè nan tout bagay sa yo?

  1. Premye a tout, li ase li jis travay. Tout moun konprann ki jan yon konplo deplwaman sa yo ap travay, paske pifò moun te janm deplwaye sou sèvè vityèl regilye yo.
  2. Sa a se ase fiable, depi teknoloji deplwaman an se senp, teste pa dè milye de konpayi yo. Dè milyon de serveurs yo deplwaye fason sa a. Li difisil pou kraze yon bagay.
  3. Epi finalman nou te kapab jwenn deplwaman atomik. Deplwaman ki fèt an menm tan pou itilizatè yo, san yon etap aparan pou chanje ant ansyen vèsyon an ak nouvo vèsyon an.

Men, nou te wè tou plizyè enpèfeksyon nan tout bagay sa yo:

  1. Anplis anviwònman pwodiksyon an, anviwònman devlopman, gen lòt anviwònman. Pou egzanp, qa ak prepwodiksyon. Lè sa a, nou te gen anpil serveurs ak anviwon 60 sèvis. Pou rezon sa a li te nesesè pou chak sèvis, kenbe dènye vèsyon an pou li machin vityèl. Anplis, si ou vle mete ajou bibliyotèk oswa enstale nouvo depandans, ou bezwen fè sa nan tout anviwònman. Ou te bezwen tou senkronize tan an lè ou pral deplwaye pwochen nouvo vèsyon aplikasyon w lan ak tan an lè devops fè paramèt anviwònman ki nesesè yo. Nan ka sa a, li fasil pou antre nan yon sitiyasyon kote anviwònman nou an pral yon ti jan diferan nan tout anviwònman an menm tan. Pou egzanp, nan yon anviwònman QA pral gen kèk vèsyon nan bibliyotèk, ak nan yon anviwònman pwodiksyon pral gen diferan, ki pral mennen nan pwoblèm.
  2. Difikilte pou mete ajou depandans aplikasyon w lan. Sa pa depann de ou, men de lòt ekip la. Savwa, soti nan ekip la devops ki kenbe serveurs yo. Ou dwe ba yo yon travay ki apwopriye ak yon deskripsyon sou sa ou vle fè.
  3. Lè sa a, nou te vle tou divize gwo gwo monolit nou te genyen yo an ti sèvis separe, depi nou te konprann ke ta gen plis ak plis nan yo. Nan tan sa a, nou te deja gen plis pase 100 nan yo. Pou chak nouvo sèvis, li te nesesè yo kreye yon nouvo machin vityèl separe, ki te bezwen tou yo dwe konsève ak deplwaye. Anplis de sa, ou pa bezwen yon machin, men omwen de. Te ajoute nan tout sa a se anviwònman an QA. Sa lakòz pwoblèm epi fè li pi difisil pou ou bati ak kouri nouvo sistèm. pwosesis konplèks, chè ak long.

Se poutèt sa, nou te deside ke li ta pi pratik pou nou deplase soti nan deplwaye machin vityèl regilye yo deplwaye aplikasyon nou yo nan yon veso docker. Si ou gen Docker, ou bezwen yon sistèm ki ka kouri aplikasyon an nan yon gwoup, paske ou pa ka jis monte yon veso. Anjeneral ou vle kenbe tras nan konbyen resipyan yo leve pou yo leve otomatikman. Pou rezon sa a, nou te bezwen chwazi yon sistèm kontwòl.

Nou te panse pou yon tan long sou ki youn nou ta ka pran. Reyalite a se ke nan moman sa a chemine deplwaman sa a sou òdinè serveurs vityèl te yon ti jan demode, depi yo pa t 'gen vèsyon yo dènye nan sistèm opere. Nan kèk pwen, te gen menm FreeBSD, ki pa t trè pratik pou sipòte. Nou te konprann ke nou te bezwen imigre nan Docker pi vit posib. Devops nou yo te gade eksperyans ki egziste deja yo ak solisyon diferan epi yo te chwazi yon sistèm tankou Nomad.

Chanje nan Nomad

Nomad se yon pwodwi HashiCorp. Yo konnen tou pou lòt solisyon yo:

Deplwaye aplikasyon pou VM, Nomad ak Kubernetes

"Konsil" se yon zouti pou dekouvèt sèvis.

"Terraform" - yon sistèm pou jere sèvè ki pèmèt ou konfigirasyon yo atravè konfigirasyon, sa yo rele infrastructure-as-a-code.

"vagabon" pèmèt ou deplwaye machin vityèl lokalman oswa nan nwaj la atravè dosye konfigirasyon espesifik.

Nomad nan tan sa a te sanble tankou yon solisyon jistis senp ki ta ka byen vit chanje a san yo pa chanje tout enfrastrikti a. Anplis de sa, li se byen fasil yo aprann. Se poutèt sa nou te chwazi li kòm sistèm filtraj pou veso nou an.

Kisa ou bezwen pou deplwaye sistèm ou a nan Nomad?

  1. Premye a tout ou bezwen docker imaj aplikasyon w lan. Ou bezwen bati li epi mete l nan depo imaj Docker la. Nan ka nou an, sa a se yon artifactory - yon sistèm ki pèmèt ou pouse divès kalite zafè nan diferan kalite nan li. Li ka estoke achiv, imaj docker, pakè PHP konpozitè, pakè NPM, ak sou sa.
  2. Li nesesè tou dosye konfigirasyon, ki pral di Nomad ki sa, ki kote ak nan ki kantite ou vle deplwaye.

Lè nou pale sou Nomad, li sèvi ak lang HCL kòm fòma fichye enfòmasyon li yo, ki vle di Lang Konfigirasyon HashiCorp. Sa a se yon superset nan Yaml ki pèmèt ou dekri sèvis ou an tèm Nomad.

Deplwaye aplikasyon pou VM, Nomad ak Kubernetes

Li pèmèt ou di konbyen resipyan ou vle deplwaye, ki soti nan ki imaj yo pase divès paramèt yo pandan deplwaman. Kidonk, ou bay Nomad fichye sa a, epi li lanse kontenè nan pwodiksyon dapre li.

Nan ka nou an, nou reyalize ke tou senpleman ekri fichye HCL absoliman idantik pou chak sèvis pa ta trè pratik, paske gen yon anpil nan sèvis epi pafwa ou vle mete ajou yo. Sa rive ke se yon sèl sèvis deplwaye pa nan yon sèl egzanp, men nan yon varyete de diferan. Pa egzanp, youn nan sistèm ke nou genyen nan pwodiksyon gen plis pase 100 egzanp nan pwodiksyon an. Yo kouri soti nan imaj yo menm, men diferan nan anviwònman konfigirasyon ak dosye konfigirasyon.

Se poutèt sa, nou te deside ke li ta bon pou nou estoke tout fichye konfigirasyon nou yo pou deplwaman nan yon sèl depo komen. Nan fason sa a yo te vizib: yo te fasil pou kenbe epi nou te kapab wè ki sistèm nou te genyen. Si sa nesesè, li fasil tou pou mete ajou oswa chanje yon bagay. Ajoute yon nouvo sistèm tou pa difisil - ou jis bezwen kreye yon fichye konfigirasyon andedan nouvo anyè a. Anndan li se dosye sa yo: service.hcl, ki gen yon deskripsyon sèvis nou an, ak kèk dosye env ki pèmèt sèvis sa a menm, ke yo te deplwaye nan pwodiksyon, yo dwe configuré.

Deplwaye aplikasyon pou VM, Nomad ak Kubernetes

Sepandan, kèk nan sistèm nou yo deplwaye nan pwodiksyon pa nan yon sèl kopi, men nan plizyè nan yon fwa. Se poutèt sa, nou te deside ke li ta bon pou nou estoke pa konfigirasyon yo nan fòm pi yo, men fòm modèl yo. E nou te chwazi jinja 2. Nan fòma sa a, nou estoke tou de konfigirasyon sèvis la li menm ak dosye env ki nesesè pou li.

Anplis de sa, nou te mete nan repozitwa a yon script deplwaman komen nan tout pwojè, ki pèmèt ou lanse ak deplwaye sèvis ou a nan pwodiksyon, nan anviwònman an vle, nan sib la vle. Nan ka a lè nou te vire konfigirasyon HCL nou an nan yon modèl, Lè sa a, dosye a HCL, ki anvan te yon konfigirasyon Nomad regilye, nan ka sa a te kòmanse gade yon ti kras diferan.

Deplwaye aplikasyon pou VM, Nomad ak Kubernetes

Sa vle di, nou ranplase kèk varyab kote konfigirasyon yo ak varyab ki mete yo ki pran nan dosye env oswa lòt sous. Anplis de sa, nou te gen opòtinite pou kolekte dosye HCL dinamik, se sa ki, nou ka itilize pa sèlman ensèsyon varyab òdinè. Depi jinja sipòte bouk ak kondisyon, ou ka tou kreye fichye konfigirasyon la, ki chanje depann sou kote egzakteman ou deplwaye aplikasyon ou yo.

Pou egzanp, ou vle deplwaye sèvis ou nan pre-pwodiksyon ak pwodiksyon. Ann di ke nan pre-pwodiksyon ou pa vle kouri scripts cron, men jis vle wè sèvis la sou yon domèn separe asire w ke li fonksyone. Pou nenpòt moun ki deplwaye sèvis la, pwosesis la sanble trè senp ak transparan. Tout sa ou bezwen fè se egzekite fichye a deploy.sh, presize ki sèvis ou vle deplwaye ak nan ki sib. Pou egzanp, ou vle deplwaye yon sistèm sèten nan Larisi, Byelorisi oswa Kazakhstan. Pou fè sa, tou senpleman chanje youn nan paramèt yo, epi w ap gen dosye konfigirasyon ki kòrèk la.

Lè sèvis Nomad la deja deplwaye nan gwoup ou a, li sanble sa a.

Deplwaye aplikasyon pou VM, Nomad ak Kubernetes

Premyèman, ou bezwen kèk kalite balans deyò, ki pral resevwa tout trafik itilizatè. Li pral travay ansanm ak Konsil epi chèche konnen ki kote, sou ki ne, nan ki adrès IP yon sèvis espesifik sitiye ki koresponn ak yon non domèn patikilye. Sèvis nan Konsil soti nan Nomad li menm. Depi sa yo se pwodwi ki soti nan menm konpayi an, yo byen ki gen rapò youn ak lòt. Nou ka di ke Nomad soti nan bwat la ka anrejistre tout sèvis lanse ladan l anndan Konsil.

Yon fwa balans chaj devan ou a konnen nan ki sèvis pou voye trafik la, li voye li nan veso ki apwopriye a oswa plizyè resipyan ki koresponn ak aplikasyon w lan. Natirèlman, li nesesè tou pou reflechi sou sekirite. Menm si tout sèvis yo kouri sou menm machin vityèl nan resipyan, anjeneral sa mande pou anpeche aksè gratis nan nenpòt sèvis nan nenpòt lòt. Nou reyalize sa atravè segmentasyon. Chak sèvis te lanse nan pwòp rezo vityèl li, sou ki règ routage ak règ pou pèmèt / refize aksè nan lòt sistèm ak sèvis yo te preskri. Yo ta ka lokalize tou de andedan grap sa a ak deyò li. Pou egzanp, si ou vle anpeche yon sèvis konekte ak yon baz done espesifik, sa ka fè atravè segmentasyon rezo-nivo. Sa vle di, menm pa erè, ou pa ka konekte aksidantèlman soti nan anviwònman tès la ak baz done pwodiksyon ou a.

Konbyen tranzisyon an te koute nou an tèm de resous imen?

Tranzisyon an nan tout konpayi an nan Nomad te pran apeprè 5-6 mwa. Nou te deplase sou yon baz sèvis pa sèvis, men nan yon vitès jistis rapid. Chak ekip te dwe kreye kontenè pa yo pou sèvis yo.

Nou te adopte yon apwòch konsa ke chak ekip responsab pou imaj docker nan sistèm yo poukont yo. DevOps bay enfrastrikti jeneral ki nesesè pou deplwaman, se sa ki, sipò pou gwoup la li menm, sipò pou sistèm CI a, ak sou sa. E nan moman sa a, nou te deplase plis pase 60 sistèm nan Nomad, ki te monte apeprè 2 mil kontenè.

Devops responsab pou enfrastrikti jeneral tout bagay ki gen rapò ak deplwaman ak serveurs. Epi chak ekip devlopman, nan vire, responsab pou mete ann aplikasyon kontenè pou sistèm espesifik li yo, paske se ekip la ki konnen sa li bezwen jeneralman nan yon veso patikilye.

Rezon pou abandone Nomad

Ki avantaj nou te jwenn lè nou chanje nan deplwaman lè l sèvi avèk Nomad ak Docker, pami lòt moun?

  1. Nou bay kondisyon egal pou tout anviwònman. Nan devlopman, QA anviwònman, pre-pwodiksyon, pwodiksyon, menm imaj veso yo itilize, ak depandans yo menm. An konsekans, ou pa gen nòmalman chans pou sa ki pral fini nan pwodiksyon se pa sa ou te deja teste lokalman oswa nan anviwònman tès ou a.
  2. Nou menm tou nou te jwenn ke li se ase fasil pou ajoute yon nouvo sèvis. Soti nan yon pwen de vi deplwaman, nenpòt nouvo sistèm yo lanse trè tou senpleman. Jis ale nan depo a ki estoke konfigirasyon, ajoute yon lòt konfigirasyon pou sistèm ou a la, epi w ap tout mete. Ou ka deplwaye sistèm ou an nan pwodiksyon san okenn efò adisyonèl nan men devops.
  3. Tout fichye konfigirasyon yo nan yon sèl depo komen te tounen anba revizyon. Nan moman sa a lè nou te deplwaye sistèm nou yo lè l sèvi avèk sèvè vityèl, nou te itilize Ansible, nan ki konfigirasyon yo te nan menm repozitwa a. Sepandan, pou pifò devlopè sa a te yon ti jan pi difisil pou travay avèk yo. Isit la volim konfigirasyon ak kòd ke ou bezwen ajoute pou deplwaye sèvis la te vin pi piti anpil. Anplis de sa, li trè fasil pou devops yo ranje oswa chanje li. Nan ka tranzisyon, pou egzanp, nan yon nouvo vèsyon nan Nomad, yo ka pran ak en mete ajou tout dosye yo opere ki sitiye nan menm kote a.

Men, nou te rankontre tou plizyè dezavantaj:

Li te tounen soti ke nou pa t 'kapab reyalize deplwaman san pwoblèm an ka Nomad. Lè w ap woule kontenè yo nan diferan kondisyon, li ka vin ap kouri, epi Nomad te wè li kòm yon veso ki pare pou resevwa trafik. Sa te rive anvan aplikasyon an andedan li menm te gen yon chans pou lanse. Pou rezon sa a, sistèm nan te kòmanse pwodui 500 erè pou yon peryòd tan kout, paske trafik yo te kòmanse ale nan yon veso ki poko pare pou aksepte li.

Nou te rankontre kèk pinèz. Ensèk ki pi enpòtan an se ke Nomad pa okipe yon gwo gwoup trè byen si ou gen anpil sistèm ak resipyan. Lè ou vle pran youn nan sèvè yo ki enkli nan gwoup Nomad la pou antretyen, gen yon pwobabilite jistis segondè ke gwoup la pa pral santi yo trè byen epi yo pral tonbe apa. Gen kèk kontenè ki ka, pou egzanp, tonbe epi yo pa leve - sa ap koute ou anpil pita si tout sistèm pwodiksyon ou yo sitiye nan yon gwoup jere pa Nomad.

Se konsa, nou deside reflechi sou ki kote nou ta dwe ale pwochen. Nan pwen sa a, nou te vin pi plis okouran de sa nou te vle reyalize. Savwa: nou vle fyab, yon ti kras plis fonksyon pase Nomad bay, ak yon sistèm ki pi matirite, ki pi estab.

Nan sans sa a, chwa nou te tonbe sou Kubernetes kòm platfòm ki pi popilè pou lanse grap yo. Espesyalman bay ke gwosè a ak kantite resipyan nou yo te gwo ase. Pou rezon sa yo, Kubernetes te sanble yo dwe sistèm ki pi apwopriye ke nou ta ka gade.

Tranzisyon nan Kubernetes

Mwen pral di ou yon ti kras sou konsèp debaz yo nan Kubernetes ak ki jan yo diferan de Nomad.

Deplwaye aplikasyon pou VM, Nomad ak Kubernetes

Premye a tout, konsèp ki pi fondamantal nan Kubernetes se konsèp nan gous. Gous se yon gwoup youn oswa plizyè resipyan ki toujou kouri ansanm. Apre sa, yo toujou travay kòm si estrikteman sou yon sèl machin vityèl. Yo aksesib youn ak lòt atravè IP 127.0.0.1 sou pò diferan.

Ann sipoze ke ou gen yon aplikasyon PHP ki gen ladan nginx ak php-fpm - konplo klasik la. Gen plis chans, ou pral vle kenbe tou de veso nginx ak php-fpm ansanm tout tan. Kubernetes pèmèt ou reyalize sa a lè w dekri yo kòm yon sèl gous komen. Sa a se egzakteman sa nou pa t 'kapab jwenn ak Nomad.

Dezyèm konsèp la se deplwaman. Reyalite a se ke gous nan tèt li se yon bagay efemèr; li kòmanse ak disparèt. Èske ou vle touye tout kontenè anvan ou yo an premye, ak Lè sa a, lanse nouvo vèsyon an yon fwa, oswa ou vle woule yo soti piti piti? Sa a se pwosesis la ke konsèp nan deplwaman responsab pou. Li dekri kijan ou deplwaye gous ou yo, nan ki kantite ak kijan pou mete ajou yo.

Twazyèm konsèp la se sèvis. Sèvis ou an se aktyèlman sistèm ou an, ki resevwa kèk trafik ak Lè sa a, voye li nan youn oswa plis gous ki koresponn ak sèvis ou a. Sa vle di, li pèmèt ou di ke tout trafik fèk ap rantre nan sèvis sa yo ak tankou yon non yo dwe voye nan gous espesifik sa yo. Ak an menm tan li bay ou ak balans trafik. Sa vle di, ou ka lanse de gous aplikasyon w lan, epi tout trafik fèk ap rantre yo pral ekilibre ant gous yo ki gen rapò ak sèvis sa a.

Ak katriyèm konsèp debaz la se Pénétrer. Sa a se yon sèvis ki kouri sou yon gwoup Kubernetes. Li aji kòm yon balans chaj ekstèn ki pran sou tout demann. Sèvi ak API Kubernetes, Ingress ka detèmine ki kote demann sa yo ta dwe voye. Anplis, li fè sa trè fleksib. Ou ka di ke tout demann nan lame sa a ak URL sa a yo voye bay sèvis sa a. Ak demann sa yo ki vini nan lame sa a ak nan yon lòt URL yo voye nan yon lòt sèvis.

Bagay ki pi fre nan pwen de vi yon moun ki devlope yon aplikasyon se ke ou kapab jere li tout tèt ou. Lè w mete konfigirasyon Ingress la, ou ka voye tout trafik k ap vini nan yon API konsa pou separe resipyan ki ekri, pou egzanp, nan Go. Men, trafik sa a, vini nan domèn nan menm, men nan yon URL diferan, yo ta dwe voye nan resipyan ekri nan PHP, kote gen anpil lojik, men yo pa trè vit.

Si nou konpare tout konsèp sa yo ak Nomad, nou ka di ke twa premye konsèp yo se tout ansanm Sèvis. Ak dènye konsèp la absan nan Nomad tèt li. Nou itilize yon balans ekstèn kòm li: li ta ka haproxy, nginx, nginx +, ak sou sa. Nan ka yon kib, ou pa bezwen prezante konsèp adisyonèl sa a separeman. Sepandan, si ou gade nan Ingress intern, li se swa nginx, haproxy, oswa traefik, men sòt de bati nan Kubernetes.

Tout konsèp mwen dekri yo se, an reyalite, resous ki egziste nan yon gwoup Kubernetes. Pou dekri yo nan kib la, yo itilize yon fòma yaml, ki pi lizib ak abitye pase dosye HCL nan ka Nomad. Men, estriktirèl yo dekri menm bagay la nan ka, pou egzanp, gous. Yo di - mwen vle deplwaye gous sa yo ak sa yo la, ak imaj sa yo ak sa yo, nan kantite sa yo ak sa yo.

Deplwaye aplikasyon pou VM, Nomad ak Kubernetes

Anplis de sa, nou reyalize ke nou pa t 'vle kreye chak resous endividyèl alamen: deplwaman, sèvis, Ingress, elatriye. Olye de sa, nou te vle dekri chak nan sistèm nou yo an tèm de Kubernetes pandan deplwaman, pou nou pa ta dwe manyèlman rkree tout depandans resous ki nesesè yo nan bon lòd. Helm te chwazi kòm sistèm ki te pèmèt nou fè sa.

Konsèp debaz nan Helm

Helm se manadjè pake pou Kubernetes. Li sanble anpil ak fason administratè pake nan lang pwogramasyon travay. Yo pèmèt ou estoke yon sèvis ki gen ladann, pou egzanp, deplwaman nginx, deplwaman php-fpm, konfigirasyon pou Ingress, configmaps (sa a se yon antite ki pèmèt ou mete env ak lòt paramèt pou sistèm ou a) nan fòm sa a. yo rele tablo yo. An menm tan an Helm kouri sou tèt Kubernetes. Sa vle di, sa a se pa yon kalite sistèm kanpe sou kote, men jis yon lòt sèvis lanse andedan kib la. Ou kominike avèk li atravè API li yo atravè yon lòd konsole. Konvenyans li ak bote se ke menm si Helm kraze oswa ou retire li nan gwoup la, sèvis ou yo pa pral disparèt, paske Helm esansyèlman sèvi sèlman pou kòmanse sistèm nan. Lè sa a, Kubernetes tèt li responsab pou pèfòmans ak eta sèvis yo.

Nou menm tou nou reyalize sa modèl, ki nou te deja fòse fè tèt nou pa entwodwi jinja nan konfigirasyon nou an, se youn nan karakteristik prensipal yo nan Helm. Tout konfigirasyon ou kreye pou sistèm ou yo estoke nan helm nan fòm modèl, yon ti kras menm jan ak jinja, men, an reyalite, lè l sèvi avèk modèl la nan lang Go, nan ki helm ekri, tankou Kubernetes.

Helm ajoute kèk lòt konsèp pou nou.

Tablo - sa a se yon deskripsyon sèvis ou a. Nan lòt administratè pake yo ta rele yon pake, pake oswa yon bagay ki sanble. Isit la yo rele li tablo.

Valè se varyab yo ke ou vle itilize yo bati konfigirasyon ou a soti nan modèl.

Remèt. Chak fwa yon sèvis ki deplwaye lè l sèvi avèk Helm resevwa yon vèsyon incrémentielle nan lage a. Helm sonje sa ki konfigirasyon sèvis la te nan lage anvan an, liberasyon an anvan sa, ak sou sa. Se poutèt sa, si ou bezwen rollback, jis kouri lòd la callback Helm, montre li nan vèsyon an lage anvan an. Menm si konfigirasyon ki koresponn lan nan repozitwa ou a pa disponib nan moman rollback, Helm ap toujou sonje sa li te ye epi li pral rollback sistèm ou a nan eta li te nan vèsyon anvan an.

Nan ka a lè nou itilize Helm, konfigirasyon regilye pou Kubernetes tou vire nan modèl kote li posib yo sèvi ak varyab, fonksyon, epi aplike deklarasyon kondisyonèl. Nan fason sa a ou ka kolekte konfigirasyon sèvis ou a depann sou anviwònman an.

Deplwaye aplikasyon pou VM, Nomad ak Kubernetes

Nan pratik, nou deside fè bagay sa yo yon ti kras diferan pase nou te fè ak Nomad. Si nan Nomad tou de konfigirasyon deplwaman ak n-varyab ki te nesesè pou deplwaye sèvis nou an te estoke nan yon sèl depo, isit la nou deside divize yo an de depo separe. Repozitwa "deplwaye" la estoke sèlman n-varyab ki nesesè pou deplwaman, ak depo "helm" la estoke konfigirasyon oswa tablo.

Deplwaye aplikasyon pou VM, Nomad ak Kubernetes

Kisa sa te ban nou?

Malgre lefèt ke nou pa estoke okenn done reyèlman sansib nan dosye yo konfigirasyon tèt yo. Pou egzanp, modpas nan baz done. Yo estoke kòm sekrè nan Kubernetes, men kanmenm, gen toujou sèten bagay la ke nou pa vle bay tout moun aksè a. Se poutèt sa, aksè nan depo "deplwaye" a pi limite, ak depo "helm" la tou senpleman gen yon deskripsyon nan sèvis la. Pou rezon sa a, li ka jwenn aksè san danje pa yon seri pi laj de moun.

Piske nou gen non sèlman pwodiksyon, men tou, lòt anviwònman, gras a separasyon sa a nou ka reitilize tablo Helm nou yo pou deplwaye sèvis pa sèlman nan pwodiksyon, men tou, pou egzanp, nan yon anviwònman QA. Menm pou deplwaye yo lokalman itilize Minikube - sa a se yon bagay pou kouri Kubernetes lokalman.

Anndan chak depo, nou kite yon divizyon an anyè separe pou chak sèvis. Sa vle di, andedan chak anyè gen modèl ki gen rapò ak tablo ki koresponn lan epi ki dekri resous ki bezwen deplwaye pou lanse sistèm nou an. Nou kite sèlman envs nan depo "deplwaye". Nan ka sa a, nou pa t 'sèvi ak modèl lè l sèvi avèk jinja, paske Helm tèt li bay modèl soti nan bwat la - sa a se youn nan fonksyon prensipal li yo.

Nou kite yon script deplwaman - deploy.sh, ki senplifye ak estandadize lansman an pou deplwaman lè l sèvi avèk Helm. Se konsa, pou nenpòt moun ki vle deplwaye, koòdone deplwaman an sanble egzakteman menm jan li te fè lè deplwaye atravè Nomad. Menm deploy.sh la, non sèvis ou a, ak kote ou vle deplwaye li. Sa lakòz Helm kòmanse entèn. Li, nan vire, kolekte konfigirasyon soti nan modèl, foure fichye valè ki nesesè yo nan yo, Lè sa a, deplwaye yo, lanse yo nan Kubernetes.

Jwenn

Sèvis Kubernetes parèt pi konplèks pase Nomad.

Deplwaye aplikasyon pou VM, Nomad ak Kubernetes

Isit la trafik sortan vini nan Ingress. Sa a se jis kontwolè devan an, ki pran sou tout demann epi imedyatman voye yo bay sèvis ki koresponn ak done demann lan. Li detèmine yo ki baze sou konfigirasyon ki fè pati deskripsyon aplikasyon w lan nan Helm ak ki devlopè mete sou pwòp yo. Sèvis la voye demann nan gous li yo, se sa ki, resipyan espesifik, balanse trafik fèk ap rantre ant tout resipyan ki fè pati sèvis sa a. Epi, nan kou, nou pa ta dwe bliye ke nou pa ta dwe ale nenpòt kote nan sekirite nan nivo rezo a. Se poutèt sa, segmentasyon travay nan yon gwoup Kubernetes, ki baze sou tag. Tout sèvis yo gen sèten etikèt ki gen dwa aksè sèvis yo nan sèten resous ekstèn/entèn andedan oswa deyò gwoup la.

Kòm nou te fè tranzisyon an, nou te wè ke Kubernetes te gen tout kapasite yo nan Nomad, ke nou te deja itilize, epi tou li te ajoute yon anpil nan nouvo bagay. Li ka elaji atravè grefon, e an reyalite atravè kalite resous koutim. Sa vle di, ou gen opòtinite pa sèlman sèvi ak yon bagay ki vini ak Kubernetes soti nan bwat la, men yo kreye pwòp resous ou ak sèvis ki pral li resous ou a. Sa a ba ou opsyon adisyonèl pou elaji sistèm ou a san yo pa oblije reenstale Kubernetes epi san yo pa bezwen modifikasyon.

Yon egzanp itilizasyon sa a se Prometheus, ki kouri andedan gwoup Kubernetes nou an. Pou li kòmanse kolekte mezi nan yon sèvis patikilye, nou bezwen ajoute yon lòt kalite resous, sa yo rele monitè sèvis la, nan deskripsyon sèvis la. Prometheus, akòz lefèt ke li ka li yon kalite resous koutim lè lanse nan Kubernetes, otomatikman kòmanse kolekte mezi nan nouvo sistèm nan. Li byen pratik.

Premye deplwaman nou te fè nan Kubernetes se nan mwa mas 2018. Ak pandan tan sa a nou pa janm fè eksperyans okenn pwoblèm ak li. Li travay byen estab san pinèz enpòtan. Anplis de sa, nou ka elaji li pi lwen. Jodi a nou gen ase nan kapasite li genyen, e nou vrèman renmen vitès la nan devlopman nan Kubernetes. Kounye a, plis pase 3000 resipyan yo nan Kubernetes. Gwoup la okipe plizyè Nœuds. An menm tan an, li se sèvis, ki estab ak trè kontwole.

Sous: www.habr.com

Add nouvo kòmantè