Destpêkek Kurtî ya Kustomize

Not. werger.: Gotar ji hêla Scott Lowe, endezyarek xwedan ezmûnek berfireh di IT-ê de, ku nivîskar / hev-nivîskarê heft pirtûkên çapkirî ye (bi giranî li ser VMware vSphere) hatî nivîsandin. Ew naha ji bo pargîdaniya wê ya VMware Heptio (di sala 2016-an de hatî bidestxistin) dixebite, di berhevkirina ewr û Kubernetes de pispor e. Nivîs bi xwe ji bo Kubernetes bi karanîna teknolojiyê ve wekî danasînek kurt û hêsan-fêmkirî ji rêveberiya vesazkirinê re xizmet dike. Customize, ku vê dawiyê bû beşek ji K8s.

Destpêkek Kurtî ya Kustomize

Kustomize amûrek e ku destûrê dide bikarhêneran ku "pelên YAML-ê yên sade, bê şablon ji bo mebestên cihêreng xweş bikin, YAML-ya orîjînal saxlem û bikêr bihêlin" (danasînê rasterast ji li ser GitHub depoya kustomîze bikin). Kustomize dikare rasterast were xebitandin an, wekî Kubernetes 1.14, were bikar anîn kubectl -k ku bigihîje fonksiyona wê (her çend wekî Kubernetes 1.15, binarya veqetandî ji kapasîteyên ku di kubectl de hatî çêkirin nûtir e). (Not. werger.: Û bi berdana dawî Kubernetes 1.16 xweş bike piştgirî kirin jî di kargêriya kubeadm de.) Di vê postê de, ez dixwazim xwendevanan bi bingehên kustomîzekirinê re bidim nasîn.

Di forma/sepana xwe ya herî hêsan de, kustomize bi tenê berhevokek çavkaniyan e (pelên YAML ku tiştên Kubernetes diyar dikin: Sazkirin, Karûbar, hwd.) û navnîşek rêwerzên ji bo guhertinên ku divê li wan çavkaniyan bêne çêkirin. Mîna ku çêkirin, koma rêwerzan a ku tê de heye bikar tîne Makefile, û Docker li ser bingeha rêwerzên ji konteynerê ava dike Dockerfile,bikaranîna kesane bikin kustomization.yaml ji bo hilanîna talîmatên li ser çi guheztinên ku bikarhêner dixwaze li komek çavkaniyan bike.

Li vir pelek nimûne ye kustomization.yaml:

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

Ez ê hewl nekim ku li ser hemî qadên gengaz ên di pelê de biaxivim. kustomization.yaml (li ser vê yekê baş hatiye nivîsandin vir), lê ez ê ravekek kurt a mînakek taybetî bidim:

  • warê resources nîşan dide ku (kîjan çavkaniyan) kustomize dê biguhezîne. Di vê rewşê de, ew ê li çavkaniyan di pelan de bigerin deployment.yaml и service.yaml di pelrêça xwe de (heke hewce bike hûn dikarin rêyên tevahî an jî têkildar diyar bikin).
  • warê namePrefix talîmat dide kustomize ku pêşgirek diyar lê zêde bike (di vê rewşê de - dev-) taybetmendî kirin name hemû çavkaniyên ku di qadê de hatine diyarkirin resources. Wiha, eger Deployment heye name bi wate nginx-deployment, xweş bike dê çêbike dev-nginx-deployment.
  • warê namespace talîmat dide kustomize ku cîhê navan li hemî çavkaniyan zêde bike. Di vê rewşê de, Deployment and Service dê di nav qada navan de bikeve development.
  • Di dawiyê de, zeviyê commonLabels komek etîketan dihewîne ku dê li hemî çavkaniyan were zêdekirin. Di mînaka me de, kustomize dê etîketek ji çavkaniyên bi nav re destnîşan bike environment û wateya development.

Ger bikarhêner dike kustomize build . di pelrêça bi pelê kustomization.yaml û çavkaniyên pêwîst (ango pel deployment.yaml и service.yaml), wê hingê di encam de ew ê nivîsek bi guhertinên ku tê de hatine destnîşan kirin werbigire kustomization.yaml.

Destpêkek Kurtî ya Kustomize
Not. werger.: Nîşanek ji belgeya projeyê li ser karanîna "hêsan" ya kustomize

Ger hewce be ku guheztin were kirin, encam dikare were verast kirin:

kustomize build . > custom-config.yaml

Daneyên derketinê diyarker e (heman daneya têketinê dê heman encamên derketinê çêbike), ji ber vê yekê hûn ne hewce ne ku encamê li pelek tomar bikin. Di şûna wê de, ew dikare rasterast ji fermanek din re were derbas kirin:

