Awọn ẹrọ Helm ati awọn oniwe-pitfalls

Awọn ẹrọ Helm ati awọn oniwe-pitfalls
Ero ti ẹru ọkọ oju omi Typhon, Anton Swanepoel

Orukọ mi ni Dmitry Sugrobov, Mo jẹ idagbasoke ni Leroy Merlin. Ninu nkan yii Emi yoo sọ fun ọ idi ti Helm ṣe nilo, bii o ṣe rọrun lati ṣiṣẹ pẹlu Kubernetes, kini o yipada ni ẹya kẹta, ati bii o ṣe le lo lati ṣe imudojuiwọn awọn ohun elo ni iṣelọpọ laisi akoko isinmi.

Eyi jẹ akopọ ti o da lori ọrọ kan ni apejọ kan @Kubernetes alapejọ by Mail.ru awọsanma Solutions — Ti o ko ba fẹ ka, wo fidio naa.

Kini idi ti a lo Kubernetes ni iṣelọpọ

Leroy Merlin jẹ oludari ni ọja soobu DIY ni Russia ati Yuroopu. Ile-iṣẹ wa ni diẹ sii ju ọgọrun awọn olupilẹṣẹ, awọn oṣiṣẹ inu inu 33 ati nọmba nla ti eniyan ti n ṣabẹwo si awọn ọja hypermarket ati oju opo wẹẹbu naa. Lati le mu gbogbo wọn dun, a pinnu lati tẹle awọn isunmọ boṣewa ile-iṣẹ. Dagbasoke awọn ohun elo tuntun nipa lilo faaji microservice; lo awọn apoti lati ya sọtọ awọn agbegbe ati rii daju ifijiṣẹ to dara; ati lo Kubernetes fun orchestration. Iye owo ti lilo awọn akọrin ti nyara di din owo: nọmba awọn onimọ-ẹrọ ti o ni oye ninu imọ-ẹrọ n dagba lori ọja, ati pe awọn olupese n ṣafihan ti nfunni ni Kubernetes bi iṣẹ kan.

Ohun gbogbo ti Kubernetes ṣe, dajudaju, le ṣee ṣe ni awọn ọna miiran, fun apẹẹrẹ, nipa ibora diẹ ninu awọn Jenkins ati docker-compose pẹlu awọn iwe afọwọkọ, ṣugbọn kilode ti o ṣe idiju igbesi aye ti o ba wa ojutu ti o ṣetan ati ti o gbẹkẹle? Ti o ni idi ti a wa si Kubernetes ati pe a ti lo o ni iṣelọpọ fun ọdun kan ni bayi. Lọwọlọwọ a ni awọn iṣupọ Kubernetes mẹrinlelogun, akọbi ninu eyiti o ju ọdun kan lọ, pẹlu bii igba podu.

Egún ti awọn faili YAML nla ni Kubernetes

Lati ṣe ifilọlẹ microservice ni Kubernetes, a yoo ṣẹda o kere ju awọn faili YAML marun: fun Imuṣiṣẹ, Iṣẹ, Ingress, ConfigMap, Awọn Aṣiri - ati firanṣẹ si iṣupọ naa. Fun ohun elo atẹle a yoo kọ package kanna ti scaffolding, pẹlu ẹkẹta a yoo kọ ọkan miiran, ati bẹbẹ lọ. Ti a ba ṣe isodipupo nọmba awọn iwe aṣẹ nipasẹ nọmba awọn agbegbe, a yoo gba awọn ọgọọgọrun awọn faili tẹlẹ, ati pe eyi ko tii gba sinu iroyin awọn agbegbe ti o ni agbara.

Awọn ẹrọ Helm ati awọn oniwe-pitfalls
Adam Reese, olutọju pataki ti Helm, ṣafihan imọran ti "Idagbasoke ọmọ ni Kubernetes", eyi ti o dabi eyi:

  1. Daakọ YAML - daakọ faili YAML kan.
  2. Lẹẹ YAML - lẹẹmọ rẹ.
  3. Fix Indents - atunse indents.
  4. Tun - tun lẹẹkansi.

