ÄŖss ievads par Kustomize

PiezÄ«me. tulk.: rakstu ir uzrakstÄ«jis Skots Lovs, inženieris ar lielu pieredzi IT jomā, kurÅ” ir septiņu drukātu grāmatu (galvenokārt par VMware vSphere) autors/lÄ«dzautors. Tagad viņŔ strādā tā VMware meitasuzņēmumā Heptio (iegādāts 2016. gadā), kas specializējas mākoņdatniecÄ«bā un Kubernetes. Pats teksts kalpo kā kodolÄ«gs un viegli saprotams ievads Kubernetes konfigurācijas pārvaldÄ«bā, izmantojot tehnoloÄ£iju Pielāgot, kas nesen kļuva par daļu no K8s.

ÄŖss ievads par Kustomize

Kustomize ir rÄ«ks, kas ļauj lietotājiem ā€œpielāgot vienkārÅ”us, bez veidnes YAML failus dažādiem mērÄ·iem, atstājot sākotnējo YAML neskartu un lietojamuā€ (apraksts aizgÅ«ts tieÅ”i no kustomize repozitorijs vietnē GitHub). Kustomize var palaist tieÅ”i vai, sākot ar Kubernetes 1.14, izmantot kubectl -k lai piekļūtu tā funkcionalitātei (lai gan no Kubernetes 1.15 atseviŔķais binārais fails ir jaunāks par kubectl iebÅ«vētajām iespējām). (PiezÄ«me. tulk.: Un ar neseno izlaidumu Kubernetes 1.16 pielāgot atbalsta arÄ« utilÄ«tprogrammā kubeadm.) Å ajā ierakstā es vēlos iepazÄ«stināt lasÄ«tājus ar kustomize pamatiem.

VienkārŔākajā formā/lietojumprogrammā kustomize ir vienkārÅ”i resursu kolekcija (YAML faili, kas definē Kubernetes objektus: izvietoÅ”ana, pakalpojumi utt.), kā arÄ« saraksts ar norādÄ«jumiem par izmaiņām, kas jāveic Å”ajos resursos. Tāpat kā make izmanto instrukciju kopu, kas ietverta Makefile, un Docker izveido konteineru, pamatojoties uz instrukcijām no Dockerfile, pielāgot lietojumus kustomization.yaml lai saglabātu norādÄ«jumus par to, kādas izmaiņas lietotājs vēlas veikt resursu kopā.

Šeit ir faila piemērs kustomization.yaml:

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

Es nemēģināŔu runāt par visiem iespējamajiem faila laukiem. kustomization.yaml (par to ir labi uzrakstÄ«ts Å”eit), bet es sniegÅ”u Ä«su paskaidrojumu par konkrētu piemēru:

  • Lauks resources norāda, ko (kādus resursus) kustomize mainÄ«s. Å ajā gadÄ«jumā tas meklēs resursus failos deployment.yaml Šø service.yaml savā direktorijā (ja nepiecieÅ”ams, varat norādÄ«t pilnus vai relatÄ«vus ceļus).
  • Lauks namePrefix uzdod kustomize pievienot noteiktu prefiksu (Å”ajā gadÄ«jumā - dev-), lai atribÅ«tu name visi laukā definētie resursi resources. Tādējādi, ja IzvietoÅ”anai ir name ar nozÄ«mi nginx-deployment, pielāgojiet to dev-nginx-deployment.
  • Lauks namespace uzdod kustomize pievienot doto nosaukumvietu visiem resursiem. Å ajā gadÄ«jumā izvietoÅ”ana un apkalpoÅ”ana tiks iekļauta nosaukumvietā development.
  • Visbeidzot, lauks commonLabels satur iezÄ«mju kopu, kas tiks pievienota visiem resursiem. MÅ«su piemērā kustomize resursiem pieŔķirs etiÄ·eti ar nosaukumu environment un nozÄ«me development.

Ja lietotājs to dara kustomize build . direktorijā ar failu kustomization.yaml un nepiecieÅ”amie resursi (t.i., faili deployment.yaml Šø service.yaml), tad izejā tas saņems tekstu ar izmaiņām, kas norādÄ«tas kustomization.yaml.

ÄŖss ievads par Kustomize
PiezÄ«me. tulk.: Ilustrācija no projekta dokumentācijas par kustomize ā€œvienkārÅ”oā€ lietoÅ”anu

Izvadi var novirzÄ«t, ja nepiecieÅ”ams veikt izmaiņas:

kustomize build . > custom-config.yaml

Izvades dati ir deterministiski (vieni un tie paÅ”i ievades dati radÄ«s tādus paÅ”us izvades rezultātus), tāpēc jums nav jāsaglabā rezultāts failā. Tā vietā to var tieÅ”i nodot citai komandai:

kustomize build . | kubectl apply -f -

