LĂŒhiline sissejuhatus Kustomize'i

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 Kustomize, mis on hiljuti saanud osaks K8s-ist.

LĂŒhiline sissejuhatus Kustomize'i

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 GitHub'i repositooriumist). 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 Kubernetes 1.16 kustomize toetatakse 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. siit), kuid annan lĂŒhikese selgituse konkreetse nĂ€ite kohta:

  • VĂ€li resources osutab sellele, milliseid ressursse kustomize muudab. Antud juhul otsib ta ressursse failidest. deployment.yaml ja service.yaml oma kataloogis (vajadusel vĂ”ib kasutada tĂ€is- vĂ”i suhtelisi teid).
  • VĂ€li namePrefix mÀÀ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-deployment name vÀÀrtusega , teeb kustomize sellest.dev-nginx-deployment dev-nginx-deployment.
  • VĂ€li namespace kustomize nĂ”uab antud nimelise ruumi lisamist kĂ”igile ressurssidele. Antud juhul kuuluvad Deployment ja Service mÀÀratud ruumi. arendus.
  • LĂ”puks, vĂ€li commonLabels sisaldab komplekti silte, mis lisatakse kĂ”igile ressurssidele. Meie nĂ€ites mÀÀrab kustomize ressurssidele sildi nimega environment ja vÀÀrtusega arendus.

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.

LĂŒhiline sissejuhatus Kustomize'i
MÀrk. tÔlge.: Illustratsioon projekti dokumentatsioonist kustomize "lihtsa" kasutamise kohta.

VĂ€ljundit saab suunata, kui on vajalik muudatused fikseerida:

kustomize build . > custom-config.yaml

VÀ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.

LĂŒhiline sissejuhatus Kustomize'i
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 Ressursid 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 Twitter vĂ”i Kubernetes Slack-kanalis. Nautige oma manifestide kohandamist kustomize abil!

P.S. tÔlkija mÀrkused

Lugege ka meie blogist:

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster