Aparèy Helm la ak enkonvenyans li yo

Aparèy Helm la ak enkonvenyans li yo
Typhon freight transporteur konsèp, Anton Swanepoel

Non mwen se Dmitry Sugrobov, mwen se yon pwomotè nan Leroy Merlin. Nan atik sa a mwen pral di w poukisa Helm nesesè, ki jan li senplifye travay ak Kubernetes, ki sa ki te chanje nan twazyèm vèsyon an, ak ki jan yo sèvi ak li yo mete ajou aplikasyon yo nan pwodiksyon san D '.

Sa a se yon rezime ki baze sou yon diskou nan yon konferans Konferans @Kubernetes by Mail.ru Cloud Solutions - Si ou pa vle li, gade videyo a.

Poukisa nou itilize Kubernetes nan pwodiksyon

Leroy Merlin se yon lidè nan mache an detay brikoleur nan Larisi ak Ewòp. Konpayi nou an gen plis pase yon santèn devlopè, 33 anplwaye entèn ak yon gwo kantite moun ki vizite hypermarché ak sit entènèt la. Pou fè yo tout kontan, nou deside swiv apwòch estanda endistri yo. Devlope nouvo aplikasyon lè l sèvi avèk achitekti mikwosèvis; sèvi ak resipyan yo izole anviwònman yo epi asire livrezon apwopriye; epi sèvi ak Kubernetes pou òkestrasyon. Pri pou sèvi ak orchestrators ap vin pi bon mache rapidman: kantite enjenyè konpetan nan teknoloji a ap grandi sou mache a, epi founisè yo ap parèt ofri Kubernetes kòm yon sèvis.

Tout sa ki Kubernetes fè, nan kou, ka fè nan lòt fason, pou egzanp, pa kouvri kèk Jenkins ak docker-konpoze ak scripts, men poukisa konplike lavi si gen yon solisyon pare-fè ak serye? Se poutèt sa nou te vin nan Kubernetes epi yo te itilize li nan pwodiksyon pou yon ane kounye a. Kounye a nou gen vennkat gwoup Kubernetes, pi ansyen an ki gen plis pase yon ane, ak anviwon desan gous.

Madichon an nan gwo dosye YAML nan Kubernetes

Pou lanse yon mikwosèvis nan Kubernetes, nou pral kreye omwen senk fichye YAML: pou Deplwaman, Sèvis, Ingress, ConfigMap, Sekrè - epi voye yo nan gwoup la. Pou pwochen aplikasyon an nou pral ekri menm pake jamb la, ak twazyèm lan nou pral ekri yon lòt, elatriye. Si nou miltipliye kantite dokiman pa kantite anviwònman, nou pral deja jwenn dè santèn de dosye, e sa a poko pran an kont anviwònman dinamik.

Aparèy Helm la ak enkonvenyans li yo
Adam Reese, mentè debaz Helm, te prezante konsèp "Sik Devlopman nan Kubernetes", ki sanble sa a:

  1. Kopi YAML - kopye yon dosye YAML.
  2. Kole YAML - kole li.
  3. Ranje Indents - ranje indents.
  4. Repete - repete ankò.

Opsyon an ap travay, men ou dwe kopye dosye YAML yo anpil fwa. Pou chanje sik sa a, Helm te envante.

Ki sa ki Helm

Premyèman, Helm - manadjè pake, ki ede w jwenn ak enstale pwogram ou bezwen yo. Pou enstale, pou egzanp, MongoDB, ou pa bezwen ale nan sit entènèt ofisyèl la ak telechaje binè, jis kouri lòd la. helm install stable/mongodb.

Dezyèmman, Helm - motè modèl, ede paramèt fichye yo. Ann retounen nan sitiyasyon an ak dosye YAML nan Kubernetes. Li pi fasil pou w ekri menm fichye YAML a, ajoute kèk espas pou li, kote Helm pral ranplase valè yo. Sa vle di, olye pou yo yon seri gwo echafodaj, pral gen yon seri modèl nan ki valè yo mande yo pral ranplase nan bon moman an.

Twazyèmman, Helm - mèt deplwaman. Avèk li ou ka enstale, rollback ak ajou aplikasyon yo. Ann chèche konnen ki jan fè sa.

Aparèy Helm la ak enkonvenyans li yo

Kouman pou itilize Helm pou deplwaye aplikasyon pwòp ou yo

Ann enstale kliyan an Helm sou òdinatè w lan, swiv ofisyèl la enstriksyon. Apre sa, nou pral kreye yon seri dosye YAML. Olye pou yo espesifye valè espesifik, nou pral kite kote ki gen plas, ki Helm pral ranpli ak enfòmasyon nan lavni. Yo rele yon seri dosye sa yo yon tablo Helm. Li ka voye bay kliyan an konsole Helm nan twa fason:

  • endike yon katab ak modèl;
  • pake achiv la nan yon .tar epi lonje dwèt sou li;
  • mete modèl la nan yon depo aleka epi ajoute yon lyen nan depo a nan kliyan an Helm.

Ou bezwen tou yon dosye ki gen valè - values.yaml. Done ki soti nan yo pral antre nan modèl la. Ann kreye li tou.

Aparèy Helm la ak enkonvenyans li yo
Dezyèm vèsyon Helm gen yon aplikasyon sèvè adisyonèl - Tiller. Li pandye deyò Kubernetes epi tann pou demann nan men kliyan an Helm, epi lè yo rele li, ranplase valè ki nesesè yo nan modèl la epi voye li bay Kubernetes.

Aparèy Helm la ak enkonvenyans li yo
Helm 3 se pi senp: olye pou yo trete modèl sou sèvè a, enfòmasyon yo kounye a trete antyèman sou bò kliyan Helm epi yo voye dirèkteman nan API Kubernetes. Senplifikasyon sa a amelyore sekirite gwoup la epi fasilite konplo lansman an.

Ki jan li tout travay

Kouri lòd la helm install. Ann endike non lage aplikasyon an epi bay chemen values.yaml. Nan fen a nou pral endike depo a nan ki tablo a sitiye ak non an nan tablo a. Nan egzanp lan, sa yo se "lmru" ak "bestchart", respektivman.

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

Kòmandman an ka egzekite sèlman yon fwa, lè egzekite ankò olye install bezwen itilize upgrade. Pou senplisite, olye pou yo de kòmandman, ou ka kouri lòd la upgrade ak kle adisyonèl --install. Lè egzekite la pou premye fwa, Helm pral voye yon lòd pou enstale liberasyon an, epi li pral mete ajou li nan lavni.

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

Enkonvenyans nan deplwaye nouvo vèsyon yon aplikasyon ak Helm

Nan pwen sa a nan istwa a, mwen ap jwe Who Wants to Be a Millionaire ak odyans lan, epi nou ap chèche konnen ki jan yo fè Helm mete ajou vèsyon an nan app a. Gade videyo a.

Lè m t ap aprann kijan Helm travay, mwen te sezi pa yon konpòtman etranj lè m t ap eseye mete ajou vèsyon aplikasyon pou kouri. Mwen mete ajou kòd aplikasyon an, telechaje yon nouvo imaj nan rejis Docker, voye lòd deplwaman an - e anyen pa rive. Anba a gen kèk fason ki pa totalman siksè pou mete ajou aplikasyon yo. Lè w etidye chak nan yo an plis detay, ou kòmanse konprann estrikti entèn enstriman an ak rezon ki fè konpòtman sa a pa evidan.

Metòd 1. Pa chanje enfòmasyon depi dènye lansman an

Kòm li di sit entènèt ofisyèl Helm, "Tablo Kubernetes yo ka gwo ak konplèks, kidonk Helm eseye pa manyen anyen twòp." Se poutèt sa, si ou mete ajou vèsyon an dènye nan imaj aplikasyon an nan rejis la Docker epi kouri lòd la helm upgrade, Lè sa a, pa gen anyen ki pral rive. Helm pral panse ke pa gen anyen ki chanje epi pa gen okenn bezwen voye yon lòd bay Kubernetes mete ajou aplikasyon an.

Isit la ak anba a, dènye tag la montre sèlman kòm yon egzanp. Lè ou presize tag sa a, Kubernetes pral telechaje imaj la nan rejis Docker a chak fwa, kèlkeswa paramèt imagePullPolicy la. Sèvi ak dènye nan pwodiksyon se endezirab ak lakòz efè segondè.

Metòd 2. Mete ajou LABEL nan imaj

Jan sa ekri nan menm bagay la dokiman, "Helm pral sèlman mete ajou yon aplikasyon si li te chanje depi dènye lage a." Yon opsyon ki lojik pou sa a ta sanble ap mete ajou LABEL la nan imaj la Docker tèt li. Sepandan, Helm pa gade nan imaj aplikasyon yo epi li pa gen okenn lide sou okenn chanjman nan yo. An konsekans, lè mete ajou etikèt nan imaj la, Helm pa pral konnen sou yo, epi yo pa pral voye lòd aktyalizasyon aplikasyon an bay Kubernetes.

