Stručný úvod do Kustomize

Poznámka. preklad.: Článok napísal Scott Lowe, inžinier s rozsiahlymi skúsenosťami v IT, ktorý je autorom/spoluautorom siedmich tlačených kníh (hlavne o VMware vSphere). Teraz pracuje pre jej dcérsku spoločnosť VMware Heptio (získaná v roku 2016), ktorá sa špecializuje na cloud computing a Kubernetes. Samotný text slúži ako stručný a ľahko zrozumiteľný úvod do správy konfigurácií pre Kubernetes pomocou technológie Prispôsobiť, ktorá sa nedávno stala súčasťou K8s.

Stručný úvod do Kustomize

Kustomize je nástroj, ktorý používateľom umožňuje „prispôsobovať jednoduché súbory YAML bez šablón na rôzne účely, pričom pôvodný YAML ponecháva nedotknutý a použiteľný“ (popis požičaný priamo od kustomize úložisko na GitHub). Kustomize je možné spustiť priamo alebo od Kubernetes 1.14 použiť kubectl -k na prístup k jeho funkciám (hoci od Kubernetes 1.15 je samostatný binárny súbor novší ako možnosti zabudované do kubectl). (Poznámka. preklad.: A s nedávnym vydaním Kubernetes 1.16 prispôsobiť podporovaný aj v nástroji kubeadm.) V tomto príspevku chcem čitateľom predstaviť základy kustomize.

Vo svojej najjednoduchšej forme/aplikácii je kustomize jednoducho zbierka zdrojov (súbory YAML, ktoré definujú objekty Kubernetes: Nasadenia, Služby atď.) plus zoznam pokynov na zmeny, ktoré je potrebné v týchto zdrojoch vykonať. Rovnako ako make používa inštrukčnú sadu obsiahnutú v Makefilea Docker zostaví kontajner na základe pokynov z Dockerfile, prispôsobenie použitia kustomization.yaml na uloženie pokynov o tom, aké zmeny chce používateľ vykonať v skupine zdrojov.

Tu je príklad súboru kustomization.yaml:

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

Nebudem sa snažiť hovoriť o všetkých možných poliach v súbore. kustomization.yaml (dobre sa o tom píše tu), ale uvediem krátke vysvetlenie konkrétneho príkladu:

  • Pole resources označuje, čo (ktoré zdroje) kustomize zmení. V tomto prípade bude hľadať zdroje v súboroch deployment.yaml и service.yaml vo vašom adresári (v prípade potreby môžete zadať úplné alebo relatívne cesty).
  • Pole namePrefix prikáže kustomize pridať určitú predponu (v tomto prípade - dev-) pripísať name všetky zdroje definované v poli resources. Ak teda Deployment má name so zmyslom nginx-deployment, prispôsobiť to urobí dev-nginx-deployment.
  • Pole namespace prikáže kustomize pridať daný menný priestor ku všetkým zdrojom. V tomto prípade Deployment and Service spadnú do menného priestoru development.
  • Nakoniec pole commonLabels obsahuje sadu štítkov, ktoré sa pridajú ku všetkým zdrojom. V našom príklade kustomize priradí k zdrojom štítok s názvom environment a zmysel development.

Ak to používateľ urobí kustomize build . v adresári so súborom kustomization.yaml a potrebné zdroje (t.j. súbory deployment.yaml и service.yaml), potom na výstupe dostane text so zmenami uvedenými v kustomization.yaml.

Stručný úvod do Kustomize
Poznámka. preklad.: Ilustrácia z projektovej dokumentácie o „jednoduchom“ použití kustomize

Výstup je možné presmerovať, ak je potrebné vykonať zmeny:

kustomize build . > custom-config.yaml

Výstupné údaje sú deterministické (rovnaké vstupné údaje prinesú rovnaké výstupné výsledky), takže výsledok nemusíte ukladať do súboru. Namiesto toho ho možno odovzdať priamo inému príkazu:

kustomize build . | kubectl apply -f -