Aṣayan ṣiṣẹ, ṣugbọn o ni lati daakọ awọn faili YAML ni ọpọlọpọ igba. Lati yi yi ọmọ, Helm a se.

Kí ni Helm tumo si

Ni akọkọ, Helm - oluṣakoso package, eyi ti o ṣe iranlọwọ fun ọ lati wa ati fi sori ẹrọ awọn eto ti o nilo. Lati fi sori ẹrọ, fun apẹẹrẹ, MongoDB, iwọ ko nilo lati lọ si oju opo wẹẹbu osise ati ṣe igbasilẹ awọn alakomeji, kan ṣiṣe aṣẹ naa helm install stable/mongodb.

Ni ẹẹkeji, Helm - engine awoṣe, iranlọwọ lati parameterize awọn faili. Jẹ ki a pada si ipo pẹlu awọn faili YAML ni Kubernetes. O rọrun lati kọ faili YAML kanna, ṣafikun diẹ ninu awọn aye si, eyiti Helm yoo rọpo awọn iye naa. Iyẹn ni, dipo eto nla ti awọn scaffolds, ṣeto awọn awoṣe yoo wa ninu eyiti awọn iye ti o nilo yoo rọpo ni akoko to tọ.

Ni ẹkẹta, Helm - titunto si imuṣiṣẹ. Pẹlu rẹ o le fi sori ẹrọ, yiyi pada ati imudojuiwọn awọn ohun elo. Jẹ ká ro ero jade bi o lati ṣe eyi.

Awọn ẹrọ Helm ati awọn oniwe-pitfalls

Bii o ṣe le lo Helm lati ran awọn ohun elo tirẹ lọ

Jẹ ki ká fi Helm ni ose lori kọmputa rẹ, awọn wọnyi ni osise awọn ilana. Nigbamii, a yoo ṣẹda akojọpọ awọn faili YAML kan. Dipo ti a pato pato iye, a yoo fi placeholders, eyi ti Helm yoo kun pẹlu alaye ni ojo iwaju. Eto iru awọn faili bẹẹ ni a pe ni iwe aworan Helm. O le firanṣẹ si alabara console Helm ni awọn ọna mẹta:

  • tọkasi folda pẹlu awọn awoṣe;
  • gbe pamosi naa sinu .tar kan ki o tọka si;
  • fi awọn awoṣe ni kan latọna ibi ipamọ ati ki o fi ọna asopọ kan si awọn ibi ipamọ ninu awọn Helm ose.

O tun nilo faili kan pẹlu awọn iye - values.yaml. Awọn data lati ibẹ yoo fi sii sinu awoṣe. Jẹ ki a ṣẹda pẹlu.

Awọn ẹrọ Helm ati awọn oniwe-pitfalls
Ẹya keji ti Helm ni ohun elo olupin afikun - Tiller. O wa ni ita Kubernetes ati duro fun awọn ibeere lati ọdọ alabara Helm, ati nigbati a pe, rọpo awọn iye ti o nilo sinu awoṣe ki o firanṣẹ si Kubernetes.

Awọn ẹrọ Helm ati awọn oniwe-pitfalls
Helm 3 rọrun: dipo awọn awoṣe sisẹ lori olupin, alaye ti ni ilọsiwaju ni kikun ni ẹgbẹ alabara Helm ati firanṣẹ taara si Kubernetes API. Irọrun yii mu aabo iṣupọ pọ si ati ki o jẹ ki ero yiyọ kuro.

Bawo ni gbogbo rẹ ṣe ṣiṣẹ

Ṣiṣe aṣẹ naa helm install. Jẹ ki a tọka orukọ idasilẹ ohun elo ki o fun ni ọna si values.yaml. Ni ipari a yoo tọka si ibi ipamọ ninu eyiti chart wa ati orukọ chart naa. Ninu apẹẹrẹ, iwọnyi jẹ “lmru” ati “bestchart”, lẹsẹsẹ.