Metòd 3: Sèvi ak yon kle --force

Aparèy Helm la ak enkonvenyans li yo
Ann ale nan manyèl yo epi chèche kle ki nesesè yo. Kle a fè plis sans --force. Malgre non an evidan, konpòtman an diferan de espere. Olye pou yo fòse yon ajou aplikasyon, objektif reyèl li se retabli yon lage ki nan estati FAILED. Si ou pa sèvi ak kle sa a, ou bezwen egzekite kòmandman yo sekans helm delete && helm install --replace. Li sijere pou itilize kle a pito --force, ki otomatize ekzekisyon an sekans nan kòmandman sa yo. Plis enfòmasyon nan sa a rale demann. Pou kapab di Helm mete ajou vèsyon aplikasyon an, malerezman, kle sa a pa pral travay.

Metòd 4. Chanje etikèt dirèkteman nan Kubernetes

Aparèy Helm la ak enkonvenyans li yo
Mete ajou etikèt dirèkteman nan gwoup la lè l sèvi avèk lòd la kubectl edit - move lide. Aksyon sa a pral mennen nan enkonsistans nan enfòmasyon ant aplikasyon an ap kouri ak youn nan ki te orijinèlman voye pou deplwaman. Konpòtman Helm pandan deplwaman nan ka sa a diferan de vèsyon li yo: Helm 2 pa pral fè anyen, ak Helm 3 pral deplwaye nouvo vèsyon aplikasyon an. Pou konprann poukisa, ou bezwen konprann ki jan Helm travay.

Ki jan Helm travay?

Pou detèmine si yon aplikasyon te chanje depi dènye lage li a, Helm ka itilize:

  • kouri aplikasyon nan Kubernetes;
  • nouvo values.yaml ak tablo aktyèl;
  • Enfòmasyon sou lage entèn Helm la.

Pou plis kirye: ki kote Helm sere enfòmasyon entèn sou degaje yo?Pa egzekite kòmandman an helm history, nou pral jwenn tout enfòmasyon sou vèsyon yo enstale lè l sèvi avèk Helm.

Aparèy Helm la ak enkonvenyans li yo
Genyen tou enfòmasyon detaye sou modèl yo voye ak valè yo. Nou ka mande li:

Aparèy Helm la ak enkonvenyans li yo
Nan dezyèm vèsyon Helm la, enfòmasyon sa yo sitiye nan menm espas non kote Tiller ap kouri (kube-system pa default), nan ConfigMap la, ki make ak etikèt "PWOPRIYETE=TILLER":

Aparèy Helm la ak enkonvenyans li yo
Lè twazyèm vèsyon Helm te parèt, enfòmasyon an te deplase nan sekrè, ak nan menm espas non kote aplikasyon an t ap kouri. Mèsi a sa a, li te vin posib yo kouri plizyè aplikasyon an menm tan nan espas non diferan ak non an lage menm. Nan dezyèm vèsyon an se te yon gwo maltèt lè espas non yo izole men yo ka enfliyanse youn ak lòt.

Aparèy Helm la ak enkonvenyans li yo

Dezyèm Helm a, lè w ap eseye konprann si yon aktyalizasyon nesesè, sèvi ak sèlman de sous enfòmasyon: sa yo bay li kounye a, ak enfòmasyon entèn sou degaje, ki bay manti nan ConfigMap la.

Aparèy Helm la ak enkonvenyans li yo
Twazyèm Helm la sèvi ak yon estrateji fizyon twa-fason: anplis enfòmasyon sa a, li tou pran an kont aplikasyon an ki ap kouri kounye a nan Kubernetes.

Aparèy Helm la ak enkonvenyans li yo
Pou rezon sa a, ansyen vèsyon an nan Helm pa pral fè anyen, paske li pa pran an kont enfòmasyon aplikasyon an nan gwoup la, men Helm 3 pral resevwa chanjman yo epi voye nouvo aplikasyon an pou deplwaman.

Metòd 5. Sèvi ak --recreate-pods switch la

Ak yon kle --recreate-pods ou ka reyalize sa ou te planifye pou reyalize ak kle a --force. Kontenè yo pral rekòmanse epi, dapre imagePullPolicy a: Toujou politik pou dènye tag la (plis sou sa a nan nòt anba a pi wo a), Kubernetes pral telechaje ak lanse yon nouvo vèsyon imaj la. Sa a pa pral fè nan pi bon fason: san yo pa pran an konsiderasyon StrategyType nan deplwaman, li pral sibitman fèmen tout ansyen aplikasyon aplikasyon epi kòmanse lanse nouvo. Pandan rekòmanse a, sistèm nan pa pral travay, itilizatè yo pral soufri.

