L-apparat Helm u l-iżvantaġġi tiegħu

L-apparat Helm u l-iżvantaġġi tiegħu
Kunċett tat-trasport tal-merkanzija Typhon, Anton Swanepoel

Jisimni Dmitry Sugrobov, jien żviluppatur f'Leroy Merlin. F'dan l-artikolu ser ngħidlek għaliex Helm huwa meħtieġ, kif jissimplifika x-xogħol ma 'Kubernetes, x'inbidel fit-tielet verżjoni, u kif tużah biex taġġorna l-applikazzjonijiet fil-produzzjoni mingħajr waqfien.

Dan huwa sommarju bbażat fuq diskors waqt konferenza Konferenza @Kubernetes by Mail.ru Soluzzjonijiet Cloud — jekk ma tridx taqra, ara l-video.

Għaliex nużaw Kubernetes fil-produzzjoni

Leroy Merlin huwa mexxej fis-suq tal-bejgħ bl-imnut DIY fir-Russja u l-Ewropa. Il-kumpanija tagħna għandha aktar minn mitt żviluppatur, 33 impjegat intern u numru kbir ta 'nies li jżuru l-ipermerkati u l-websajt. Sabiex nagħmluhom kollha kuntenti, iddeċidejna li nsegwu approċċi standard tal-industrija. Żviluppa applikazzjonijiet ġodda bl-użu ta' arkitettura ta' mikroservizzi; uża kontenituri biex tiżola l-ambjenti u tiżgura kunsinna xierqa; u uża Kubernetes għall-orkestrazzjoni. Il-prezz tal-użu tal-orkestraturi qed isir orħos malajr: in-numru ta 'inġiniera profiċjenti fit-teknoloġija qed jikber fis-suq, u l-fornituri qed jidhru joffru Kubernetes bħala servizz.

Dak kollu li jagħmel Kubernetes, ovvjament, jista 'jsir b'modi oħra, pereżempju, billi tkopri xi Jenkins u docker-compose bi skripts, imma għaliex tikkomplika l-ħajja jekk ikun hemm soluzzjoni lesta u affidabbli? Huwa għalhekk li ġejna għal Kubernetes u ilna nużawh fil-produzzjoni għal sena issa. Bħalissa għandna erbgħa u għoxrin cluster Kubernetes, l-eqdem minnhom għandu aktar minn sena, b'madwar mitejn imżiewed.

Is-saħta ta' fajls YAML kbar f'Kubernetes

Biex tniedi mikroservizz f'Kubernetes, se noħolqu mill-inqas ħames fajls YAML: għal Deployment, Service, Ingress, ConfigMap, Sigrieti - u nibagħtuhom lill-cluster. Għall-applikazzjoni li jmiss se niktbu l-istess pakkett ta 'jambs, bit-tielet wieħed se niktbu ieħor, eċċ. Jekk immoltiplika n-numru ta 'dokumenti bin-numru ta' ambjenti, aħna diġà nġibu mijiet ta 'fajls, u dan għadu mhux qed iqis ambjenti dinamiċi.

L-apparat Helm u l-iżvantaġġi tiegħu
Adam Reese, il-mantenitur ewlieni ta' Helm, introduċa l-kunċett ta' "Ċiklu ta' Żvilupp f'Kubernetes", li tidher bħal din:

  1. Ikkopja YAML - tikkopja fajl YAML.
  2. Paste YAML - paste it.
  3. Waħħal l-inċiżi - jiffissa l-inċiżi.
  4. Irrepeti - erġa rrepeti.

L-għażla taħdem, iżda trid tikkopja l-fajls YAML ħafna drabi. Biex jinbidel dan iċ-ċiklu, Helm ġie ivvintat.

X'inhu Helm

L-ewwelnett, Helm - maniġer tal-pakketti, li jgħinek issib u tinstalla l-programmi li għandek bżonn. Biex tinstalla, pereżempju, MongoDB, m'għandekx bżonn tmur fil-websajt uffiċjali u tniżżel binarji, sempliċement mexxi l-kmand helm install stable/mongodb.

