PiezÄ«me. tulk.: rakstu ir uzrakstÄ«jis Skots Lovs, inženieris ar lielu pieredzi IT jomÄ, kurÅ” ir septiÅu drukÄtu grÄmatu (galvenokÄrt par VMware vSphere) autors/lÄ«dzautors. Tagad viÅÅ” strÄdÄ tÄ VMware meitasuzÅÄmumÄ Heptio (iegÄdÄts 2016. gadÄ), kas specializÄjas mÄkoÅdatniecÄ«bÄ un Kubernetes. Pats teksts kalpo kÄ kodolÄ«gs un viegli saprotams ievads Kubernetes konfigurÄcijas pÄrvaldÄ«bÄ, izmantojot tehnoloÄ£iju PielÄgot, kas nesen kļuva par daļu no K8s.
Kustomize ir rÄ«ks, kas ļauj lietotÄjiem āpielÄgot vienkÄrÅ”us, bez veidnes YAML failus dažÄdiem mÄrÄ·iem, atstÄjot sÄkotnÄjo YAML neskartu un lietojamuā (apraksts aizgÅ«ts tieÅ”i no kustomize repozitorijs vietnÄ GitHub). Kustomize var palaist tieÅ”i vai, sÄkot ar Kubernetes 1.14, izmantot kubectl -k lai piekļūtu tÄ funkcionalitÄtei (lai gan no Kubernetes 1.15 atseviŔķais binÄrais fails ir jaunÄks par kubectl iebÅ«vÄtajÄm iespÄjÄm). (PiezÄ«me. tulk.: Un ar neseno izlaidumu Kubernetes 1.16 pielÄgot atbalsta arÄ« utilÄ«tprogrammÄ kubeadm.) Å ajÄ ierakstÄ es vÄlos iepazÄ«stinÄt lasÄ«tÄjus ar kustomize pamatiem.
VienkÄrÅ”ÄkajÄ formÄ/lietojumprogrammÄ kustomize ir vienkÄrÅ”i resursu kolekcija (YAML faili, kas definÄ Kubernetes objektus: izvietoÅ”ana, pakalpojumi utt.), kÄ arÄ« saraksts ar norÄdÄ«jumiem par izmaiÅÄm, kas jÄveic Å”ajos resursos. TÄpat kÄ make izmanto instrukciju kopu, kas ietverta Makefile, un Docker izveido konteineru, pamatojoties uz instrukcijÄm no Dockerfile, pielÄgot lietojumus kustomization.yaml lai saglabÄtu norÄdÄ«jumus par to, kÄdas izmaiÅas lietotÄjs vÄlas veikt resursu kopÄ.
Å eit ir faila piemÄrs kustomization.yaml:
resources:
- deployment.yaml
- service.yaml
namePrefix: dev-
namespace: development
commonLabels:
environment: development
Es nemÄÄ£inÄÅ”u runÄt par visiem iespÄjamajiem faila laukiem. kustomization.yaml (par to ir labi uzrakstÄ«ts Å”eit), bet es sniegÅ”u Ä«su paskaidrojumu par konkrÄtu piemÄru:
Lauks resources norÄda, ko (kÄdus resursus) kustomize mainÄ«s. Å ajÄ gadÄ«jumÄ tas meklÄs resursus failos deployment.yaml Šø service.yaml savÄ direktorijÄ (ja nepiecieÅ”ams, varat norÄdÄ«t pilnus vai relatÄ«vus ceļus).
Lauks namePrefix uzdod kustomize pievienot noteiktu prefiksu (Å”ajÄ gadÄ«jumÄ - dev-), lai atribÅ«tu name visi laukÄ definÄtie resursi resources. TÄdÄjÄdi, ja IzvietoÅ”anai ir name ar nozÄ«mi nginx-deployment, pielÄgojiet to dev-nginx-deployment.
Lauks namespace uzdod kustomize pievienot doto nosaukumvietu visiem resursiem. Å ajÄ gadÄ«jumÄ izvietoÅ”ana un apkalpoÅ”ana tiks iekļauta nosaukumvietÄ development.
Visbeidzot, lauks commonLabels satur iezÄ«mju kopu, kas tiks pievienota visiem resursiem. MÅ«su piemÄrÄ kustomize resursiem pieŔķirs etiÄ·eti ar nosaukumu environment un nozÄ«me development.
Ja lietotÄjs to dara kustomize build . direktorijÄ ar failu kustomization.yaml un nepiecieÅ”amie resursi (t.i., faili deployment.yaml Šø service.yaml), tad izejÄ tas saÅems tekstu ar izmaiÅÄm, kas norÄdÄ«tas kustomization.yaml.
PiezÄ«me. tulk.: IlustrÄcija no projekta dokumentÄcijas par kustomize āvienkÄrÅ”oā lietoÅ”anu
Izvadi var novirzÄ«t, ja nepiecieÅ”ams veikt izmaiÅas:
kustomize build . > custom-config.yaml
Izvades dati ir deterministiski (vieni un tie paÅ”i ievades dati radÄ«s tÄdus paÅ”us izvades rezultÄtus), tÄpÄc jums nav jÄsaglabÄ rezultÄts failÄ. TÄ vietÄ to var tieÅ”i nodot citai komandai:
kustomize build . | kubectl apply -f -
Kustomize funkcijÄm var piekļūt arÄ«, izmantojot kubectl -k (kopÅ” Kubernetes versijas 1.14). TomÄr Åemiet vÄrÄ, ka atseviÅ”Ä·Ä kustomize pakotne tiek atjauninÄta ÄtrÄk nekÄ integrÄtÄ kubectl pakotne (vismaz tas attiecas uz Kubernetes 1.15 versiju).
LasÄ«tÄji var jautÄt: "KÄpÄc Ŕī sarežģītÄ«ba, ja failus var rediÄ£Ät tieÅ”i?" Lielisks jautÄjums. MÅ«su piemÄrÄ patieÅ”Äm viens var modificÄt failus deployment.yaml Šø service.yaml tieÅ”i, bet ja tie ir kÄda cita projekta dakÅ”a? Mainot failus tieÅ”i, ir grÅ«ti (ja ne neiespÄjami) mainÄ«t dakÅ”u, kad tiek veiktas izmaiÅas izcelsmÄ/avotÄ. Kustomize izmantoÅ”ana ļauj centralizÄt Ŕīs izmaiÅas failÄ kustomization.yaml, atstÄjot oriÄ£inÄlos failus neskartus un tÄdÄjÄdi atvieglojot oriÄ£inÄlo failu atkÄrtotu bÄzi, ja nepiecieÅ”ams.
Kustomize priekÅ”rocÄ«bas kļūst acÄ«mredzamas sarežģītÄkos lietoÅ”anas gadÄ«jumos. IepriekÅ” minÄtajÄ piemÄrÄ kustomization.yaml un resursi atrodas tajÄ paÅ”Ä direktorijÄ. TomÄr kustomize atbalsta lietoÅ”anas gadÄ«jumus, kad ir bÄzes konfigurÄcija un daudzi tÄs varianti, kas pazÄ«stami arÄ« kÄ PÄrklÄjumi. PiemÄram, lietotÄjs vÄlÄjÄs izmantot nginx izvietoÅ”anu un pakalpojumu, ko izmantoju kÄ piemÄru, un izveidot Å”o failu izstrÄdes, iestudÄÅ”anas un ražoÅ”anas versijas (vai variantus). Lai to izdarÄ«tu, viÅam bÅ«s nepiecieÅ”ami iepriekÅ” minÄtie pÄrklÄjumi un faktiski arÄ« paÅ”i pamata resursi.
Lai ilustrÄtu ideju par pÄrklÄjumiem un pamatÄ esoÅ”ajiem resursiem (bÄzes resursi), pieÅemsim, ka direktorijiem ir Å”Äda struktÅ«ra:
FailÄ base/kustomization.yaml lietotÄji, kas izmanto lauku resources vienkÄrÅ”i deklarÄjiet resursus, kas jÄiekļauj kustomizei.
KatrÄ no failiem overlays/{dev,staging,prod}/kustomization.yaml lietotÄji atsaucas uz pamata konfigurÄciju laukÄ resourcesun pÄc tam norÄdiet konkrÄtas izmaiÅas dotÄ vide. PiemÄram, fails overlays/dev/kustomization.yaml varÄtu izskatÄ«ties kÄ iepriekÅ” sniegtais piemÄrs:
resources:
- ../../base
namePrefix: dev-
namespace: development
commonLabels:
environment: development
Å ajÄ gadÄ«jumÄ fails overlays/prod/kustomization.yaml varÄtu bÅ«t pavisam savÄdÄk:
resources:
- ../../base
namePrefix: prod-
namespace: production
commonLabels:
environment: production
sre-team: blue
Kad lietotÄjs darbojas kustomize build . katalogÄ overlays/dev, kustomize Ä£enerÄs izstrÄdes iespÄju. Ja tu skrien kustomize build . katalogÄ overlays/prod - jÅ«s saÅemat ražoÅ”anas iespÄju. Un tas viss ā neveicot nekÄdas izmaiÅas oriÄ£inÄlÄ (bÄze) failus deklaratÄ«vÄ un deterministiskÄ veidÄ. PamatkonfigurÄcijas un pÄrklÄjuma direktorijus varat pievienot tieÅ”i versijas kontrolei, zinot, ka, pamatojoties uz Å”iem failiem, jÅ«s jebkurÄ laikÄ varat reproducÄt vÄlamo konfigurÄciju.
PiezÄ«me. tulk.: IlustrÄcija no projekta dokumentÄcijas par pÄrklÄjumu izmantoÅ”anu kustomize
PielÄgot var daudz vairÄk nekÄ Å”ajÄ rakstÄ. TomÄr es ceru, ka tas kalpos kÄ labs ievads.
Papildu resursi
Par kustomize ir daudz labu rakstu un publikÄciju. Å eit ir daži, kas man Ŕķita Ä«paÅ”i noderÄ«gi:
PiezÄ«me. tulk.: varat arÄ« ieteikt saiÅ”u bloku, kas publicÄts kÄ resursi utilÄ«ta vietnÄ, kam seko videoklipu kolekcija ar jaunÄkajiem ziÅojumiem par kustomize.
Ja jums ir jautÄjumi vai ieteikumi Ŕī materiÄla uzlaboÅ”anai, vienmÄr esmu atvÄrts atsauksmÄm. JÅ«s varat sazinÄties ar mani pa tÄlr Twitter vai Kubernetes Slack kanÄls. IzklaidÄjieties, modificÄjot savus manifestus, izmantojot kustomize!