Intshayelelo emfutshane yeKustomize

Phawula. transl.: Eli nqaku libhalwe nguScott Lowe, injineli enamava amaninzi kwi-IT, ongumbhali / umbhali-mbhali weencwadi ezisixhenxe eziprintiweyo (ikakhulukazi kwi-VMware vSphere). Ngoku usebenzela i-VMware subsidiary Heptio (efunyenwe kwi-2016), egxile kwi-computing yamafu kunye ne-Kubernetes. Umbhalo ngokwawo usebenza njengesingeniso esifutshane kwaye kulula ukuyiqonda kulawulo loqwalaselo lweKubernetes usebenzisa itekhnoloji. Lungiselela, esandula ukuba yinxalenye yee-K8s.

Intshayelelo emfutshane yeKustomize

I-Kustomize sisixhobo esivumela abasebenzisi ukuba "bazenzele ngokulula, iifayile ze-YAML ezingenazo itemplate ngeenjongo ezahlukeneyo, beshiya i-YAML yoqobo kwaye isebenziseka" (inkcazelo ebolekwe ngokuthe ngqo kustomize indawo yokugcina kwiGitHub). I-Kustomize inokuqhutywa ngokuthe ngqo okanye, njenge-Kubernetes 1.14, isetyenziswe kubectl -k ukufikelela kumsebenzi wayo (nangona nge Kubernetes 1.15, ibini elahlukileyo litsha kunesakhono esakhelwe kwi kubectl). (Phawula. transl.: Kwaye nokukhutshwa kwamva nje Iibubernetes 1.16 yenza ngokwezifiso ixhaswe ngu nakwi-beadm eluncedo.) Kule post, ndifuna ukwazisa abafundi kwiziseko ze-kustomize.

Ngeyona ndlela ilula / isicelo, i-kustomize yingqokelela yemithombo (iifayile ze-YAML ezichaza izinto ze-Kubernetes: Ukuthunyelwa, iiNkonzo, njl.) kunye noluhlu lwemiyalelo yotshintsho ekufuneka lwenziwe kwezo zixhobo. Kanye njengokuba make usebenzisa isethi yomyalelo equlethwe kuyo Makefile, kwaye iDocker yakha isikhongozeli esekwe kwimiyalelo evela Dockerfile, lungiselela ukusetyenziswa kustomization.yaml ukugcina imiyalelo malunga noluphi utshintsho umsebenzisi afuna ukulwenza kwiseti yemithombo.

Nantsi ifayile yomzekelo kustomization.yaml:

resources:
- deployment.yaml
- service.yaml
namePrefix: dev-
namespace: development
commonLabels:
  environment: development

Andiyi kuzama ukuthetha ngayo yonke imihlaba enokwenzeka kwifayile. kustomization.yaml (oku kubhalwe kakuhle malunga apha), kodwa ndiza kunika ingcaciso emfutshane yomzekelo othile:

  • Intsimi resources ibonisa ukuba yintoni (yeyiphi imithombo) kustomize ezakutshintsha. Kule meko, iya kukhangela izixhobo kwiifayile deployment.yaml и service.yaml kulawulo lwakho (ungakhankanya iindlela ezipheleleyo okanye ezizalanayo ukuba kuyimfuneko).
  • Intsimi namePrefix iyalela kustomize ukongeza isimaphambili esithile (kulo mzekelo - dev-) ukunika uphawu name zonke izixhobo ezichazwe ebaleni resources. Ke, ukuba ukuhanjiswa kuye name ngentsingiselo nginx-deployment, ukwenza ngokwezifiso kuya kuyenza dev-nginx-deployment.
  • Intsimi namespace iyalela kustomize ukongeza isithuba segama elinikiweyo kubo bonke oovimba. Kule meko, ukusasazwa kunye neNkonzo kuya kuwela kwindawo yamagama development.
  • Ekugqibeleni, intsimi commonLabels iqulethe iileyibhile eziya kongezwa kubo bonke oovimba. Kumzekelo wethu, i-kustomize iya kwabela ileyibhile kwimithombo enegama environment kunye nexabiso development.

Ukuba umsebenzisi wenza kustomize build . kulawulo ngefayile kustomization.yaml kunye nezibonelelo eziyimfuneko (okt iifayile deployment.yaml и service.yaml), ngoko kwimveliso iyakufumana okubhaliweyo ngotshintsho olukhankanyiweyo kustomization.yaml.

Intshayelelo emfutshane yeKustomize
Phawula. transl.: Umzobo osuka kumaxwebhu eprojekthi kusetyenziso “olulula” lwe-kustomize

Imveliso inokuhanjiswa kwakhona ukuba utshintsho kufuneka luzibophelele:

kustomize build . > custom-config.yaml

Idatha yokukhupha i-deterministic (idatha efanayo yokufaka iya kuvelisa iziphumo ezifanayo), ngoko akudingeki ukuba ugcine umphumo kwifayile. Endaweni yoko, inokudluliselwa ngokuthe ngqo komnye umyalelo:

kustomize build . | kubectl apply -f -

Iimpawu ze kustomize zinokufumaneka nge kubectl -k (ukususela Kubernetes inguqulo 1.14). Nangona kunjalo, khumbula ukuba iphakheji ye-standalone kustomize ihlaziywa ngokukhawuleza kunephakheji edibeneyo ye-kubectl (ubuncinci oku kunjalo nge-Kubernetes 1.15 ukukhululwa).