helm install --name bestapp --values values.yaml lmru/bestchart

Aṣẹ le ṣee ṣe ni ẹẹkan, nigba ti a ba tun ṣe dipo install nilo lati lo upgrade. Fun ayedero, dipo awọn aṣẹ meji, o le ṣiṣe aṣẹ naa upgrade pẹlu afikun bọtini --install. Nigbati o ba ṣiṣẹ fun igba akọkọ, Helm yoo firanṣẹ aṣẹ kan lati fi sii idasilẹ, ati pe yoo ṣe imudojuiwọn ni ọjọ iwaju.

helm upgrade --install bestapp --values values.yaml lmru/bestchart

Awọn ipalara ti gbigbe awọn ẹya tuntun ti ohun elo pẹlu Helm

Ni aaye yii ninu itan naa, Mo nṣere Tani Tani Fẹ lati Jẹ Milionu pẹlu awọn olugbo, ati pe a n ṣawari bi a ṣe le gba Helm lati ṣe imudojuiwọn ẹya ti app naa. Wo fidio naa.

Nigbati mo nkọ bi Helm ṣe n ṣiṣẹ, ihuwasi ajeji yà mi lẹnu nigbati o n gbiyanju lati ṣe imudojuiwọn awọn ẹya ti awọn ohun elo ṣiṣe. Mo ṣe imudojuiwọn koodu ohun elo, gbe aworan tuntun si iforukọsilẹ Docker, firanṣẹ aṣẹ imuṣiṣẹ - ati pe ko si ohun ti o ṣẹlẹ. Ni isalẹ wa diẹ ninu awọn ọna aṣeyọri patapata lati ṣe imudojuiwọn awọn ohun elo. Nipa kikọ ọkọọkan wọn ni awọn alaye diẹ sii, o bẹrẹ lati ni oye eto inu ti ohun elo ati awọn idi fun eyi kii ṣe ihuwasi ti o han gbangba.

Ọna 1. Maṣe yi alaye pada lati igba ifilọlẹ ti o kẹhin

Bi o ti sọ aaye ayelujara osise Helm, "Awọn shatti Kubernetes le jẹ nla ati idiju, nitorina Helm gbìyànjú lati ma fi ọwọ kan ohunkohun ju." Nitorinaa, ti o ba ṣe imudojuiwọn ẹya tuntun ti aworan ohun elo ni iforukọsilẹ docker ati ṣiṣe aṣẹ naa helm upgrade, lẹhinna ko si ohun ti yoo ṣẹlẹ. Helm yoo ro pe ko si ohun ti o yipada ati pe ko si iwulo lati fi aṣẹ ranṣẹ si Kubernetes lati ṣe imudojuiwọn ohun elo naa.

Nibi ati ni isalẹ, aami tuntun jẹ afihan nikan bi apẹẹrẹ. Nigbati o ba pato aami yii, Kubernetes yoo ṣe igbasilẹ aworan naa lati iforukọsilẹ docker ni gbogbo igba, laibikita paramita aworanPullPolicy. Lilo titun ni iṣelọpọ jẹ aifẹ ati fa awọn ipa ẹgbẹ.

Ọna 2. Ṣe imudojuiwọn LABEL ni aworan

Bi a ti kọ ni kanna iwe, "Helm yoo ṣe imudojuiwọn ohun elo nikan ti o ba ti yipada lati igba idasilẹ kẹhin." Aṣayan ọgbọn fun eyi yoo dabi pe o n ṣe imudojuiwọn LABEL ni aworan docker funrararẹ. Sibẹsibẹ, Helm ko wo awọn aworan ohun elo ati pe ko ni imọran nipa eyikeyi awọn ayipada si wọn. Nitorinaa, nigbati o ba n ṣe imudojuiwọn awọn aami ninu aworan, Helm kii yoo mọ nipa wọn, ati pe aṣẹ imudojuiwọn ohun elo kii yoo firanṣẹ si Kubernetes.