K funkciám kustomize je možné pristupovať aj cez kubectl -k (od verzie Kubernetes 1.14). Majte však na pamäti, že samostatný balík kustomize sa aktualizuje rýchlejšie ako integrovaný balík kubectl (aspoň je to tak v prípade vydania Kubernetes 1.15).

Čitatelia sa môžu pýtať: „Prečo taká zložitosť, ak môžete súbory upravovať priamo?“ Skvelá otázka. V našom príklade naozaj jeden môže upravovať súbory deployment.yaml и service.yaml priamo, ale čo ak sú forkom projektu niekoho iného? Priama zmena súborov sťažuje (ak nie znemožní) opätovné založenie vidlice, keď sa vykonajú zmeny v pôvode/zdroji. Použitie kustomize vám umožňuje centralizovať tieto zmeny v súbore kustomization.yaml, ponechajúc pôvodné súbory nedotknuté, čím sa v prípade potreby uľahčí opätovné založenie pôvodných súborov.

Výhody kustomize sa prejavia v zložitejších prípadoch použitia. Vo vyššie uvedenom príklade kustomization.yaml a zdroje sú v rovnakom adresári. Kustomize však podporuje prípady použitia, kde existuje základná konfigurácia a mnoho jej variantov, známych aj ako presahmi. Napríklad, používateľ chcel vziať Deployment and Service for nginx, ktorý som použil ako príklad, a vytvoriť vývojové, pracovné a produkčné verzie (alebo varianty) týchto súborov. Na to bude potrebovať spomínané prekrytia a vlastne aj samotné základné prostriedky.

Na ilustráciu myšlienky prekrytí a základných zdrojov (základné zdroje)Predpokladajme, že adresáre majú nasledujúcu štruktúru:

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

V súbore base/kustomization.yaml používateľov, ktorí toto pole používajú resources jednoducho deklarujte zdroje, ktoré by kustomize mala obsahovať.

V každom zo súborov overlays/{dev,staging,prod}/kustomization.yaml užívatelia odkazujú na základnú konfiguráciu v poli resourcesa potom uveďte konkrétne zmeny pre dané prostredie. Napríklad súbor overlays/dev/kustomization.yaml môže vyzerať ako príklad uvedený vyššie:

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

V tomto prípade súbor overlays/prod/kustomization.yaml môže to byť úplne inak:

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

Keď používateľ spustí kustomize build . v katalógu overlays/dev, kustomize vygeneruje možnosť vývoja. Ak bežíte kustomize build . v katalógu overlays/prod - získate možnosť výroby. A to všetko – bez vykonania akýchkoľvek zmien oproti originálu (základňa) a to všetko deklaratívnym a deterministickým spôsobom. Môžete odovzdať základnú konfiguráciu a prekryvné adresáre priamo do správy verzií s vedomím, že na základe týchto súborov môžete kedykoľvek reprodukovať požadovanú konfiguráciu.

Stručný úvod do Kustomize
Poznámka. preklad.: Ilustrácia z projektovej dokumentácie o použití presahov v kustomize

Prispôsobiť plechovku viac viac, ako je uvedené v tomto článku. Dúfam však, že poslúži ako dobrý úvod.

Dodatočné zdroje

Existuje veľa dobrých článkov a publikácií o kustomize. Tu je niekoľko, ktoré som považoval za obzvlášť užitočné:

Poznámka. preklad.: Môžete tiež odporučiť blok odkazov publikovaný ako zdroje na webovej stránke pomôcky, po ktorej nasleduje zbierka videí s najnovšími správami o kustomize.

Ak máte otázky alebo návrhy na zlepšenie tohto materiálu, som vždy otvorený spätnej väzbe. Môžete ma kontaktovať na Twitter alebo Kanál Kubernetes Slack. Bavte sa upravovaním svojich manifestov pomocou kustomize!

PS od prekladateľa

Prečítajte si aj na našom blogu:

Zdroj: hab.com

Pridať komentár