Nan Kubernetes tèt li, yon pwoblèm menm jan an te egziste tou pou yon tan long. Epi kounye a, 4 ane apre ouvèti a Problèm, pwoblèm nan te fikse, epi kòmanse ak vèsyon 1.15 nan Kubernetes, kapasite nan woule-rekòmanse gous parèt.

Helm tou senpleman fèmen tout aplikasyon yo epi lanse nouvo resipyan ki tou pre. Ou pa ka fè sa nan pwodiksyon, se konsa yo pa lakòz aplikasyon D '. Sa a se sèlman nesesè pou bezwen devlopman epi li ka fèt sèlman nan anviwònman etap.

Ki jan yo mete ajou vèsyon aplikasyon an lè l sèvi avèk Helm?

Nou pral chanje valè yo voye bay Helm. Tipikman, sa yo se valè ki ranplase nan plas tag imaj la. Nan ka dènye, ki se souvan itilize pou anviwònman enpwodiktif, enfòmasyon an chanjan se yon anotasyon, ki se initil pou Kubernetes tèt li, ak pou Helm li pral aji kòm yon siyal pou bezwen an mete ajou aplikasyon an. Opsyon pou ranpli valè annotasyon an:

  1. Valè o aza lè l sèvi avèk fonksyon estanda a - {{ randAlphaNum 6 }}.
    Gen yon avètisman: apre chak deplwaman lè l sèvi avèk yon tablo ak yon varyab konsa, valè annotasyon yo pral inik, epi Helm pral asime ke gen chanjman. Li sanble ke nou pral toujou rekòmanse aplikasyon an, menm si nou pa te chanje vèsyon li yo. Sa a se pa kritik, paske pa pral gen okenn D ', men li toujou dezagreyab.
  2. Kole aktyèl dat ak lè - {{ .Release.Date }}.
    Yon varyant sanble ak yon valè o aza ak yon varyab pèmanan inik.
  3. Yon fason ki pi kòrèk se itilize chèk sòm yo. Sa a se SHA imaj la oswa SHA dènye komite nan git la - {{ .Values.sha }}.
    Yo pral bezwen konte epi voye bay kliyan an Helm sou bò apèl la, pou egzanp nan Jenkins. Si aplikasyon an chanje, lè sa a sòm chèk la ap chanje. Se poutèt sa, Helm pral sèlman mete ajou aplikasyon an lè sa nesesè.

Ann rezime tantativ nou yo

  • Helm fè chanjman nan fason ki pi piti a, kidonk nenpòt chanjman nan nivo imaj aplikasyon an nan Rejis Docker la pa pral lakòz yon aktyalizasyon: pa gen anyen ki pral rive apre yo fin egzekite lòd la.
  • Kle --force itilize retabli degaje pwoblèm epi li pa asosye ak mizajou fòse.
  • Kle --recreate-pods pral fòseman mete ajou aplikasyon yo, men li pral fè li nan yon fason vandal: li pral sibitman fèmen tout resipyan yo. Itilizatè yo pral soufri sa a; ou pa ta dwe fè sa nan pwodiksyon an.
  • Dirèkteman fè chanjman nan gwoup Kubernetes la lè l sèvi avèk lòd la kubectl edit pa fè sa: nou pral kraze konsistans, ak konpòtman an ap diferan depann sou vèsyon an nan Helm.
  • Avèk lage nouvo vèsyon Helm, anpil nuans te parèt. Pwoblèm nan depo Helm yo dekri nan lang klè, yo pral ede w konprann detay yo.
  • Ajoute yon annotasyon editable nan yon tablo pral rann li pi fleksib. Sa a pral pèmèt ou woule aplikasyon an kòrèkteman, san D '.

Yon "lapè mondyal" te panse ki travay nan tout domèn nan lavi: li enstriksyon yo anvan ou itilize, pa apre. Se sèlman avèk enfòmasyon konplè li pral posib yo bati sistèm serye epi fè itilizatè yo kontan.

Lòt lyen ki gen rapò:

  1. Konesans ak Helm 3
  2. Helm sit entènèt ofisyèl
  3. Helm depo sou GitHub
  4. 25 Zouti itil Kubernetes: Deplwaman ak Jesyon

Rapò sa a te premye prezante nan Konferans @Kubernetes pa Mail.ru Cloud Solutions. Gade videyo lòt pèfòmans ak abònman nan anons evènman sou Telegram Anviwon Kubernetes nan Mail.ru Group.

Sous: www.habr.com

Add nouvo kòmantè