'n Kort inleiding tot Kustomize

Let wel. vertaal.: Die artikel is geskryf deur Scott Lowe, 'n ingenieur met uitgebreide ervaring in IT, wat die skrywer/mede-outeur van sewe gedrukte boeke is (hoofsaaklik op VMware vSphere). Hy werk nou vir sy VMware-filiaal Heptio (in 2016 verkry), wat spesialiseer in wolkrekenaars en Kubernetes. Die teks self dien as 'n bondige en maklik verstaanbare inleiding tot konfigurasiebestuur vir Kubernetes wat tegnologie gebruik Pasmaak, wat onlangs deel geword het van K8s.

'n Kort inleiding tot Kustomize

Kustomize is 'n instrument wat gebruikers toelaat om "eenvoudige, sjabloonvrye YAML-lĂȘers vir verskillende doeleindes aan te pas, wat die oorspronklike YAML ongeskonde en bruikbaar laat" (beskrywing direk geleen van kustomiseer bewaarplek op GitHub). Kustomize kan direk uitgevoer word of, vanaf Kubernetes 1.14, gebruik word kubectl -k om toegang tot sy funksionaliteit te verkry (hoewel vanaf Kubernetes 1.15, die aparte binĂȘre is nuwer as die vermoĂ«ns wat in kubectl ingebou is). (Let wel. vertaal.: En met die onlangse vrystelling Kubernetes 1.16 pasmaak ondersteun deur ook in die kubeadm-hulpprogram.) In hierdie pos wil ek lesers bekendstel aan die basiese beginsels van kustomize.

In sy eenvoudigste vorm/toepassing is kustomize bloot 'n versameling hulpbronne (YAML-lĂȘers wat Kubernetes-voorwerpe definieer: Ontplooiings, Dienste, ens.) plus 'n lys van instruksies vir veranderinge wat aan daardie hulpbronne aangebring moet word. Net soos maak gebruik die instruksiestel vervat in Makefile, en Docker bou die houer op grond van instruksies van Dockerfile, pas gebruike aan kustomization.yaml om instruksies te stoor oor watter veranderinge die gebruiker aan 'n stel hulpbronne wil maak.

Hier is 'n voorbeeld lĂȘer kustomization.yaml:

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

Ek sal nie probeer om oor al die moontlike velde in die lĂȘer te praat nie. kustomization.yaml (hieroor is goed geskryf hier), maar ek sal 'n kort verduideliking van 'n spesifieke voorbeeld gee:

  • Veld resources dui aan wat (watter hulpbronne) kustomize sal verander. In hierdie geval sal dit na hulpbronne in lĂȘers soek deployment.yaml Đž service.yaml in jou gids (jy kan volle of relatiewe paaie spesifiseer indien nodig).
  • Veld namePrefix gee kustomize opdrag om 'n sekere voorvoegsel by te voeg (in hierdie geval - dev-) toe te skryf name alle hulpbronne wat in die veld gedefinieer is resources. Dus, as Ontplooiing het name met betekenis nginx-deployment, pasmaak sal dit maak dev-nginx-deployment.
  • Veld namespace gee opdrag aan kustomize om die gegewe naamruimte by alle hulpbronne te voeg. In hierdie geval sal Ontplooiing en Diens in die naamruimte val development.
  • Ten slotte, die veld commonLabels bevat 'n stel etikette wat by alle hulpbronne gevoeg sal word. In ons voorbeeld sal kustomize 'n etiket aan die hulpbronne toeken met die naam environment en betekenis development.

As die gebruiker dit doen kustomize build . in die gids met die lĂȘer kustomization.yaml en die nodige hulpbronne (d.w.s. lĂȘers deployment.yaml Đž service.yaml), dan sal dit by die afvoer 'n teks ontvang met die veranderinge gespesifiseer in kustomization.yaml.

'n Kort inleiding tot Kustomize
Let wel. vertaal.: Illustrasie uit die projekdokumentasie oor die “eenvoudige” gebruik van kustomize

Die uitset kan herlei word as veranderinge toegepas moet word:

kustomize build . > custom-config.yaml

Die uitsetdata is deterministies (dieselfde insetdata sal dieselfde uitsetresultate lewer), so jy hoef nie die resultaat in 'n lĂȘer te stoor nie. In plaas daarvan kan dit direk na 'n ander opdrag oorgedra word:

kustomize build . | kubectl apply -f -

