MĂ€rk. tĂ”lge.: Artikli autor on Scott Lowe â IT valdkonna kogenud insener ja seitsme trĂŒkise autori/kaasautori (peamiselt VMware vSphere'i kohta) autor. Praegu töötab ta VMware'i tĂŒtarettevĂ”ttes Heptio (osta 2016. aastal), keskendudes pilvandmetöötlusele ja Kubernetes'ile. Artikli eesmĂ€rk on pakkuda lĂŒhikest ja arusaadavat sissejuhatust Kubernetes'e konfiguratsioonide haldamiseks Kustomize'i abil , mis on hiljuti saanud osaks K8s-ist.

Kustomize on tööriist, mis vÔimaldab kasutajatel "kohandada lihtsaid ja ƥabloonidest vabasid YAML faile erinevateks eesmÀrkideks, jÀttes originaalse YAML puutumatuks ja kasutusvalmis" (kirjeldus on vÔetud otse ). Kustomize'i saab kasutada otse vÔi alates Kubernetes 1.14-st kasutada kubectl -k selle funktsioonidele juurdepÀÀsuks (kuigi Kubernetes 1.15 puhul on eraldi binaar uusim, kui kubectl'i sisseehitatud funktsioonid). (MÀrk. tÔlge.: Ja koos hiljutise vÀljaandega kustomize ka kubeadm tööriistas.) Selles postituses tutvustan lugejatele kustomize'i aluseid.
Kustimisel on kustomize oma kÔige lihtsamas vormis lihtsalt hulk ressursse (YAML-failid, mis mÀÀratlevad Kubernetes'i objekte: Deployments, Services jne) pluss loetelu muudatustest, mida tuleb nende ressursside osas teha. Nagu make kasutab kogumit juhiseid, mis on. Makefile, ja Docker kogub konteineri vastavalt juhistele. Dockerfile, kasutab kustomize. kustomization.yaml et salvestada ettekirjutused selle kohta, milliseid muudatusi kasutaja soovib ressursside kogusse teha.
Siin on nÀide failist. kustomization.yaml:
resources:
- deployment.yaml
- service.yaml
namePrefix: dev-
namespace: development
commonLabels:
environment: development Ma ei hakka proovima rÀÀkida kĂ”igist vĂ”imalikest vĂ€ljadest failis. kustomization.yaml (sellest on hĂ€sti kirjutatud. ), kuid annan lĂŒhikese selgituse konkreetse nĂ€ite kohta:
- VĂ€li
resourcesosutab sellele, milliseid ressursse kustomize muudab. Antud juhul otsib ta ressursse failidest.deployment.yamljaservice.yamloma kataloogis (vajadusel vÔib kasutada tÀis- vÔi suhtelisi teid). - VÀli
namePrefixmÀÀrab kustomize'ile, et ta lisab teatud prefiksi (antud juhul -dev-) kÔikide ressursside atribuudile, mis on mÀÀratletud.name. Nii et kui Deployment'is on.resourcesnginx-deploymentnamevÀÀrtusega, teeb kustomize sellest.dev-nginx-deploymentdev-nginx-deployment. - VÀli
namespacekustomize nÔuab antud nimelise ruumi lisamist kÔigile ressurssidele. Antud juhul kuuluvad Deployment ja Service mÀÀratud ruumi.arendus. - LÔpuks, vÀli
commonLabelssisaldab komplekti silte, mis lisatakse kÔigile ressurssidele. Meie nÀites mÀÀrab kustomize ressurssidele sildi nimegaenvironmentja vÀÀrtusegaarendus.
Kui kasutaja kÀivitab kustomize build . kaustas, kus on fail kustomization.yaml ja vajalikud ressursid (st failid deployment.yaml ja service.yaml), siis saab ta vÀljundina teksti muudatustega, mis on mÀÀratletud kustomization.yaml.

MÀrk. tÔlge.: Illustratsioon projekti dokumentatsioonist kustomize "lihtsa" kasutamise kohta.
VĂ€ljundit saab suunata, kui on vajalik muudatused fikseerida:
kustomize build . > custom-config.yamlVÀljund on deterministlik (samade sisenditega saadakse sama vÀljund), seega ei pea tulemust faili salvestama. Selle asemel saab selle kohe edastada teisele kÀsule:
kustomize build . | kubectl apply -f - Kaccess kustomize funktsioonidele on samuti vÔimalik lÀbi kubectl -k (alates Kubernetes 1.14 versioonist). Siiski, pidage meeles, et eraldi kustomize paketti uuendatakse kiiremini kui kubectl integreeritud versiooni (vÀhemalt tundub niimoodi Kubernetes 1.15 vÀljaandega).
Lugejad vĂ”ivad kĂŒsida: âMiks peaks siis kĂ”ik need keerukused olema, kui faile saab otse redigeerida?â. VĂ€ga hea kĂŒsimus. Meie nĂ€ites on tĂ”epoolest vĂ”imalik saab faile deployment.yaml ja service.yaml otse redigeerida, kuid mis juhtub, kui need on kellegi projekti fork? Failide otse muutmine raskendab (vĂ”i isegi muudab vĂ”imatuks) fork'i rebase'ida, kui allikas muudatusi teeb. Kustomize'i kasutamine vĂ”imaldab keskendada need muudatused faili kustomization.yaml, jĂ€ttes originaalfailid puutumatuks ja seelĂ€bi kergendades vajadusel originaalfailide rebase'imist.
Kustomize'i eelised muutuvad ilmseks keerulisemates kasutusjuhtumites. Ălaltoodud nĂ€ites kustomization.yaml ja ressursid on samas kaustas. Kuid kustomize toetab kasutusstsenaariume, kus on pĂ”hikonfiguratsioon ja palju selle variante, mida tuntakse ka kui overlays. NĂ€iteks soovis kasutaja vĂ”tta Deployment'i ja Service'i nginx'i jaoks, mida kasutasin nĂ€itena, ning luua nende failide development-, staging- ja production-versioonid (vĂ”i variandid). Selleks vajab ta ĂŒlalmainitud overlays'i ja tegelikult ka pĂ”hialuseks olevad ressursid.
Illustreerimaks overlayde ja pÔhivara mÔistet (pÔhivara), oletame, et direktoritel on jÀrgmine struktuur:
- base
- deployment.yaml
- service.yaml
- kustomization.yaml
- overlays
- dev
- kustomization.yaml
- staging
- kustomization.yaml
- prod
- kustomization.yaml Failis base/kustomization.yaml kasutajad, kasutades vÀljast resources lihtsalt deklareerida ressursid, mida kustomize peaks sisaldama.
Igas failis overlays/{dev,staging,prod}/kustomization.yaml kasutajad viitavad pÔhikonfiguratsioonile vÀljas resources, ning seejÀrel mÀÀravad konkreetseid muudatusi antud keskkonnale. NÀiteks, fail overlays/dev/kustomization.yaml vÔib vÀlja nÀha nagu eelnevalt toodud nÀide:
resources:
- ../../base
namePrefix: dev-
namespace: development
commonLabels:
environment: development Samas, fail overlays/prod/kustomization.yaml vÔib olla tÀiesti erinev:
resources:
- ../../base
namePrefix: prod-
namespace: production
commonLabels:
environment: production
sre-team: blue Kui kasutaja kĂ€ivitab kustomize build . kaustas overlays/dev, kustomize genereerib arenduse variandi. Kui aga kĂ€ivitada kustomize build . kaustas overlays/prod â saadakse tootmisvariant. Ja kĂ”ik see â ilma algsetesse (pĂ”hivara) muudatusteta. failid, ja kĂ”ik see - deklaratiivsel ja deterministlikul viisil. Aluskonfiguratsiooni ja overlay kaustasid saab otse versioonihaldussĂŒsteemi kommitida, teades, et nende failide pĂ”hjal saab igal hetkel taastada soovitud konfiguratsiooni.

MÀrk. tÔlge.: Illustratsioon projekti dokumentatsioonist overlays kasutamisest kustomizes
Kustomize oskab kaugelt rohkem, kui selles artiklis rÀÀkida. Loodetavasti on see hea sissejuhatus.
Lisavahendid
On palju hÀid artikleid ja publikatsioone kustomize kohta. Siin on mÔned, mida pean eriti kasulikuks:
- ;
- ;
- ;
- .
MÀrk. tÔlge.: Samuti vÔib soovitada linkide plokki, mis on avaldatud nagu utiliidi veebilehel ning sellele jÀrgnevat video kogu, kus on viimased ettekanded kustomize'i kohta.
Kui teil on kĂŒsimusi vĂ”i ettepanekuid, kuidas seda materjali tĂ€iustada, olen alati tagasiside jaoks avatud. Minuga saab ĂŒhendust vĂ”tta vĂ”i . Nautige oma manifestide kohandamist kustomize abil!
P.S. tÔlkija mÀrkused
Lugege ka meie blogist:
- «»;
- «»;
- «»;
- «».
Allikas: habr.com