Ọna 3: Lo bọtini kan --force

Awọn ẹrọ Helm ati awọn oniwe-pitfalls
Jẹ ki a yipada si awọn itọnisọna ki o wa bọtini ti a beere. Awọn bọtini mu ki awọn julọ ori --force. Pelu orukọ ti o han gbangba, ihuwasi yatọ si ti a reti. Dipo ki o fi ipa mu imudojuiwọn ohun elo kan, idi gidi rẹ ni lati mu pada idasilẹ ti o wa ni ipo FAILED. Ti o ko ba lo bọtini yii, o nilo lati ṣiṣẹ awọn aṣẹ ni lẹsẹsẹ helm delete && helm install --replace. O daba lati lo bọtini dipo --force, eyi ti o ṣe adaṣe ipaniyan lẹsẹsẹ ti awọn aṣẹ wọnyi. Alaye diẹ sii ni eyi fa ìbéèrè. Lati sọ fun Helm lati ṣe imudojuiwọn ẹya ohun elo, laanu, bọtini yii kii yoo ṣiṣẹ.

Ọna 4. Yi awọn aami pada taara ni Kubernetes

Awọn ẹrọ Helm ati awọn oniwe-pitfalls
Nmu aami dojuiwọn taara ninu iṣupọ nipa lilo pipaṣẹ kubectl edit - buburu agutan. Iṣe yii yoo ja si aiṣedeede alaye laarin ohun elo ti nṣiṣẹ ati eyi ti a firanṣẹ ni akọkọ fun imuṣiṣẹ. Ihuwasi Helm lakoko imuṣiṣẹ ninu ọran yii yatọ si ẹya rẹ: Helm 2 kii yoo ṣe ohunkohun, ati Helm 3 yoo mu ẹya tuntun ti ohun elo naa ṣiṣẹ. Lati loye idi, o nilo lati ni oye bi Helm ṣe n ṣiṣẹ.

Bawo ni Helm ṣiṣẹ?

Lati pinnu boya ohun elo kan ti yipada lati igbasilẹ rẹ kẹhin, Helm le lo:

  • nṣiṣẹ ohun elo ni Kubernetes;
  • titun values.yaml ati lọwọlọwọ chart;
  • Helm ká ti abẹnu Tu alaye.

Fun iyanilenu diẹ sii: nibo ni Helm tọju alaye inu nipa awọn idasilẹ?Nipa ṣiṣe pipaṣẹ naa helm history, a yoo gba gbogbo alaye nipa awọn ẹya ti fi sori ẹrọ nipa lilo Helm.

Awọn ẹrọ Helm ati awọn oniwe-pitfalls
Alaye alaye tun wa nipa awọn awoṣe ti a firanṣẹ ati awọn iye. A le beere fun:

Awọn ẹrọ Helm ati awọn oniwe-pitfalls
Ninu ẹya keji ti Helm, alaye yii wa ni aaye orukọ kanna nibiti Tiller ti nṣiṣẹ (kube-system nipasẹ aiyipada), ninu ConfigMap, ti a samisi pẹlu aami “OWNER=TILLER”:

Awọn ẹrọ Helm ati awọn oniwe-pitfalls
Nigbati ẹya kẹta ti Helm han, alaye naa gbe lọ si awọn aṣiri, ati si aaye orukọ kanna nibiti ohun elo nṣiṣẹ. Ṣeun si eyi, o ṣee ṣe lati ṣiṣẹ ọpọlọpọ awọn ohun elo nigbakanna ni awọn aaye orukọ oriṣiriṣi pẹlu orukọ itusilẹ kanna. Ninu ẹya keji o jẹ orififo nla nigbati awọn aaye orukọ ti ya sọtọ ṣugbọn o le ni ipa lori ara wọn.