It-tieni, Helm - magna tal-mudell, jgħin biex jiġu parametrizzati l-fajls. Ejja nerġgħu lura għas-sitwazzjoni bil-fajls YAML f'Kubernetes. Huwa aktar faċli li tikteb l-istess fajl YAML, żid xi placeholders miegħu, li fih Helm se jissostitwixxi l-valuri. Jiġifieri, minflok sett kbir ta 'scaffolds, se jkun hemm sett ta' mudelli li fihom il-valuri meħtieġa jiġu sostitwiti fil-ħin it-tajjeb.

It-tielet, Helm - kaptan tal-iskjerament. Biha tista' tinstalla, twaqqaf u taġġorna l-applikazzjonijiet. Ejja nsemmu kif tagħmel dan.

L-apparat Helm u l-iżvantaġġi tiegħu

Kif tuża Helm biex tuża l-applikazzjonijiet tiegħek stess

Ejja ninstallaw il-klijent Helm fuq il-kompjuter tiegħek, wara l-uffiċjal istruzzjonijiet. Sussegwentement, aħna ser noħolqu sett ta 'fajls YAML. Minflok ma nispeċifikaw valuri speċifiċi, se nħallu placeholders, li Helm jimla bl-informazzjoni fil-futur. Sett ta' fajls bħal dawn jissejjaħ chart Helm. Jista' jintbagħat lill-klijent tal-console Helm fi tliet modi:

  • indika folder b'mudelli;
  • ippakkja l-arkivju f'.tar u ppunta lejh;
  • poġġi l-mudell f'repożitorju remot u żid link għar-repożitorju fil-klijent Helm.

Għandek bżonn ukoll fajl b'valuri - values.yaml. Id-dejta minn hemm se tiddaħħal fil-mudell. Ejja noħolquha wkoll.

L-apparat Helm u l-iżvantaġġi tiegħu
It-tieni verżjoni ta' Helm għandha applikazzjoni addizzjonali ta' server - Tiller. Hija tiddendel barra Kubernetes u tistenna talbiet mill-klijent Helm, u meta tissejjaħ, tissostitwixxi l-valuri meħtieġa fil-mudell u tibgħatha lil Kubernetes.

L-apparat Helm u l-iżvantaġġi tiegħu
Helm 3 huwa aktar sempliċi: minflok ma tipproċessa mudelli fuq is-server, l-informazzjoni issa hija pproċessata kompletament fuq in-naħa tal-klijent Helm u mibgħuta direttament lill-API Kubernetes. Din is-simplifikazzjoni ttejjeb is-sigurtà tal-clusters u tiffaċilita l-iskema tat-tnedija.

Kif jaħdem kollox

Mexxi l-kmand helm install. Ejja nindika l-isem tar-rilaxx tal-applikazzjoni u agħti t-triq għal values.yaml. Fl-aħħar se nindikaw ir-repożitorju li fih tinsab iċ-ċart u l-isem taċ-ċart. Fl-eżempju, dawn huma "lmru" u "bestchart", rispettivament.

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

Il-kmand jista 'jiġi esegwit darba biss, meta jerġa' jiġi esegwit minflok install jeħtieġ li tuża upgrade. Għal sempliċità, minflok żewġ kmandi, tista 'taħdem il-kmand upgrade b'ċavetta addizzjonali --install. Meta jiġi eżegwit għall-ewwel darba, Helm jibgħat kmand biex jinstalla r-rilaxx, u jaġġornah fil-futur.

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

In-nases tal-iskjerament ta' verżjonijiet ġodda ta' applikazzjoni ma' Helm

F'dan il-punt fl-istorja, qed nilgħab lil Min Irid ikun Miljunarju mal-udjenza, u qed nifhmu kif inġibu lil Helm jaġġorna l-verżjoni tal-app. Ara l-filmat.

Meta kont qed nitgħallem kif jaħdem Helm, kont sorpriż b'imġieba stramba meta pprova naġġorna verżjonijiet ta' applikazzjonijiet li qed jaħdmu. Aġġornajt il-kodiċi tal-applikazzjoni, tellajt immaġni ġdida fir-reġistru Docker, bgħatt il-kmand tal-iskjerament - u ma ġara xejn. Hawn taħt hemm xi modi mhux għal kollox ta' suċċess biex taġġorna l-applikazzjonijiet. Billi tistudja kull wieħed minnhom f'aktar dettall, tibda tifhem l-istruttura interna tal-istrument u r-raġunijiet għal din l-imġieba mhux ovvja.