Kustomize funkcijām var piekļūt arÄ«, izmantojot kubectl -k (kopÅ” Kubernetes versijas 1.14). Tomēr ņemiet vērā, ka atseviŔķā kustomize pakotne tiek atjaunināta ātrāk nekā integrētā kubectl pakotne (vismaz tas attiecas uz Kubernetes 1.15 versiju).

LasÄ«tāji var jautāt: "Kāpēc Ŕī sarežģītÄ«ba, ja failus var rediģēt tieÅ”i?" Lielisks jautājums. MÅ«su piemērā patieŔām viens var modificēt failus deployment.yaml Šø service.yaml tieÅ”i, bet ja tie ir kāda cita projekta dakÅ”a? Mainot failus tieÅ”i, ir grÅ«ti (ja ne neiespējami) mainÄ«t dakÅ”u, kad tiek veiktas izmaiņas izcelsmē/avotā. Kustomize izmantoÅ”ana ļauj centralizēt Ŕīs izmaiņas failā kustomization.yaml, atstājot oriÄ£inālos failus neskartus un tādējādi atvieglojot oriÄ£inālo failu atkārtotu bāzi, ja nepiecieÅ”ams.

Kustomize priekÅ”rocÄ«bas kļūst acÄ«mredzamas sarežģītākos lietoÅ”anas gadÄ«jumos. IepriekÅ” minētajā piemērā kustomization.yaml un resursi atrodas tajā paŔā direktorijā. Tomēr kustomize atbalsta lietoÅ”anas gadÄ«jumus, kad ir bāzes konfigurācija un daudzi tās varianti, kas pazÄ«stami arÄ« kā Pārklājumi. Piemēram, lietotājs vēlējās izmantot nginx izvietoÅ”anu un pakalpojumu, ko izmantoju kā piemēru, un izveidot Å”o failu izstrādes, iestudÄ“Å”anas un ražoÅ”anas versijas (vai variantus). Lai to izdarÄ«tu, viņam bÅ«s nepiecieÅ”ami iepriekÅ” minētie pārklājumi un faktiski arÄ« paÅ”i pamata resursi.

Lai ilustrētu ideju par pārklājumiem un pamatā esoÅ”ajiem resursiem (bāzes resursi), pieņemsim, ka direktorijiem ir Ŕāda struktÅ«ra:

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

Failā base/kustomization.yaml lietotāji, kas izmanto lauku resources vienkārÅ”i deklarējiet resursus, kas jāiekļauj kustomizei.

Katrā no failiem overlays/{dev,staging,prod}/kustomization.yaml lietotāji atsaucas uz pamata konfigurāciju laukā resourcesun pēc tam norādiet konkrētas izmaiņas dotā vide. Piemēram, fails overlays/dev/kustomization.yaml varētu izskatÄ«ties kā iepriekÅ” sniegtais piemērs:

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

Šajā gadījumā fails overlays/prod/kustomization.yaml varētu būt pavisam savādāk:

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

Kad lietotājs darbojas kustomize build . katalogā overlays/dev, kustomize Ä£enerēs izstrādes iespēju. Ja tu skrien kustomize build . katalogā overlays/prod - jÅ«s saņemat ražoÅ”anas iespēju. Un tas viss ā€“ neveicot nekādas izmaiņas oriÄ£inālā (bāze) failus deklaratÄ«vā un deterministiskā veidā. Pamatkonfigurācijas un pārklājuma direktorijus varat pievienot tieÅ”i versijas kontrolei, zinot, ka, pamatojoties uz Å”iem failiem, jÅ«s jebkurā laikā varat reproducēt vēlamo konfigurāciju.

ÄŖss ievads par Kustomize
Piezīme. tulk.: Ilustrācija no projekta dokumentācijas par pārklājumu izmantoŔanu kustomize

Pielāgot var daudz vairāk nekā Å”ajā rakstā. Tomēr es ceru, ka tas kalpos kā labs ievads.

Papildu resursi

Par kustomize ir daudz labu rakstu un publikāciju. Šeit ir daži, kas man Ŕķita īpaŔi noderīgi:

PiezÄ«me. tulk.: varat arÄ« ieteikt saiÅ”u bloku, kas publicēts kā resursi utilÄ«ta vietnē, kam seko videoklipu kolekcija ar jaunākajiem ziņojumiem par kustomize.

Ja jums ir jautājumi vai ieteikumi Ŕī materiāla uzlaboÅ”anai, vienmēr esmu atvērts atsauksmēm. JÅ«s varat sazināties ar mani pa tālr Twitter vai Kubernetes Slack kanāls. Izklaidējieties, modificējot savus manifestus, izmantojot kustomize!

PS no tulka

Lasi arī mūsu emuārā:

Avots: www.habr.com

Pievieno komentāru