kustomize build . | kubectl apply -f -

Taybetmendiyên kustomize jî bi rê ve têne gihîştin kubectl -k (ji guhertoya Kubernetes 1.14). Lêbelê, ji bîr mekin ku pakêta kustomize ya serbixwe ji pakêta kubectl ya yekbûyî zûtir tê nûve kirin (bi kêmanî ev yek di derheqê berdana Kubernetes 1.15 de ye).

Dibe ku xwendevan bipirsin: "Ger hûn dikarin rasterast pelan biguherînin çima ev hemî tevlihevî?" Pirsa mezin. Di mînaka me de, bi rastî dikare pelan biguherînin deployment.yaml и service.yaml rasterast, lê heke ew perçeyek projeya kesek din bin? Guhertina pelan rasterast dema ku guheztin li eslê/çavkaniyê têne çêkirin dijwar dike (heke ne mumkun be) ji nû ve avakirina forkekê. Bikaranîna kustomize dihêle hûn van guhertinan di pelê de navendî bikin kustomization.yaml, pelên orîjînal saxlem bihêlin û bi vî rengî heke hewce bike veavakirina pelên orîjînal hêsantir dike.

Feydeyên kustomize di rewşên karanîna tevlihevtir de diyar dibin. Di mînaka jorîn de kustomization.yaml û çavkanî di heman pelrêçê de ne. Lêbelê, kustomize piştgirî dide rewşên karanîna ku li wir veavakirinek bingehîn û gelek guhertoyên wê hene, ku wekî din jî tê zanîn. overlays. Mînakî, bikarhênerek dixwest ku Deployment û Karûbar ji bo nginx, ku min wekî mînak bikar anî, bigire û guhertoyên (an jî guhertoyên) wan pelan pêşkeftin, qonax, û hilberînê biafirîne. Ji bo vê yekê, ew ê hewceyê pêlavên jorîn û, bi rastî, çavkaniyên bingehîn bixwe hewce bike.

Ji bo ronîkirina ramana sergirtî û çavkaniyên bingehîn (çavkaniyên bingehîn), em bihesibînin ku pelrêçan xwedan strukturên jêrîn in:

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

Di pelê de base/kustomization.yaml bikarhênerên zeviyê bikar tînin resources bi tenê çavkaniyên ku kustomize divê tê de diyar bikin.

Di her pelan de overlays/{dev,staging,prod}/kustomization.yaml bikarhêner li zeviyê veavakirina bingehîn vedibêjin resources, û paşê ji bo guhertinên taybetî nîşan bide jîngeha dayîn. Mînakî, pel overlays/dev/kustomization.yaml dibe ku mîna mînaka berê hatî dayîn xuya bike:

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

Di vê rewşê de pelê overlays/prod/kustomization.yaml dikare bi tevahî cûda be:

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

Dema ku bikarhêner direve kustomize build . di katalogê de overlays/dev, kustomize dê vebijarka pêşkeftinê çêbike. Ger hûn birevin kustomize build . di katalogê de overlays/prod - hûn vebijarka hilberînê digirin. Û ev hemî - bêyî ku guhartinên orîjînal bikin (bingeh) dosyayan, hemû bi awayekî eşkere û diyarker. Hûn dikarin veavakirina bingehîn û pelrêçên sergirtî rasterast bi kontrolkirina guhertoyê re bişopînin, zanibin ku li ser bingeha van pelan hûn dikarin di her kêliyê de veavakirina xwestinê ji nû ve hilberînin.

Destpêkek Kurtî ya Kustomize
Not. werger.: Nîşanek ji belgenameya projeyê ya li ser karanîna serpêhatiyan di kustomize de

Kesayetî dikare pir ji ya ku di vê gotarê de tê nixumandin bêtir. Lêbelê, ez hêvî dikim ku ew wekî destpêkek baş be.

Çavkaniyên Additional

Di derbarê kustomize de gelek gotar û weşanên baş hene. Li vir çend hene ku min bi taybetî kêrhatî dît:

Not. werger.: Her weha hûn dikarin blokek girêdanên ku wekî hatine weşandin pêşniyar bikin Resources li ser malpera karûbar, li dûv re berhevokek vîdyoyan bi raporên herî dawî yên di derbarê kustomize de.

Ger pirs an pêşniyarên we ji bo baştirkirina vê materyalê hebin, ez her gav ji bersivdayînê re vekirî me. Hûn dikarin bi min re têkilî daynin Twitter an Kanala Kubernetes Slack. Kêfa xwe bi guherandina manîfestoyên xwe bi kustomize re xweş bikin!

PS ji wergêr

Li ser bloga me jî bixwînin:

Source: www.habr.com

Add a comment