Metodu 1. Tibdilx l-informazzjoni mill-aħħar tnedija

Kif jgħid sit uffiċjali Helm, "Iċ-ċarts ta 'Kubernetes jistgħu jkunu kbar u kumplessi, għalhekk Helm jipprova ma jmiss xejn wisq." Għalhekk, jekk taġġorna l-aħħar verżjoni tal-immaġni tal-applikazzjoni fir-reġistru docker u tmexxi l-kmand helm upgrade, allura ma jiġri xejn. Helm se jaħseb li xejn ma nbidel u m'hemmx bżonn li jibgħat kmand lil Kubernetes biex taġġorna l-applikazzjoni.

Hawn u hawn taħt, l-aħħar tikketta tidher biss bħala eżempju. Meta tispeċifika din it-tikketta, Kubernetes se tniżżel l-immaġni mir-reġistru docker kull darba, irrispettivament mill-parametru imagePullPolicy. L-użu tal-aħħar fil-produzzjoni mhuwiex mixtieq u jikkawża effetti sekondarji.

Metodu 2. Aġġorna TIKKETTA fl-immaġni

Kif miktub fl-istess dokumentazzjoni, "Helm jaġġorna applikazzjoni biss jekk din tkun inbidlet mill-aħħar rilaxx." Għażla loġika għal dan tidher li tkun taġġorna t-TIKKETTA fl-immaġni tad-docker innifsu. Madankollu, Helm ma jħarisx lejn l-immaġini tal-applikazzjoni u m'għandu l-ebda idea dwar xi bidliet għalihom. Għaldaqstant, meta taġġorna t-tikketti fl-immaġni, Helm mhux se jkun jaf dwarhom, u l-kmand tal-aġġornament tal-applikazzjoni mhux se jintbagħat lil Kubernetes.

Metodu 3: Uża ċavetta --force

L-apparat Helm u l-iżvantaġġi tiegħu
Ejja nduru għall-manwali u nfittxu ċ-ċavetta meħtieġa. Iċ-ċavetta tagħmel l-aktar sens --force. Minkejja l-isem ovvju, l-imġieba hija differenti minn dik mistennija. Minflok ma tisforza aġġornament tal-applikazzjoni, l-iskop reali tagħha huwa li terġa 'tiġi rrestawrata rilaxx li jkun fl-istatus ta' FAIL. Jekk ma tużax din iċ-ċavetta, trid tesegwixxi l-kmandi b'mod sekwenzjali helm delete && helm install --replace. Huwa ssuġġerit li tuża ċ-ċavetta minflok --force, li awtomat l-eżekuzzjoni sekwenzjali ta 'dawn il-kmandi. Aktar informazzjoni f'dan talba tal-ġibda. Sabiex tgħid lil Helm biex taġġorna l-verżjoni tal-applikazzjoni, sfortunatament, din iċ-ċavetta mhux se taħdem.

Metodu 4. Ibdel it-tikketti direttament f'Kubernetes

L-apparat Helm u l-iżvantaġġi tiegħu
Aġġornament tat-tikketta direttament fil-cluster bl-użu tal-kmand kubectl edit - idea ħażina. Din l-azzjoni se twassal għal inkonsistenza fl-informazzjoni bejn l-applikazzjoni li qed taħdem u dik li oriġinarjament intbagħtet għall-iskjerament. L-imġieba ta 'Helm waqt l-iskjerament f'dan il-każ hija differenti mill-verżjoni tiegħu: Helm 2 mhu se jagħmel xejn, u Helm 3 se juża l-verżjoni l-ġdida tal-applikazzjoni. Biex tifhem għaliex, trid tifhem kif jaħdem Helm.

Kif jaħdem Helm?

Biex tiddetermina jekk applikazzjoni nbidlitx mill-aħħar rilaxx tagħha, Helm jista' juża:

  • tmexxi l-applikazzjoni fil-Kubernetes;
  • valuri ġodda.yaml u chart kurrenti;
  • Informazzjoni dwar ir-rilaxx intern ta' Helm.

