Amûra Helm û xeletiyên wê

Amûra Helm û xeletiyên wê
Konsepta barkêşiya barkêşiya Typhon, Anton Swanepoel

Navê min Dmitry Sugrobov e, ez li Leroy Merlin pêşdebir im. Di vê gotarê de ez ê ji we re vebêjim ka çima Helm hewce ye, ew çawa xebata bi Kubernetes re hêsan dike, di guhertoya sêyemîn de çi guherî, û meriv wê çawa bikar tîne da ku serlêdanên di hilberînê de bêyî demdirêj nûve bike.

Ev kurteyek li ser bingeha axaftinek li konferansê ye @Kubernetes Konferansa by Mail.ru Cloud Solutions - Heke hûn naxwazin bixwînin, vîdyoyê temaşe bikin.

Çima em Kubernetes di hilberînê de bikar tînin

Leroy Merlin di sûka kirrûbirra DIY de li Rusya û Ewrûpa pêşeng e. Pargîdaniya me zêdetirî sed pêşdebiran, 33 karmendên navxweyî û hejmareke mezin ji kesên ku serdana hîpermarket û malperê dikin hene. Ji bo ku em wan hemî kêfxweş bikin, me biryar da ku em nêzîkatiyên standard ên pîşesaziyê bişopînin. Bi karanîna mîmariya mîkroxizmetê serîlêdanên nû pêşve bibin; konteyneran bikar bînin da ku hawîrdoran veqetînin û radestkirina rast peyda bikin; û Kubernetes ji bo orkestrasyonê bikar bînin. Bihaya karanîna orkestravan bi lez erzantir dibe: Hejmara endezyarên ku di teknolojiyê de pispor in li sûkê mezin dibe, û pêşkêşker xuya dikin ku Kubernetes wekî karûbar pêşkêş dikin.

Her tiştê ku Kubernetes dike, bê guman, dikare bi awayên din were kirin, mînakî, bi vegirtina hin Jenkins û docker-compose bi senaryoyan, lê gelo çima çareseriyek amade û pêbawer hebe, çima jiyanê tevlihev dike? Ji ber vê yekê em hatin Kubernetes û ev salek e ku di hilberînê de bikar tînin. Me niha bîst û çar komên Kubernetes hene, ya herî kevn ji wan salek zêdetir e, bi qasî dused kulman.

Laneta pelên mezin ên YAML li Kubernetes

Ji bo destpêkirina mîkroxizmetek li Kubernetes, em ê bi kêmî ve pênc pelên YAML biafirînin: ji bo Deployment, Service, Ingress, ConfigMap, Secrets - û wan bişînin komê. Ji bo serîlêdana paşîn em ê heman pakêtê jamb binivîsin, bi ya sêyemîn re em ê yeka din binivîsin, û hwd. Ger em hejmara belgeyan bi hejmara hawîrdoran zêde bikin, em ê jixwe bi sedan pelan bistînin, û ev hîn jî hawîrdorên dînamîkî li ber çavan nayê girtin.

Amûra Helm û xeletiyên wê
Adam Reese, parêzvanê bingehîn ê Helm, têgeha "Demjimêra Pêşkeftinê li Kubernetes", ku bi vî rengî xuya dike:

  1. YAML kopî bikin - pelek YAML kopî bikin.
  2. YAML bixin - pê bikin.
  3. Çêkirina Indents - fix indents.
  4. Dubare - dîsa dubare bike.

Vebijêrk dixebite, lê divê hûn pelên YAML gelek caran kopî bikin. Ji bo guhertina vê çerxê, Helm hate kifş kirin.

Helm çi ye

Pêşîn, Helm - rêveberê pakêtê, ku ji we re dibe alîkar ku hûn bernameyên ku hûn hewce ne bibînin û saz bikin. Ji bo sazkirina, mînakî, MongoDB, hûn ne hewce ne ku hûn biçin malpera fermî û binaryan dakêşin, tenê fermanê bişopînin. helm install stable/mongodb.

