Cov cuab yeej Helm thiab nws cov pitfalls

Cov cuab yeej Helm thiab nws cov pitfalls
Typhon freight hauler tswvyim, Anton Swanepoel

Kuv lub npe yog Dmitry Sugrobov, Kuv yog tus tsim tawm ntawm Leroy Merlin. Hauv tsab xov xwm no kuv yuav qhia koj tias vim li cas Helm xav tau, nws ua haujlwm yooj yim li cas nrog Kubernetes, dab tsi tau hloov pauv hauv peb version, thiab yuav siv nws li cas los hloov kho cov ntawv thov hauv kev tsim khoom yam tsis muaj sijhawm poob.

Qhov no yog cov ntsiab lus los ntawm kev hais lus ntawm lub rooj sib tham @Kubernetes Conference by Mail.ru Huab Solutions - Yog tias koj tsis xav nyeem, saib video.

Vim li cas peb siv Kubernetes hauv kev tsim khoom

Leroy Merlin yog tus thawj coj hauv DIY khw muag khoom hauv tebchaws Russia thiab Europe. Peb lub tuam txhab muaj ntau tshaj li ib puas tus neeg tsim khoom, 33 tus neeg ua haujlwm sab hauv thiab ntau tus neeg tuaj xyuas hypermarkets thiab lub vev xaib. Txhawm rau ua kom lawv txhua tus muaj kev zoo siab, peb txiav txim siab ua raws li cov txheej txheem kev lag luam. Tsim cov ntawv thov tshiab siv microservice architecture; siv cov thawv cais tawm ib puag ncig thiab xyuas kom muaj kev xa khoom zoo; thiab siv Kubernetes rau orchestration. Tus nqi ntawm kev siv orchestrators yog pheej yig dua: tus naj npawb ntawm cov kws tshaj lij hauv kev siv thev naus laus zis tau loj hlob ntawm kev ua lag luam, thiab cov neeg muab kev pabcuam tau tshwm sim muab Kubernetes ua kev pabcuam.

Txhua yam uas Kubernetes ua, tau kawg, tuaj yeem ua rau lwm txoj hauv kev, piv txwv li, los ntawm kev npog qee qhov Jenkins thiab docker-compose nrog cov ntawv sau, tab sis vim li cas lub neej nyuaj yog tias muaj kev npaj ua tiav thiab txhim khu kev qha? Tias yog vim li cas peb tuaj rau Kubernetes thiab tau siv nws hauv kev tsim khoom rau ib xyoos tam sim no. Peb tam sim no muaj nees nkaum plaub lub Kubernetes pawg, cov laus tshaj plaws uas muaj hnub nyoog tshaj li ib xyoos, muaj txog ob puas pods.

Kev foom phem ntawm YAML cov ntaub ntawv loj hauv Kubernetes

Txhawm rau tso tawm microservice hauv Kubernetes, peb yuav tsim tsawg kawg tsib YAML cov ntaub ntawv: rau Kev Tshaj Tawm, Kev Pabcuam, Ingress, ConfigMap, Secrets - thiab xa lawv mus rau pawg. Rau daim ntawv thov tom ntej peb yuav sau tib lub pob ntawm jambs, nrog rau qhov thib peb peb yuav sau lwm tus, thiab lwm yam. Yog tias peb muab cov ntaub ntawv ntau ntxiv los ntawm tus lej ntawm ib puag ncig, peb yuav tau txais ntau pua cov ntaub ntawv, thiab qhov no tseem tsis tau coj mus rau hauv tus account dynamic ib puag ncig.

Cov cuab yeej Helm thiab nws cov pitfalls
Adam Reese, tus tswj hwm tseem ceeb ntawm Helm, tau qhia txog lub tswv yim ntawm "Kev loj hlob voj voog hauv Kubernetes", uas zoo li no:

  1. Luam YAML - luam ib daim ntawv YAML.
  2. Paste YAML - paste nws.
  3. Fix Indents - kho cov indents.
  4. Rov ua dua - rov ua dua.

Qhov kev xaiv ua haujlwm, tab sis koj yuav tsum luam cov ntaub ntawv YAML ntau zaus. Txhawm rau hloov lub voj voog no, Helm tau tsim.

Helm yog dab tsi

Firstly, Helm - tus thawj tswj pob, uas pab koj nrhiav thiab nruab cov kev pab cuam koj xav tau. Txhawm rau nruab, piv txwv li MongoDB, koj tsis tas yuav mus rau lub vev xaib official thiab rub tawm binaries, tsuas yog khiav cov lus txib. helm install stable/mongodb.