Awọn ẹrọ Helm ati awọn oniwe-pitfalls

Helm keji, nigbati o n gbiyanju lati loye boya o nilo imudojuiwọn kan, lo awọn orisun alaye meji nikan: ohun ti a pese si ni bayi, ati alaye inu nipa awọn idasilẹ, eyiti o wa ni ConfigMap.

Awọn ẹrọ Helm ati awọn oniwe-pitfalls
Helm kẹta nlo ilana idapọ ọna mẹta: ni afikun si alaye yẹn, o tun ṣe akiyesi ohun elo ti n ṣiṣẹ ni bayi ni Kubernetes.

Awọn ẹrọ Helm ati awọn oniwe-pitfalls
Fun idi eyi, ẹya atijọ ti Helm kii yoo ṣe ohunkohun, nitori ko ṣe akiyesi alaye ohun elo ninu iṣupọ, ṣugbọn Helm 3 yoo gba awọn ayipada ati firanṣẹ ohun elo tuntun fun imuṣiṣẹ.

Ọna 5. Lo --recreate-pods yipada

Pẹlu bọtini kan --recreate-pods o le ṣaṣeyọri ohun ti o gbero ni akọkọ lati ṣaṣeyọri pẹlu bọtini --force. Awọn apoti naa yoo tun bẹrẹ ati, ni ibamu si aworanPullPolicy: Ilana nigbagbogbo fun tag tuntun (diẹ sii lori eyi ni akọsilẹ ẹsẹ loke), Kubernetes yoo ṣe igbasilẹ ati ṣe ifilọlẹ ẹya tuntun ti aworan naa. Eyi kii yoo ṣee ṣe ni ọna ti o dara julọ: laisi akiyesi Ilana Iru imuṣiṣẹ, yoo pa gbogbo awọn iṣẹlẹ ohun elo atijọ kuro lojiji ki o bẹrẹ ifilọlẹ awọn tuntun. Lakoko atunbere, eto naa kii yoo ṣiṣẹ, awọn olumulo yoo jiya.

Ni Kubernetes funrararẹ, iṣoro kanna tun wa fun igba pipẹ. Ati ni bayi, ọdun 4 lẹhin ṣiṣi Oro naa, iṣoro naa ti wa titi, ati bẹrẹ pẹlu ẹya 1.15 ti Kubernetes, agbara lati yipo-tun bẹrẹ awọn adarọ-ese yoo han.

Helm kan pa gbogbo awọn ohun elo ati ṣe ifilọlẹ awọn apoti tuntun nitosi. O ko le ṣe eyi ni iṣelọpọ, nitorina ki o ma ṣe fa idaduro ohun elo. Eyi nilo nikan fun awọn iwulo idagbasoke ati pe o le ṣee ṣe ni awọn agbegbe ipele nikan.

Bii o ṣe le ṣe imudojuiwọn ẹya ohun elo nipa lilo Helm?