Ya duyemîn, Helm - motora şablonê, ji bo parametrekirina pelan dibe alîkar. Ka em vegerin rewşa pelên YAML li Kubernetes. Ew hêsantir e ku hûn heman pelê YAML binivîsin, hin cîhan lê zêde bikin, ku Helm dê nirxan biguhezîne. Ango, li şûna komek mezin a îskeleyan, dê komek şablon hebin ku dê di wextê rast de nirxên pêwîst werin guheztin.

Ya sêyemîn, Helm - masterê bicihkirinê. Bi wê re hûn dikarin sepanan saz bikin, paşde vegerînin û nûve bikin. Ka em fêr bibin ka meriv çawa vê yekê dike.

Amûra Helm û xeletiyên wê

Meriv çawa Helm bikar tîne da ku serîlêdanên xwe bicîh bike

Werin em xerîdar Helm li ser komputera xwe saz bikin, li pey fermî fermanên. Dûv re, em ê komek pelên YAML biafirînin. Li şûna ku em nirxên taybetî diyar bikin, em ê cîhgiran bihêlin, ku Helm dê di pêşerojê de bi agahdarî tije bike. Ji komek pelên weha re nexşeyek Helm tê gotin. Ew dikare bi sê awayan ji muwekîlê konsolê Helm re were şandin:

  • peldankek bi şablonan nîşan bide;
  • arşîvê li .tarê pak bikin û pê nîşan bidin;
  • şablonê têxe depoyek dûr û di xerîdarê Helm de lînka depoyê lê zêde bike.

Ji we re pelek bi nirxan jî hewce ye - values.yaml. Daneyên ji wir dê têxin nav şablonê. Ka em wê jî biafirînin.

Amûra Helm û xeletiyên wê
Guhertoya duyemîn a Helm serîlêdanek serverek din heye - Tiller. Ew li derveyî Kubernetes disekine û li benda daxwazên xerîdar Helm dimîne, û dema ku tê gazî kirin, nirxên pêwîst di nav şablonê de diguhezîne û ji Kubernetes re dişîne.

Amûra Helm û xeletiyên wê
Helm 3 sadetir e: Li şûna ku şablonên li ser serverê werin xebitandin, naha agahdarî bi tevahî li ser milê xerîdar Helm têne hilberandin û rasterast ji Kubernetes API re têne şandin. Ev sadebûn ewlekariya komê çêtir dike û pilana hilanînê hêsan dike.

Çawa hemî kar dike

Ferman bimeşîne helm install. Ka em navê berdana sepanê nîşan bidin û rê bidin nirxên.yaml. Di dawiyê de em ê depoya ku nexşe tê de ye û navê nexşeyê destnîşan bikin. Di nimûneyê de, ew bi rêzê "lmru" û "bestchart" in.

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

Ferman dikare tenê carekê were darve kirin, dema ku li şûna wê dîsa were darve kirin install pêdivî ye ku bikar bînin upgrade. Ji bo sadebûnê, li şûna du fermanan, hûn dikarin fermanê bimeşînin upgrade bi kilîta zêde --install. Dema ku ji bo cara yekem hate darve kirin, Helm dê fermanek ji bo sazkirina berdanê bişîne, û dê di pêşerojê de wê nûve bike.

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

Xemgîniyên bicihkirina guhertoyên nû yên serîlêdanek bi Helm

Di vê nuqteya çîrokê de, ez bi temaşevanan re Kî Dixwaze Bibe Milyoner dilîzim, û em fêhm dikin ka meriv çawa Helm bihêle ku guhertoya sepanê nûve bike. Vîdeoyê temaşe bikin.

Dema ku ez fêr dibûm ka Helm çawa dixebite, dema ku ez hewl didim ku guhertoyên serîlêdanên xebitandinê nûve bikim, ez ji behremendiya xerîb şaş mam. Min koda serîlêdanê nûve kir, wêneyek nû li tomara Docker bar kir, fermana veqetandinê şand - û tiştek nebû. Li jêr hin awayên ne bi tevahî serketî yên nûvekirina serlêdanan hene. Bi xwendina her yek ji wan bi hûrgulî, hûn dest pê dikin ku strukturên hundurîn ên amûrê û sedemên vê tevgera ne diyar fam bikin.