Thib ob, Helm - template cav, pab parameterize cov ntaub ntawv. Cia peb rov qab mus rau qhov xwm txheej nrog YAML cov ntaub ntawv hauv Kubernetes. Nws yooj yim dua los sau tib cov ntaub ntawv YAML, ntxiv qee qhov chaw rau nws, uas Helm yuav hloov cov txiaj ntsig. Ntawd yog, tsis yog cov txheej txheem loj ntawm scaffolds, yuav muaj ib txheej ntawm cov qauv uas yuav tsum tau hloov cov nqi ntawm lub sijhawm.

Thirdly, Helm - deployment tswv. Nrog nws koj tuaj yeem nruab, rov qab thiab hloov kho daim ntawv thov. Cia peb kawm seb yuav ua li cas.

Cov cuab yeej Helm thiab nws cov pitfalls

Yuav siv Helm li cas los xa koj cov ntawv thov

Cia peb nruab Helm tus thov kev pab ntawm koj lub computer, ua raws li tus nom cov lus qhia. Tom ntej no, peb yuav tsim ib txheej ntawm YAML cov ntaub ntawv. Hloov chaw ntawm qhov tshwj xeeb qhov tseem ceeb, peb yuav tawm ntawm qhov chaw, uas Helm yuav sau cov ntaub ntawv yav tom ntej. Ib txheej ntawm cov ntaub ntawv no yog hu ua Helm chart. Nws tuaj yeem xa mus rau Helm console tus neeg siv khoom hauv peb txoj kev:

  • qhia cov ntawv tais ceev tseg nrog cov qauv;
  • ntim cov archive rau hauv .tar thiab taw tes rau nws;
  • muab cov qauv tso rau hauv qhov chaw cia khoom tej thaj chaw deb thiab ntxiv qhov txuas mus rau qhov chaw cia khoom hauv Helm tus neeg siv khoom.

Koj kuj xav tau cov ntaub ntawv nrog qhov tseem ceeb - values.yaml. Cov ntaub ntawv los ntawm muaj yuav muab tso rau hauv lub template. Cia peb tsim thiab.

Cov cuab yeej Helm thiab nws cov pitfalls
Qhov thib ob version ntawm Helm muaj ib daim ntawv thov neeg rau zaub mov ntxiv - Tiller. Nws dai sab nraum Kubernetes thiab tos rau kev thov los ntawm Helm tus neeg siv khoom, thiab thaum hu, hloov cov nqi tsim nyog rau hauv tus qauv thiab xa mus rau Kubernetes.

Cov cuab yeej Helm thiab nws cov pitfalls
Helm 3 yog qhov yooj yim dua: es tsis txhob ua cov qauv ntawm lub server, cov ntaub ntawv tam sim no tau ua tiav tag nrho ntawm Helm tus neeg siv khoom thiab xa ncaj qha mus rau Kubernetes API. Qhov kev ua kom yooj yim no txhim kho pawg kev ruaj ntseg thiab ua kom yooj yim rau cov txheej txheem tawm.

Nws ua haujlwm li cas

Khiav cov lus txib helm install. Cia peb qhia lub npe ntawm daim ntawv thov tso tawm thiab muab txoj hauv kev rau values.yaml. Thaum kawg peb yuav qhia qhov chaw khaws cia uas daim ntawv qhia nyob thiab lub npe ntawm daim duab. Hauv qhov piv txwv, cov no yog "lmru" thiab "bestchart", feem.

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

Cov lus txib tuaj yeem ua tiav ib zaug, thaum rov ua dua install yuav tsum siv upgrade. Rau kev yooj yim, tsis txhob siv ob lo lus txib, koj tuaj yeem khiav cov lus txib upgrade nrog tus yuam sij ntxiv --install. Thaum ua tiav thawj zaug, Helm yuav xa cov lus txib rau nruab qhov tso tawm, thiab yuav hloov kho nws yav tom ntej.

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

Pitfalls ntawm deploying tshiab versions ntawm ib daim ntawv thov nrog Helm

Lub sijhawm no hauv zaj dab neeg, Kuv tab tom ua si Leej Twg Xav Ua Ib Tug Neeg Muaj Peev Xwm nrog cov neeg tuaj saib, thiab peb tab tom nrhiav seb yuav ua li cas thiaj li tau txais Helm hloov kho lub version ntawm lub app. Saib cov yees duab.

