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.
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.
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:
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.
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!