Kratki uvod u Kustomizu

Bilješka. prev.: Članak je napisao Scott Lowe, inženjer s velikim iskustvom u IT-u, koji je autor/koautor sedam tiskanih knjiga (uglavnom o VMware vSphere). Sada radi za njegovu podružnicu VMware Heptio (preuzetu 2016.), specijaliziranu za računalstvo u oblaku i Kubernetes. Sam tekst služi kao sažet i lako razumljiv uvod u upravljanje konfiguracijom za Kubernetes pomoću tehnologije Prilagodite, koji je nedavno postao dio K8s.

Kratki uvod u Kustomizu

Kustomize je alat koji korisnicima omogućuje "prilagođavanje jednostavnih YAML datoteka bez predložaka za različite svrhe, ostavljajući izvorni YAML netaknut i upotrebljiv" (opis posuđen izravno od prilagodite spremište na GitHubu). Kustomize se može pokrenuti izravno ili, od Kubernetesa 1.14, koristiti kubectl -k za pristup njegovoj funkcionalnosti (iako je od Kubernetesa 1.15, odvojena binarna datoteka novija od mogućnosti ugrađenih u kubectl). (Bilješka. prev.: I s nedavnim izdanjem Kubernetes 1.16 prilagoditi podržan od također u uslužnom programu kubeadm.) U ovom postu želim upoznati čitatelje s osnovama kustomizea.

U svom najjednostavnijem obliku/aplikaciji, kustomize je jednostavno zbirka resursa (YAML datoteke koje definiraju Kubernetes objekte: implementacije, usluge itd.) plus popis uputa za promjene koje je potrebno izvršiti na tim resursima. Baš kao što make koristi skup instrukcija sadržan u Makefile, a Docker gradi spremnik na temelju uputa iz Dockerfile,prilagodite upotrebu kustomization.yaml za pohranjivanje uputa o promjenama koje korisnik želi napraviti na skupu resursa.

Ovdje je primjer datoteke kustomization.yaml:

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

Neću pokušati govoriti o svim mogućim poljima u datoteci. kustomization.yaml (o tome je dobro napisano здесь), ali ću dati kratko objašnjenje konkretnog primjera:

  • Polje resources označava što će (koji resursi) kustomize promijeniti. U ovom slučaju, tražit će resurse u datotekama deployment.yaml и service.yaml u vašem imeniku (možete navesti pune ili relativne staze ako je potrebno).
  • Polje namePrefix upućuje kustomize da doda određeni prefiks (u ovom slučaju - dev-) pripisati name sve resurse definirane na terenu resources. Dakle, ako Deployment ima name s vrijednošću nginx-deployment, prilagoditi će uspjeti dev-nginx-deployment.
  • Polje namespace upućuje kustomize da doda zadani prostor imena svim resursima. U ovom slučaju će Deployment i Service pasti u imenski prostor development.
  • Konačno, polje commonLabels sadrži skup oznaka koje će biti dodane svim resursima. U našem primjeru, kustomize će dodijeliti oznaku resursima s imenom environment i značenje development.

Ako korisnik to učini kustomize build . u direktoriju s datotekom kustomization.yaml i potrebne resurse (tj. datoteke deployment.yaml и service.yaml), tada će na izlazu dobiti tekst s promjenama navedenim u kustomization.yaml.

Kratki uvod u Kustomizu
Bilješka. prev.: Ilustracija iz projektne dokumentacije o “jednostavnoj” uporabi kustomizea

Izlaz se može preusmjeriti ako je potrebno izvršiti promjene:

kustomize build . > custom-config.yaml

Izlazni podaci su deterministički (isti ulazni podaci proizvest će iste izlazne rezultate), tako da ne morate spremati rezultat u datoteku. Umjesto toga, može se proslijediti izravno drugoj naredbi:

kustomize build . | kubectl apply -f -