Thaum kuv tab tom kawm txog Helm ua haujlwm li cas, Kuv xav tsis thoob los ntawm tus cwj pwm coj txawv txawv thaum sim hloov kho cov ntawv sau ua haujlwm. Kuv tau hloov kho daim ntawv thov code, muab cov duab tshiab rau Docker npe, xa cov lus txib xa mus - thiab tsis muaj dab tsi tshwm sim. Hauv qab no yog qee txoj hauv kev tsis ua tiav tag nrho los hloov kho cov ntawv thov. Los ntawm kev kawm txhua tus ntawm lawv kom ntxaws ntxiv, koj pib nkag siab txog cov qauv sab hauv ntawm cov cuab yeej thiab cov laj thawj rau qhov tsis pom tseeb tus cwj pwm.

Txoj Kev 1. Tsis txhob hloov cov ntaub ntawv txij li lub sijhawm tso tawm kawg

Raws li cov lus hais mus official website Helm, "Cov kab kos Kubernetes tuaj yeem loj thiab nyuaj, yog li Helm sim tsis txhob kov dab tsi ntau dhau." Yog li ntawd, yog tias koj hloov kho qhov tseeb version ntawm daim ntawv thov duab hauv docker npe thiab khiav cov lus txib helm upgrade, ces tsis muaj dab tsi yuav tshwm sim. Helm yuav xav tias tsis muaj dab tsi hloov pauv thiab tsis tas yuav xa cov lus txib mus rau Kubernetes hloov kho daim ntawv thov.

Ntawm no thiab hauv qab no, qhov tseeb tag yog qhia tsuas yog ua piv txwv. Thaum koj qhia meej qhov cim npe no, Kubernetes yuav rub tawm cov duab los ntawm docker npe txhua lub sijhawm, tsis hais txog ntawm imagePullPolicy parameter. Kev siv qhov tseeb hauv kev tsim khoom yog qhov tsis xav tau thiab ua rau muaj kev phiv.

Txoj Kev 2. Hloov LABEL hauv daim duab

Raws li sau nyob rau hauv tib yam cov ntaub ntawv, "Helm tsuas yog hloov kho daim ntawv thov yog tias nws tau hloov txij li qhov kev tso tawm kawg." Ib qho kev xaiv zoo rau qhov no yuav zoo li hloov kho LABEL hauv daim duab docker nws tus kheej. Txawm li cas los xij, Helm tsis saib rau hauv daim ntawv thov cov duab thiab tsis muaj lub tswv yim txog kev hloov pauv rau lawv. Raws li, thaum hloov kho cov ntawv sau hauv daim duab, Helm yuav tsis paub txog lawv, thiab daim ntawv thov hloov tshiab yuav tsis raug xa mus rau Kubernetes.

Txoj Kev 3: Siv tus yuam sij --force

Cov cuab yeej Helm thiab nws cov pitfalls
Cia peb tig mus rau phau ntawv qhia thiab nrhiav tus yuam sij xav tau. Tus yuam sij ua rau qhov kev txiav txim siab tshaj plaws --force. Txawm hais tias lub npe pom tseeb, tus cwj pwm txawv ntawm qhov xav tau. Es tsis txhob yuam kev hloov kho daim ntawv thov, nws lub hom phiaj tiag tiag yog los kho qhov kev tso tawm uas nyob rau hauv FAILED xwm txheej. Yog tias koj tsis siv tus yuam sij no, koj yuav tsum tau ua cov lus txib ua ntu zus helm delete && helm install --replace. Nws raug nquahu kom siv tus yuam sij hloov --force, uas automates qhov kev ua tiav ntawm cov lus txib no. Xav paub ntau ntxiv hauv qhov no rub thov. Txhawm rau qhia Helm hloov kho daim ntawv thov version, hmoov tsis, tus yuam sij no yuav tsis ua haujlwm.

Txoj Kev 4. Hloov cov ntawv sau ncaj qha hauv Kubernetes

Cov cuab yeej Helm thiab nws cov pitfalls
Hloov kho daim ntawv lo ncaj qha hauv pawg siv cov lus txib kubectl edit - tswv yim phem. Qhov kev txiav txim no yuav ua rau tsis sib xws ntawm cov ntaub ntawv ntawm cov ntawv thov khiav thiab ib qho uas tau xa tuaj rau kev xa tawm. Tus cwj pwm ntawm Helm thaum xa mus rau qhov no txawv ntawm nws cov version: Helm 2 yuav tsis ua dab tsi, thiab Helm 3 yuav xa cov ntawv tshiab ntawm daim ntawv thov. Yuav kom nkag siab tias yog vim li cas, koj yuav tsum nkag siab tias Helm ua haujlwm li cas.

Helm ua haujlwm li cas?

Txhawm rau txiav txim siab tias daim ntawv thov tau hloov pauv txij li qhov kev tso tawm kawg, Helm tuaj yeem siv:

  • khiav daim ntawv thov hauv Kubernetes;
  • tshiab values.yaml thiab daim ntawv tam sim no;
  • Helm cov ntaub ntawv tso tawm sab hauv.