Rêbaz 1. Ji destpêka paşîn ve agahdariya neguhezînin

Wekî ku dibêje malpera fermî Helm, "Nexşeyên Kubernetes dikarin mezin û tevlihev bin, ji ber vê yekê Helm hewl dide ku zêde dest nede tiştekî." Ji ber vê yekê, heke hûn guhertoya herî dawî ya wêneya serîlêdanê di qeydkirina dokerê de nûve bikin û fermanê bimeşînin helm upgrade, wê demê tiştek dê nebe. Helm dê bifikire ku tiştek nehatiye guhertin û ne hewce ye ku fermanek ji Kubernetes re bişîne da ku serîlêdanê nûve bike.

Li vir û jêrîn, etîketa herî paşîn tenê wekî mînakek tê destnîşan kirin. Dema ku hûn vê tagê diyar bikin, Kubernetes dê her carê wêneyê ji qeyda dokerê dakêşîne, bêyî ku pîvana imagePullPolicy hebe. Bikaranîna nûtirîn di hilberînê de nexwestî ye û dibe sedema bandorên alî.

Rêbaz 2. Di wêneyê de LABEL nûve bikin

Wekî ku di heman demê de hatiye nivîsandin belgekirin, "Helm dê tenê serîlêdanek nûve bike heke ew ji berdana paşîn ve hatî guhertin." Vebijarkek mentiqî ya ji bo vê xuya dike ku LABEL-ê di wêneya dokerê de bixwe nûve dike. Lêbelê, Helm li wêneyên serîlêdanê mêze nake û di derbarê ti guhertinên li ser wan de haya wî tune. Li gorî vê yekê, dema ku etîketên di wêneyê de nûve bikin, Helm dê li ser wan nizanibe, û fermana nûvekirina serîlêdanê dê ji Kubernetes re neyê şandin.

Rêbaz 3: Miftek bikar bînin --force

Amûra Helm û xeletiyên wê
Ka em vegerin ser manualan û li mifteya pêwîst bigerin. Mifteya herî zêde hestiyar dike --force. Tevî navê eşkere, tevger ji ya hêvîkirî cuda ye. Li şûna ku bi zorê nûvekirinek serîlêdanê bike, armanca wê ya rastîn ew e ku nûvekirinek ku di statûya FAILED de ye vegerîne. Heke hûn vê mifteyê bikar neynin, hûn hewce ne ku fermanan bi rêzdarî bicîh bikin helm delete && helm install --replace. Tête pêşniyar kirin ku li şûna mifteyê bikar bînin --force, ku îcrakirina rêzimanî ya van fermanan otomatîk dike. Di vê yekê de bêtir agahdarî daxwaza kişandinê. Ji bo ku ji Helm re bêje ku guhertoya serîlêdanê nûve bike, mixabin, ev mift dê nexebite.

Rêbaz 4. Etîketan rasterast di Kubernetes de biguherînin

Amûra Helm û xeletiyên wê
Nûvekirina etîketê rasterast di komê de bi karanîna fermanê kubectl edit - ramana xerab. Ev kiryar dê bibe sedema nerazîbûna agahdariya di navbera serîlêdana xebitandinê û ya ku di destpêkê de ji bo bicîhkirinê hatî şandin. Di vê rewşê de tevgera Helm di dema bicîhkirinê de ji guhertoya wê cûda dibe: Helm 2 dê tiştek neke, û Helm 3 dê guhertoya nû ya serîlêdanê bicîh bike. Ji bo ku hûn fêm bikin çima, hûn hewce ne ku fêm bikin ka Helm çawa dixebite.

Helm çawa dixebite?

Ji bo destnîşankirina ka serîlêdanek ji berdana xweya paşîn ve hatî guhertin, Helm dikare bikar bîne:

  • serîlêdana xebitandinê li Kubernetes;
  • nirxên nû.yaml û nexşeya heyî;
  • Agahdariya serbestberdana navxweyî ya Helm.

Ji bo yên meraqtir: Helm agahdariya navxweyî li ser berdanan li ku derê hilîne?Bi pêkanîna fermanê helm history, em ê hemî agahdariya li ser versiyonên ku bi karanîna Helm hatine saz kirin bistînin.

Amûra Helm û xeletiyên wê
Di derbarê şablon û nirxên hatine şandin de jî agahiyên berfireh hene. Em dikarin wê daxwaz bikin:

Amûra Helm û xeletiyên wê
Di guhertoya duyemîn a Helm de, ev agahdarî di heman cîhê navan de ye ku Tiller lê dimeşîne (pergala kube ji hêla xwerû), di ConfigMap de, ku bi etîketa "XWEDÎ = TILLER" hatî nîşankirin:

Amûra Helm û xeletiyên wê
Dema ku guhertoya sêyemîn a Helm xuya bû, agahdarî ber bi nehêniyan ve çû, û li heman cîhê navan ku serîlêdan lê dimeşiya. Bi saya vê yekê, gengaz bû ku bi heman navî berdanê çend serîlêdan bi hevdemî di navên cihêreng de werin xebitandin. Di guhertoya duyemîn de dema ku cîhên navan têne veqetandin, serêşiyek giran bû lê dikarin bandorê li hev bikin.

Amûra Helm û xeletiyên wê

Helma duyemîn, dema ku hewl dide ku fêm bike ka nûvekirinek hewce ye, tenê du çavkaniyên agahdariyê bikar tîne: ya ku niha jê re tê peyda kirin, û agahdariya hundurîn di derbarê berdanan de, ku di ConfigMap de ye.

Amûra Helm û xeletiyên wê
Helma sêyem stratejiyek yekbûnê ya sê-alî bikar tîne: ji bilî wê agahiyê, ew serîlêdana ku niha li Kubernetes-ê tê xebitandin jî dihesibîne.

Amûra Helm û xeletiyên wê
Ji ber vê yekê, guhertoya kevn a Helm dê tiştek neke, ji ber ku ew agahdariya serîlêdanê ya di komê de hesab nake, lê Helm 3 dê guhertinan bistîne û serîlêdana nû ji bo bicîhkirinê bişîne.

Rêbaz 5. Guhestina --recreate-pods bikar bînin

Bi key --recreate-pods hûn dikarin tiştê ku we di eslê xwe de plan kir ku hûn bi mifteyê bi dest bixin bigihîjin --force. Dê konteynir ji nû ve dest pê bike û, li gorî imagePullPolicy: Her dem ji bo nîşana herî paşîn siyasetê bike (li ser vê yekê di jêrnivîsa jor de bêtir), Kubernetes dê guhertoyek nû ya wêneyê dakêşîne û bide destpêkirin. Ev ê bi awayê çêtirîn neyê kirin: bêyî girtina StrategyType ya bicîhkirinê, ew ê ji nişkê ve hemî mînakên serîlêdana kevin qut bike û dest bi destpêkirina yên nû bike. Di dema ji nû ve destpêkirinê de, pergal dê nexebite, bikarhêner dê zirarê bibînin.

Di Kubernetes bixwe de, pirsgirêkek bi vî rengî jî demek dirêj hebû. Û niha, 4 sal piştî vekirinê Pirs, pirsgirêk hate rast kirin, û bi guhertoya 1.15 ya Kubernetes dest pê dike, şiyana ji nû ve destpêkirina podan xuya dike.

Helm tenê hemî serîlêdanan qut dike û konteynerên nû li nêzê xwe dide destpêkirin. Hûn nekarin di hilberînê de vê yekê bikin, da ku nebin sedema domdariya serîlêdanê. Ev tenê ji bo hewcedariyên pêşkeftinê hewce ye û tenê di hawîrdorên qonaxê de dikare were kirin.

Meriv çawa bi karanîna Helm guhertoya serîlêdanê nûve dike?

Em ê nirxên ku ji Helm re hatine şandin biguhezînin. Bi gelemperî, ev nirxên ku li şûna nîşana wêneyê têne veguheztin in. Di mijara herî paşîn de, ku bi gelemperî ji bo hawîrdorên nehilberî têne bikar anîn, agahdariya guhezbar annotasyonek e, ku ji bo Kubernetes bixwe bêkêr e, û ji bo Helm ew ê wekî nîşanek ji bo hewcedariya nûvekirina serîlêdanê tevbigere. Vebijarkên ji bo dagirtina nirxa şîrovekirinê:

  1. Nirxa Random bikaranîna fonksiyona standard - {{ randAlphaNum 6 }}.
    Hişyariyek heye: piştî her veqetandinê ku nexşeyek bi guhêrbarek wusa bikar tîne, nirxa şîrovekirinê dê bêhempa be, û Helm dê texmîn bike ku guhertin hene. Derket holê ku em ê her gav serîlêdanê ji nû ve bidin destpêkirin, her çend me guhertoya wê neguherandiye. Ev ne krîtîk e, ji ber ku dê demdirêj tune be, lê dîsa jî ne xweş e.
  2. Niha paste roj û dem - {{ .Release.Date }}.
    Guhertoyek mîna nirxek rasthatî ye ku bi guhêrbarek bêhempa ya domdar heye.
  3. Rêbazek rasttir bikar anîn e checksums. Ev SHA-ya wêneyê an SHA-ya peywira paşîn a di git de ye - {{ .Values.sha }}.
    Pêdivî ye ku ew bêne jimartin û şandin ji xerîdarê Helm re li aliyê gazîkirinê, mînakî li Jenkins. Ger serîlêdan guherî, wê hingê kontrolê dê biguhere. Ji ber vê yekê, Helm dê tenê dema ku hewce bike serîlêdanê nûve bike.

Werin em hewlên xwe kurt bikin

  • Helm guheztinan bi awayê herî hindik dagîrker çêdike, ji ber vê yekê her guhertinek di asta wêneya serîlêdanê de di Registry Docker de dê encamek nûvekirinê neke: Piştî ku ferman were darve kirin dê tiştek çê nebe.
  • Ключ --force ji bo sererastkirina serbestberdanên pirsgirêkî tê bikar anîn û bi nûvekirinên bi zorê re têkildar nabe.
  • Ключ --recreate-pods dê bi zorê serîlêdanan nûve bike, lê dê wiya bi rengek xirab bike: ew ê ji nişkê ve hemî konteyneran qut bike. Bikarhêner dê ji vê yekê cefayê bikişînin; divê hûn vê yekê di hilberînê de nekin.
  • Bi karanîna fermanê rasterast di koma Kubernetes de guhertinan bikin kubectl edit neke: em ê hevgirtinê bişkînin, û tevger dê li gorî guhertoya Helm cûda bibe.
  • Bi derketina guhertoya nû ya Helm re, gelek nuwaze derketine. Pirsgirêkên di depoya Helm de bi zimanek zelal têne vegotin, ew ê ji we re bibin alîkar ku hûn hûrguliyan fam bikin.
  • Zêdekirina annotasyonek biguhezbar li nexşeyek dê wê maqûltir bike. Ev ê bihêle ku hûn serîlêdanê bi rêkûpêk, bêyî wextê domandinê, derxînin.

Ramanek "aştiya cîhanê" ya ku di hemî warên jiyanê de kar dike: berî bikar anînê rêwerzan bixwînin, ne piştî. Tenê bi agahdariya bêkêmasî dê gengaz be ku pergalên pêbawer ava bikin û bikarhêneran kêfxweş bikin.

Girêdanên din ên têkildar:

  1. Nasîna bi Bêr 3
  2. Malpera fermî ya Helm
  3. Depoya Helm li ser GitHub
  4. 25 Amûrên Kêrhatî yên Kubernetes: Bicîhkirin û Rêvebirin

Ev rapor yekem car li @Kubernetes Konferansa ji hêla Mail.ru Cloud Solutions. Dîtinî видео performansên din û bibin aboneya ragihandinên bûyerê li ser Telegram Li dora Kubernetes li Mail.ru Group.

Source: www.habr.com

Add a comment