A yoo yi awọn iye ti a firanṣẹ si Helm. Ni deede, iwọnyi jẹ awọn iye ti o rọpo ni aaye ti aami aworan naa. Ninu ọran tuntun, eyiti a lo nigbagbogbo fun awọn agbegbe ti ko ni iṣelọpọ, alaye iyipada jẹ asọye, eyiti ko wulo fun Kubernetes funrararẹ, ati fun Helm yoo ṣiṣẹ bi ifihan agbara fun iwulo lati ṣe imudojuiwọn ohun elo naa. Awọn aṣayan fun kikun iye asọye:

  1. ID iye lilo iṣẹ boṣewa - {{ randAlphaNum 6 }}.
    Itọkasi kan wa: lẹhin imuṣiṣẹ kọọkan nipa lilo chart pẹlu iru oniyipada kan, iye asọye yoo jẹ alailẹgbẹ, ati Helm yoo ro pe awọn ayipada wa. O wa ni pe a yoo tun bẹrẹ ohun elo nigbagbogbo, paapaa ti a ko ba yipada ẹya rẹ. Eyi kii ṣe pataki, nitori kii yoo ni akoko idinku, ṣugbọn o tun jẹ aifẹ.
  2. Lẹẹmọ lọwọlọwọ ọjọ ati akoko - {{ .Release.Date }}.
    Iyatọ kan jọra si iye laileto pẹlu oniyipada alailẹgbẹ patapata.
  3. Ọna ti o tọ diẹ sii ni lati lo checksums. Eyi ni SHA ti aworan tabi SHA ti iṣẹ ikẹhin ninu git - {{ .Values.sha }}.
    Wọn yoo nilo lati ka ati firanṣẹ si alabara Helm ni ẹgbẹ ipe, fun apẹẹrẹ ni Jenkins. Ti ohun elo ba ti yipada, lẹhinna checksum yoo yipada. Nitorinaa, Helm yoo ṣe imudojuiwọn ohun elo nikan nigbati o nilo.

Jẹ ki a ṣe akopọ awọn igbiyanju wa

  • Helm ṣe awọn ayipada ni ọna afomo ti o kere ju, nitorinaa eyikeyi iyipada ni ipele aworan ohun elo ni iforukọsilẹ Docker kii yoo ja si imudojuiwọn kan: ko si ohun ti yoo ṣẹlẹ lẹhin pipaṣẹ naa.
  • Bọtini --force ti a lo lati mu awọn idasilẹ iṣoro pada ati pe ko ni nkan ṣe pẹlu awọn imudojuiwọn fi agbara mu.
  • Bọtini --recreate-pods yoo ṣe imudojuiwọn awọn ohun elo ni agbara, ṣugbọn yoo ṣe ni ọna apanirun: yoo pa gbogbo awọn apoti ni airotẹlẹ. Awọn olumulo yoo jiya lati eyi; o ko yẹ ki o ṣe eyi ni iṣelọpọ.
  • Ṣe awọn ayipada taara si iṣupọ Kubernetes nipa lilo aṣẹ naa kubectl edit ma ṣe: a yoo fọ aitasera, ati awọn ihuwasi yoo yato da lori awọn ti ikede Helm.
  • Pẹlu itusilẹ ti ẹya tuntun ti Helm, ọpọlọpọ awọn nuances ti han. Awọn ọrọ inu ibi ipamọ Helm ni a ṣe apejuwe ni ede mimọ, wọn yoo ran ọ lọwọ lati loye awọn alaye naa.
  • Ṣafikun asọye ti o le ṣatunkọ si aworan apẹrẹ kan yoo jẹ ki o rọ diẹ sii. Eyi yoo gba ọ laaye lati yi ohun elo naa jade ni deede, laisi akoko idaduro.

Ero "alaafia agbaye" ti o ṣiṣẹ ni gbogbo awọn agbegbe ti igbesi aye: ka awọn itọnisọna ṣaaju lilo, kii ṣe lẹhin. Nikan pẹlu alaye pipe yoo ṣee ṣe lati kọ awọn eto igbẹkẹle ati jẹ ki awọn olumulo ni idunnu.

Awọn ọna asopọ miiran ti o jọmọ:

  1. Ibaraẹnisọrọ pẹlu Iranlọwọ 3
  2. Helm osise aaye ayelujara
  3. Ibi ipamọ Helm lori GitHub
  4. 25 Awọn irinṣẹ Kubernetes Wulo: Imuṣiṣẹ ati Isakoso

Iroyin yii ni akọkọ gbekalẹ ni @Kubernetes alapejọ nipasẹ Mail.ru Awọn solusan awọsanma. Wo видео awọn iṣẹ ṣiṣe miiran ati ṣe alabapin si awọn ikede iṣẹlẹ lori Telegram Ni ayika Kubernetes ni Mail.ru Group.

orisun: www.habr.com

Fi ọrọìwòye kun