Die kustomize-kenmerke kan ook verkry word via kubectl -k (sedert Kubernetes weergawe 1.14). Hou egter in gedagte dat die selfstandige kustomize-pakket vinniger opgedateer word as die geĂŻntegreerde kubectl-pakket (dit is ten minste die geval met die Kubernetes 1.15-vrystelling).

Lesers kan vra: "Waarom al hierdie kompleksiteit as jy die lĂȘers direk kan wysig?" Goeie vraag. In ons voorbeeld, inderdaad kan 'n mens wysig lĂȘers deployment.yaml Đž service.yaml direk, maar wat as hulle 'n vurk van iemand anders se projek is? Om lĂȘers direk te verander, maak dit moeilik (indien nie onmoontlik nie) om 'n vurk te rebaseer wanneer veranderinge aan die oorsprong/bron gemaak word. Die gebruik van kustomize laat jou toe om hierdie veranderinge in 'n lĂȘer te sentraliseer kustomization.yaml, laat die oorspronklike lĂȘers ongeskonde en maak dit dus makliker om die oorspronklike lĂȘers te herbaseer indien nodig.

Die voordele van kustomize word duidelik in meer komplekse gebruiksgevalle. In die voorbeeld hierbo kustomization.yaml en die hulpbronne is in dieselfde gids. Kustomize ondersteun egter gebruiksgevalle waar daar 'n basiskonfigurasie is en baie variante daarvan, ook bekend as overlays. Byvoorbeeld, 'n gebruiker wou Ontplooiing en Diens vir nginx, wat ek as voorbeeld gebruik het, neem en ontwikkelings-, opstel- en produksieweergawes (of variante) van daardie lĂȘers skep. Om dit te kan doen, sal hy die bogenoemde oorlegsels benodig en eintlik die basiese hulpbronne self.

Om die idee van oorlegsels en onderliggende hulpbronne te illustreer (basis hulpbronne), kom ons neem aan dat die gidse die volgende struktuur het:

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

In lĂȘer base/kustomization.yaml gebruikers wat die veld gebruik resources verklaar bloot die hulpbronne wat kustomize moet insluit.

In elk van die lĂȘers overlays/{dev,staging,prod}/kustomization.yaml gebruikers verwys na die basiskonfigurasie in die veld resources, en dui dan spesifieke veranderinge aan vir gegewe omgewing. Byvoorbeeld, lĂȘer overlays/dev/kustomization.yaml kan lyk soos die voorbeeld wat vroeĂ«r gegee is:

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

In hierdie geval die lĂȘer overlays/prod/kustomization.yaml kan heeltemal anders wees:

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

Wanneer die gebruiker hardloop kustomize build . in die katalogus overlays/dev, sal kustomize die ontwikkelingsopsie genereer. As jy hardloop kustomize build . in die katalogus overlays/prod - jy kry die produksie-opsie. En dit alles – sonder om enige veranderinge aan die oorspronklike aan te bring (basis) lĂȘers, alles op 'n verklarende en deterministiese manier. U kan die basiskonfigurasie en oorleggidse direk aan weergawebeheer toewys, met die wete dat u op grond van hierdie lĂȘers die verlangde konfigurasie te eniger tyd kan reproduseer.

'n Kort inleiding tot Kustomize
Let wel. vertaal.: Illustrasie uit die projekdokumentasie oor die gebruik van oorlegsels in kustomize

Pasmaak blikkie veel meer as wat in hierdie artikel gedek word. Ek hoop egter dit dien as 'n goeie inleiding.

Bykomende hulpbronne

Daar is baie goeie artikels en publikasies oor kustomize. Hier is 'n paar wat ek veral nuttig gevind het:

Let wel. vertaal.: Jy kan ook 'n blok skakels aanbeveel wat gepubliseer is as hulpbronne op die nutsprogram se webwerf, gevolg deur 'n versameling video's met die jongste verslae oor kustomize.

As jy vrae of voorstelle het om hierdie materiaal te verbeter, is ek altyd oop vir terugvoer. Jy kan my kontak by Twitter of Kubernetes Slack-kanaal. Geniet dit om jou manifeste met kustomize te wysig!

PS van vertaler

Lees ook op ons blog:

Bron: will.com

Koop betroubare hosting vir werwe met DDoS-beskerming, VPS VDS-bedieners đŸ”„ Koop betroubare webwerfhosting met DDoS-beskerming, VPS VDS-bedieners | ProHoster