Značajkama prilagođavanja također se može pristupiti putem kubectl -k (od Kubernetes verzije 1.14). Međutim, imajte na umu da se samostalni paket kustomize ažurira brže od integriranog paketa kubectl (barem je to slučaj s izdanjem Kubernetes 1.15).

Čitatelji se mogu pitati: "Čemu sva ova složenost ako možete izravno uređivati ​​datoteke?" Sjajno pitanje. U našem primjeru, doista može se mijenjati datoteke deployment.yaml и service.yaml izravno, ali što ako su fork tuđeg projekta? Izravno mijenjanje datoteka otežava (ako ne i nemoguće) ponovno baziranje račvanja kada se naprave promjene na podrijetlu/izvoru. Korištenje kustomizea omogućuje centralizaciju ovih promjena u datoteci kustomization.yaml, ostavljajući izvorne datoteke netaknutima i tako olakšavajući ponovno baziranje izvornih datoteka ako je potrebno.

Prednosti kustomizea postaju očite u složenijim slučajevima upotrebe. U gornjem primjeru kustomization.yaml a resursi su u istom direktoriju. Međutim, kustomize podržava slučajeve upotrebe u kojima postoji osnovna konfiguracija i mnoge njezine varijante, također poznate kao prekrivanja. Na primjer, korisnik je želio uzeti Deployment and Service for nginx, koji sam upotrijebio kao primjer, i stvoriti razvojne, pripremne i proizvodne verzije (ili varijante) tih datoteka. Da bi to učinio, trebat će mu gore spomenuti slojevi i, zapravo, sami osnovni resursi.

Za ilustraciju ideje slojeva i temeljnih resursa (osnovni resursi), pretpostavimo da direktoriji imaju sljedeću strukturu:

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

U spisu base/kustomization.yaml korisnika koji koriste polje resources jednostavno deklarirajte resurse koje prilagođavanje treba uključiti.

U svakoj od datoteka overlays/{dev,staging,prod}/kustomization.yaml korisnici se odnose na osnovnu konfiguraciju na terenu resources, a zatim navedite određene promjene za dato okruženje. Na primjer, datoteka overlays/dev/kustomization.yaml može izgledati kao primjer dat ranije:

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

U ovom slučaju datoteka overlays/prod/kustomization.yaml može biti potpuno drugačiji:

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

Kada korisnik trči kustomize build . u katalogu overlays/dev, kustomize će generirati razvojnu opciju. Ako trčite kustomize build . u katalogu overlays/prod - dobivate mogućnost proizvodnje. I sve to - bez ikakvih promjena na izvorniku (baza) datoteke, sve na deklarativan i deterministički način. Možete predati osnovnu konfiguraciju i direktorije preklapanja izravno u kontrolu verzija, znajući da na temelju ovih datoteka možete reproducirati željenu konfiguraciju u bilo kojem trenutku.

Kratki uvod u Kustomizu
Bilješka. prev.: Ilustracija iz projektne dokumentacije o korištenju slojeva u kustomizeu

Prilagodite limenku više više od onoga što je pokriveno u ovom članku. Ipak, nadam se da će poslužiti kao dobar uvod.

Dodatni resursi

Postoji mnogo dobrih članaka i publikacija o kustomizeu. Evo nekoliko koje sam smatrao posebno korisnima:

Bilješka. prev.: Također možete preporučiti blok veza objavljen kao Resursi na web stranici uslužnog poduzeća, nakon čega slijedi zbirka videozapisa s najnovijim izvješćima o kustomizeu.

Ako imate pitanja ili prijedloga za poboljšanje ovog materijala, uvijek sam otvoren za povratne informacije. Možete me kontaktirati na X / Twitter ili Kubernetes Slack kanal. Zabavite se mijenjajući svoje manifeste uz kustomize!

PS od prevoditelja

Pročitajte i na našem blogu:

Izvor: www.habr.com

Dodajte komentar