Għal dawk li huma aktar kurjużi: fejn jaħżen Helm informazzjoni interna dwar ir-rilaxxi?Billi tesegwixxi l-kmand helm history, aħna se tikseb l-informazzjoni kollha dwar il-verżjonijiet installati bl-użu ta 'Helm.

L-apparat Helm u l-iżvantaġġi tiegħu
Hemm ukoll informazzjoni dettaljata dwar il-mudelli u l-valuri mibgħuta. Nistgħu nitolbuha:

L-apparat Helm u l-iżvantaġġi tiegħu
Fit-tieni verżjoni ta’ Helm, din l-informazzjoni tinsab fl-istess spazju tal-isem fejn qed jaħdem Tiller (kube-system b’mod awtomatiku), fil-ConfigMap, immarkat bit-tikketta “OWNER=TILLER”:

L-apparat Helm u l-iżvantaġġi tiegħu
Meta t-tielet verżjoni ta 'Helm dehret, l-informazzjoni mċaqalqa għal sigrieti, u għall-istess namespace fejn kienet qed taħdem l-applikazzjoni. Grazzi għal dan, sar possibbli li jitħaddmu diversi applikazzjonijiet simultanjament fi namespaces differenti bl-istess isem ta 'rilaxx. Fit-tieni verżjoni kienet uġigħ ta’ ras serju meta l-ispazji tal-isem huma iżolati iżda jistgħu jinfluwenzaw lil xulxin.

L-apparat Helm u l-iżvantaġġi tiegħu

It-tieni Helm, meta jipprova jifhem jekk huwiex meħtieġ aġġornament, juża biss żewġ sorsi ta 'informazzjoni: dak li huwa pprovdut lilu issa, u informazzjoni interna dwar rilaxxi, li tinsab fil-ConfigMap.

L-apparat Helm u l-iżvantaġġi tiegħu
It-tielet Helm juża strateġija ta’ amalgamazzjoni bi tliet direzzjonijiet: minbarra dik l-informazzjoni, tqis ukoll l-applikazzjoni li qed taħdem bħalissa f’Kubernetes.

L-apparat Helm u l-iżvantaġġi tiegħu
Għal din ir-raġuni, il-verżjoni l-antika ta 'Helm ma tagħmel xejn, peress li ma tqisx l-informazzjoni tal-applikazzjoni fil-cluster, iżda Helm 3 se jirċievi l-bidliet u jibgħat l-applikazzjoni l-ġdida għall-iskjerament.

Metodu 5. Uża l-iswiċċ --recreate-pods

B'ċavetta --recreate-pods tista 'tikseb dak li oriġinarjament ippjanajt li tikseb biċ-ċavetta --force. Il-kontenituri se jerġgħu jibdew u, skont l-imagePullPolicy: Dejjem politika għall-aħħar tikketta (aktar dwar dan fin-nota ta 'qiegħ il-paġna ta' hawn fuq), Kubernetes se tniżżel u tniedi verżjoni ġdida tal-immaġni. Dan mhux se jsir bl-aħjar mod: mingħajr ma jittieħed kont tat-Tip ta' Strateġija ta' skjerament, itfi f'daqqa l-istanzi kollha ta' applikazzjoni qodma u tibda tniedi oħrajn ġodda. Waqt il-bidu mill-ġdid, is-sistema mhux se taħdem, l-utenti jsofru.

Fil-Kubernetes innifsu, problema simili kienet teżisti wkoll għal żmien twil. U issa, 4 snin wara l-ftuħ Kwistjoni, il-problema ġiet iffissata, u tibda bil-verżjoni 1.15 ta 'Kubernetes, tidher il-kapaċità li l-imżiewed roll-restart.

Helm sempliċement jitfi l-applikazzjonijiet kollha u jniedi kontenituri ġodda fil-qrib. Ma tistax tagħmel dan fil-produzzjoni, sabiex ma tikkawżax waqfien tal-applikazzjoni. Dan huwa meħtieġ biss għall-ħtiġijiet ta 'żvilupp u jista' jsir biss f'ambjenti tal-palk.

Kif taġġorna l-verżjoni tal-applikazzjoni billi tuża Helm?