Abafundi banokubuza: "Kutheni bonke obu buntsokothile ukuba unokuhlela iifayile ngokuthe ngqo?" Umbuzo omkhulu. Kumzekelo wethu, ngokwenene unako guqula iifayile deployment.yaml и service.yaml ngqo, kodwa kuthekani ukuba bayifolokhwe yeprojekthi yomnye umntu? Ukutshintsha iifayile ngokuthe ngqo kwenza kube nzima (ukuba akunakwenzeka) ukuphinda usekwe ifolokhwe xa utshintsho lwenziwa kwimvelaphi/umthombo. Ukusebenzisa i-kustomize ikuvumela ukuba ulawule olu tshintsho kwifayile kustomization.yaml, ishiya iifayile zoqobo zingaguquki kwaye ngaloo ndlela yenza kube lula ukuphinda ubeke iifayile zoqobo ukuba kuyimfuneko.

Izibonelelo ze-kustomize zibonakala kwiimeko zokusetyenziswa ezinzima. Kulo mzekelo ungasentla kustomization.yaml kunye nemithombo ikuluhlu olufanayo. Nangona kunjalo, i-kustomize ixhasa iimeko zokusetyenziswa apho kukho uqwalaselo lwesiseko kunye neentlobo ezininzi zalo, ezaziwa ngokuba ziweyo. Ngokomzekelo, umsebenzisi wayefuna ukuthatha i-Deployment kunye neNkonzo ye-nginx, endiyisebenzisileyo njengomzekelo, kunye nokudala uphuhliso, ukuhlelwa kunye nokuveliswa kweenguqulelo (okanye ukwahluka) kwezo fayile. Ukwenza oku, uya kufuna ukugqithisa okukhankanywe ngasentla kwaye, ngokwenene, izibonelelo ezisisiseko ngokwazo.

Ukubonisa umbono wokwaleka kunye nezixhobo ezisezantsi (izixhobo ezisisiseko), masicinge ukuba abalawuli banesakhiwo esilandelayo:

- base
  - deployment.yaml
  - service.yaml
  - kustomization.yaml
- overlays
  - dev
    - kustomization.yaml
  - staging
    - kustomization.yaml
  - prod
    - kustomization.yaml

Kwifayile base/kustomization.yaml abasebenzisi abasebenzisa indawo resources bhengeza ngokulula izibonelelo ezimele ukustomize zibandakanye.

Kwifayile nganye overlays/{dev,staging,prod}/kustomization.yaml abasebenzisi babhekisa kuqwalaselo lwesiseko entsimini resources, kwaye emva koko ubonise utshintsho oluthile lwe indawo engqongileyo. Umzekelo, ifayile overlays/dev/kustomization.yaml inokubonakala njengomzekelo onikwe ngaphambili:

resources:
- ../../base
namePrefix: dev-
namespace: development
commonLabels:
  environment: development

Kule meko ifayile overlays/prod/kustomization.yaml inokuba yahluke ngokupheleleyo:

resources:
- ../../base
namePrefix: prod-
namespace: production
commonLabels:
  environment: production
  sre-team: blue

Xa umsebenzisi ebaleka kustomize build . kwikhathalogu overlays/dev, kustomize izakuvelisa ukhetho lophuhliso. Ukuba uyabaleka kustomize build . kwikhathalogu overlays/prod - ufumana ukhetho lwemveliso. Kwaye konke oku - ngaphandle kokwenza naluphi na utshintsho kwi-original (isiseko) iifayile, zonke ngendlela echazayo kunye nesigqibo. Ungabophelela uqwalaselo lwesiseko kunye nabalawuli abangaphezulu ngokuthe ngqo kulawulo loguqulelo, usazi ukuba ngokusekwe kwezi fayile ungaphinda uvelise uqwalaselo olufunwayo nangaliphi na ixesha.

Intshayelelo emfutshane yeKustomize
Phawula. transl.: Umzobo osuka kuxwebhu lweprojekthi yokusebenzisa izaleka kwi kustomize

Lungiselela inkono kakhulu ngaphezu koko kuqukunjelwe kweli nqaku. Nangona kunjalo, ndiyathemba ukuba isebenza njengentshayelelo elungileyo.

Izibonelelo ezongezelelweyo

Kukho amanqaku amaninzi alungileyo kunye neempapasho malunga ne-kustomize. Nazi ezimbalwa endizifumene ziluncedo kakhulu:

Phawula. transl.: Unokucebisa ibhloko yekhonkco elipapashwe njenge Resources kwiwebhusayithi ye-utility, ilandelwa yingqokelela yeevidiyo ezineengxelo zamva nje malunga nokustomize.

Ukuba unemibuzo okanye iingcebiso zokuphucula le mathiriyeli, ndihlala ndivulekele impendulo. Ungaqhagamshelana nam ku Twitter okanye ngaphakathi Ijelo leKubernetes Slack. Yonwabela ukuguqula imiboniso yakho ngokustomize!

PS evela kumguquleli

Funda nakwibhlog yethu:

umthombo: www.habr.com

Yongeza izimvo