Rau qhov xav paub ntxiv: Helm khaws cov ntaub ntawv sab hauv ntawm qhov twg?Los ntawm kev ua tiav cov lus txib helm history, peb yuav tau txais tag nrho cov ntaub ntawv hais txog cov versions ntsia siv Helm.

Cov cuab yeej Helm thiab nws cov pitfalls
Kuj tseem muaj cov ncauj lus kom ntxaws txog cov qauv xa thiab cov nqi. Peb tuaj yeem thov nws:

Cov cuab yeej Helm thiab nws cov pitfalls
Hauv qhov thib ob version ntawm Helm, cov ntaub ntawv no nyob hauv tib lub npe qhov chaw uas Tiller tab tom khiav (kube-system los ntawm lub neej ntawd), hauv ConfigMap, cim nrog daim ntawv lo "OWNER = TILLER":

Cov cuab yeej Helm thiab nws cov pitfalls
Thaum lub thib peb version ntawm Helm tshwm sim, cov ntaub ntawv tsiv mus rau secrets, thiab mus rau tib lub npe qhov chaw uas daim ntawv thov tau khiav. Ua tsaug rau qhov no, nws tau dhau los ua tau los khiav ntau daim ntawv thov ib txhij hauv cov npe sib txawv nrog tib lub npe tso tawm. Nyob rau hauv lub thib ob version nws yog mob taub hau loj thaum namespaces cais tab sis muaj peev xwm cuam tshuam ib leeg.

Cov cuab yeej Helm thiab nws cov pitfalls

Thib ob Helm, thaum sim nkag siab seb puas yuav tsum tau hloov tshiab, tsuas yog siv ob qhov chaw ntawm cov ntaub ntawv: dab tsi tau muab rau nws tam sim no, thiab cov ntaub ntawv sab hauv hais txog kev tso tawm, uas nyob hauv ConfigMap.

Cov cuab yeej Helm thiab nws cov pitfalls
Thib peb Helm siv peb txoj kev sib koom ua ke: ntxiv rau cov ntaub ntawv ntawd, nws kuj tseem siv rau hauv daim ntawv thov uas tab tom khiav tam sim no hauv Kubernetes.

Cov cuab yeej Helm thiab nws cov pitfalls
Vim li no, Helm version qub yuav tsis ua dab tsi, vim nws tsis suav nrog cov ntaub ntawv thov hauv pawg, tab sis Helm 3 yuav tau txais cov kev hloov pauv thiab xa daim ntawv thov tshiab rau kev xa tawm.

Txoj kev 5. Siv cov --recreate-pods hloov

Nrog tus yuam sij --recreate-pods koj tuaj yeem ua tiav qhov koj tau npaj ua ntej kom ua tiav nrog tus yuam sij --force. Cov thawv ntim yuav rov pib dua thiab, raws li cov duabPullPolicy: Ib txwm txoj cai rau cov cim tshiab (ntxiv rau qhov no hauv cov lus hauv qab no saum toj no), Kubernetes yuav rub tawm thiab tso tawm cov duab tshiab. Qhov no yuav tsis ua rau qhov zoo tshaj plaws: yam tsis tau suav nrog StrategyType ntawm kev xa tawm, nws yuav sai sai tshem tawm tag nrho cov ntawv thov qub thiab pib tawm cov tshiab. Thaum lub sijhawm rov pib dua, lub kaw lus yuav tsis ua haujlwm, cov neeg siv yuav raug kev txom nyem.

Hauv Kubernetes nws tus kheej, qhov teeb meem zoo sib xws kuj muaj nyob rau lub sijhawm ntev. Thiab tam sim no, 4 xyoo tom qab qhib qhov teeb meem, qhov teeb meem tau raug kho, thiab pib nrog version 1.15 ntawm Kubernetes, lub peev xwm los yob-restart pods tshwm.

Helm tsuas tua txhua daim ntawv thov thiab tso cov thawv tshiab nyob ze. Koj tsis tuaj yeem ua qhov no hauv kev tsim khoom, thiaj li tsis ua rau lub sijhawm ua haujlwm. Qhov no tsuas yog xav tau rau kev tsim kho kev xav tau thiab tsuas yog tuaj yeem ua tau nyob rau hauv ib puag ncig theem.

Yuav hloov kho daim ntawv thov version siv Helm li cas?