Se nibdlu l-valuri mibgħuta lil Helm. Tipikament, dawn huma valuri li jiġu sostitwiti minflok it-tikketta tal-immaġni. Fil-każ ta 'l-aħħar, li ħafna drabi jintuża għal ambjenti mhux produttivi, l-informazzjoni li tista' tinbidel hija annotazzjoni, li hija inutli għal Kubernetes innifsu, u għal Helm se taġixxi bħala sinjal għall-ħtieġa li taġġorna l-applikazzjoni. Għażliet għall-mili tal-valur tal-annotazzjoni:

  1. Valur każwali bl-użu tal-funzjoni standard - {{ randAlphaNum 6 }}.
    Hemm twissija: wara kull skjerament bl-użu ta 'chart b'tali varjabbli, il-valur tal-annotazzjoni se jkun uniku, u Helm jassumi li hemm bidliet. Jirriżulta li aħna dejjem se nibdew mill-ġdid l-applikazzjoni, anki jekk ma nbiddlux il-verżjoni tagħha. Dan mhuwiex kritiku, peress li mhux se jkun hemm ħin ta 'waqfien, iżda għadu spjaċevoli.
  2. Pejst kurrenti data u ħin - {{ .Release.Date }}.
    Varjant huwa simili għal valur każwali b'varjabbli permanenti uniku.
  3. Mod aktar korrett huwa li tuża checksums. Dan huwa s-SHA tal-immaġini jew is-SHA tal-aħħar impenn fil-git - {{ .Values.sha }}.
    Ikunu jeħtieġ li jingħaddu u jintbagħtu lill-klijent Helm min-naħa tas-sejħa, pereżempju f'Jenkins. Jekk l-applikazzjoni nbidlet, allura ċ-checksum tinbidel. Għalhekk, Helm se jaġġorna l-applikazzjoni biss meta jkun meħtieġ.

Ejja nġabru fil-qosor it-tentattivi tagħna

  • Helm jagħmel bidliet bl-inqas mod invażiv, għalhekk kwalunkwe bidla fil-livell tal-immaġni tal-applikazzjoni fir-Reġistru Docker ma tirriżultax f'aġġornament: ma jiġri xejn wara li jiġi esegwit il-kmand.
  • Ewlenin --force użat biex jirrestawra rilaxxi problematiċi u mhux assoċjat ma 'aġġornamenti sfurzati.
  • Ewlenin --recreate-pods se jaġġorna bil-qawwa l-applikazzjonijiet, iżda se jagħmel dan b'mod vandalu: se jitfi f'daqqa l-kontenituri kollha. L-utenti se jbatu minn dan; m'għandekx tagħmel dan fil-produzzjoni.
  • Agħmel bidliet direttament fil-cluster Kubernetes billi tuża l-kmand kubectl edit m'għandekx: aħna nkissru l-konsistenza, u l-imġieba se tvarja skont il-verżjoni ta 'Helm.
  • Bir-rilaxx tal-verżjoni l-ġdida ta' Helm, dehru ħafna sfumaturi. Kwistjonijiet fir-repożitorju Helm huma deskritti b'lingwaġġ ċar, dawn jgħinuk tifhem id-dettalji.
  • Iż-żieda ta' annotazzjoni editjabbli ma' chart tagħmilha aktar flessibbli. Dan jippermettilek li toħroġ l-applikazzjoni b'mod korrett, mingħajr ħin ta' waqfien.

Ħsieb ta '"paċi dinjija" li jaħdem fl-oqsma kollha tal-ħajja: aqra l-istruzzjonijiet qabel l-użu, mhux wara. Biss b'informazzjoni kompleta se jkun possibbli li jinbnew sistemi affidabbli u l-utenti jkunu kuntenti.

Links oħra relatati:

  1. Konoxxenza ma' Helm 3
  2. Il-websajt uffiċjali ta' Helm
  3. Repożitorju tat-Tmun fuq GitHub
  4. 25 Għodod Kubernetes Utli: Skjerament u Ġestjoni

Dan ir-rapport ġie ppreżentat għall-ewwel darba fi Konferenza @Kubernetes minn Mail.ru Cloud Solutions. Ħares video wirjiet oħra u abbona għall-avviżi tal-avvenimenti fuq Telegram Madwar Kubernetes fil-Grupp Mail.ru.

Sors: www.habr.com

Żid kumment