Peb yuav hloov cov nqi xa mus rau Helm. Feem ntau, cov no yog cov txiaj ntsig uas tau hloov pauv hauv qhov chaw ntawm daim duab lossis. Nyob rau hauv cov ntaub ntawv ntawm qhov tseeb, uas yog feem ntau siv rau unproductive ib puag ncig, cov ntaub ntawv hloov tau yog ib qho annotation, uas tsis muaj txiaj ntsig rau Kubernetes nws tus kheej, thiab rau Helm nws yuav ua lub teeb liab rau qhov xav tau hloov kho daim ntawv thov. Options rau sau nyob rau hauv annotation tus nqi:

  1. Random nqi siv tus qauv ua haujlwm - {{ randAlphaNum 6 }}.
    Muaj qhov caveat: tom qab txhua qhov kev xa tawm siv daim ntawv qhia nrog qhov sib txawv, cov lus piav qhia tus nqi yuav txawv, thiab Helm yuav xav tias muaj kev hloov pauv. Nws hloov tawm tias peb yuav ib txwm rov pib dua daim ntawv thov, txawm tias peb tsis tau hloov nws version. Qhov no tsis yog qhov tseem ceeb, vim tias yuav tsis muaj sijhawm poob qis, tab sis nws tseem tsis txaus siab.
  2. Paste tam sim no hnub thiab sijhawm - {{ .Release.Date }}.
    Ib tug variant zoo ib yam li ib tug random nqi nrog ib tug mus tas li txawv txawv txawv.
  3. Ib txoj hauv kev zoo dua yog siv checksums. Qhov no yog SHA ntawm daim duab lossis SHA ntawm kev cog lus kawg hauv git - {{ .Values.sha }}.
    Lawv yuav tsum raug suav thiab xa mus rau tus neeg siv khoom Helm ntawm sab hu, piv txwv li hauv Jenkins. Yog tias daim ntawv thov tau hloov, ces daim tshev yuav hloov. Yog li ntawd, Helm tsuas yog hloov kho daim ntawv thov thaum xav tau.

Cia peb xaus peb qhov kev sim

  • Helm ua rau muaj kev hloov pauv tsawg kawg nkaus, yog li txhua qhov kev hloov pauv ntawm daim ntawv thov duab theem hauv Docker Registry yuav tsis ua rau muaj kev hloov tshiab: tsis muaj dab tsi yuav tshwm sim tom qab cov lus txib raug tua.
  • Ntsiab --force siv los kho cov teeb meem tso tawm thiab tsis cuam tshuam nrog kev hloov tshiab yuam kev.
  • Ntsiab --recreate-pods yuav yuam kev hloov kho daim ntawv thov, tab sis yuav ua nws hauv txoj kev vandal: nws yuav sai sai tua tag nrho cov ntim. Cov neeg siv yuav raug kev txom nyem los ntawm qhov no; koj yuav tsum tsis txhob ua qhov no hauv kev tsim khoom.
  • Ncaj qha hloov pauv rau Kubernetes pawg siv cov lus txib kubectl edit Tsis txhob: peb yuav ua txhaum qhov sib xws, thiab tus cwj pwm yuav txawv nyob ntawm qhov version ntawm Helm.
  • Nrog rau kev tso tawm ntawm Helm version tshiab, ntau yam nuances tau tshwm sim. Cov teeb meem hauv Helm repository tau piav qhia ua lus meej, lawv yuav pab koj nkag siab cov ntsiab lus.
  • Ntxiv cov lus piav qhia kho tau rau hauv daim ntawv qhia yuav ua rau nws hloov tau yooj yim dua. Qhov no yuav cia koj dov tawm daim ntawv thov kom raug, tsis muaj sijhawm poob.

Ib qho "kev thaj yeeb hauv ntiaj teb" xav tias ua haujlwm hauv txhua qhov ntawm lub neej: nyeem cov lus qhia ua ntej siv, tsis yog tom qab. Tsuas yog nrog cov ntaub ntawv tiav nws thiaj li ua tau los tsim kom muaj kev ntseeg siab thiab ua rau cov neeg siv khoom zoo siab.

Lwm yam txuas txuas:

  1. Paub nrog Helm 3
  2. Helm official lub website
  3. Helm repository ntawm GitHub
  4. 25 Cov Cuab Yeej Siv Kubernetes: Kev xa tawm thiab kev tswj hwm

Daim ntawv tshaj tawm no tau nthuav tawm thawj zaug ntawm @Kubernetes Conference los ntawm Mail.ru Huab Solutions. Saib video lwm yam kev ua yeeb yam thiab sau npe rau cov lus tshaj tawm ntawm Telegram Nyob ib ncig ntawm Kubernetes ntawm Mail.ru Group.

Tau qhov twg los: www.hab.com

Ntxiv ib saib