LĂŒhike sissejuhatus Kustomize'i

MĂ€rkus tĂ”lke kohta.: Artikli autor on Scott Lowe, kogenud IT-insener, kes on seitse raamatut (enamasti VMware vSphere'ist) autor vĂ”i kaasautor. Praegu töötab ta VMware tĂŒtarfirma Heptio (omandatud 2016. aastal) juures ning spetsialiseerub pilvetehnoloogiatele ja Kubernetes'ele. Artikli sisu on lĂŒhike ja arusaadav sissejuhatus Kubernetes'e konfiguratsioonihalduse teemal. Kustomize, mis on hiljuti lisandunud K8s'i koosseisu.

LĂŒhike sissejuhatus Kustomize'i

Kustomize on tööriist, mis vÔimaldab kasutajatel "kohandada lihtsaid ja mallideta YAML-faile erinevate eesmÀrkide jaoks, jÀttes originaali puutumata ja kasutamiseks sobivaks" (kirjeldus on otse vÔetud kustomize GitHub'i hoidlast). Kustomize'i saab kÀivitada otse vÔi, alates Kubernetes 1.14, kasutada kubectl -k selle funktsioonide juurde pÀÀsemiseks (kuigi Kubernetes'e 1.15 puhul on eraldi binaarfail uuem kui kubectl'i integreeritud funktsioonid). (MÀrkus tÔlke kohta.: Ja hiljuti vÀlja antud Kubernetes 1.16 kustomize toetatud ka kubeadm'i utiliidis.) Selles vÀljaandes soovin tutvustada lugejatele kustomize'i pÔhialuseid.

Koheselt kasutatuna on kustomize lihtsalt ressursside kogum (YAML-failid, mis mÀÀratlevad Kubernetes'e objekte: Deployments, Services jne) koos loendiga muudatustest, mida tuleb neisse ressurssidesse teha. Sarnaselt sellele, nagu make kasutab juhiseid, mis sisalduvad Makefile, ja Docker koostab konteineri, tuginedes juhistele, mis on pÀrit Dockerfile, kustomize kasutab kustomization.yaml kasutaja soovitud muudatuste mÀÀratlemiseks ressursside kogumisse.

Siin on nÀide failist: kustomization.yaml:

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

Ma ei pĂŒĂŒa rÀÀkida kĂ”igist vĂ”imalustest failis kustomization.yaml (sellest on kirjutatud hea artikkel siin), aga annan lĂŒhikese seletuse konkreetse nĂ€ite kohta:

  • VĂ€li ressursid tĂ€hendab, et (milliseid ressursse) kustomize muudab. Antud juhul otsib ta ressursse failidest deployment.yaml ja service.yaml oma kataloogis (vajadusel vĂ”ib kasutada tĂ€ielikke vĂ”i suhtelisi radu).
  • VĂ€li namePrefix mÀÀrab kustomize'ile, et ta lisab kindla eesliite (antud juhul - dev-) kĂ”igi ressursside atribuudile, mis on mÀÀratletud vĂ€ljas nimi . Seega, kui Deployment'is on ressursidnginx-deployment nimi vÀÀrtusega , muudab kustomize selledev-nginx-deployment mÀÀrab kustomize'ile, et ta lisab mÀÀratud nimeserva kĂ”igile ressurssidele. Antud juhul, Deployment ja Service sattuvad nimetuse alla.
  • VĂ€li namespace nĂ”uab kustomize'ilt, et see lisaks mÀÀratud nimedele kĂ”igile ressurssidele. Antud juhul kuuluvad Deployment ja Service mÀÀratud nimesse areng.
  • LĂ”puks, vĂ€li commonLabels sisaldab mĂ€rgiste kogumit, mis lisatakse kĂ”igile ressurssidele. Meie nĂ€ites omistab kustomize ressurssidele mĂ€rgise nimega keskkond ja vÀÀrtusega areng.

Kui kasutaja kÀivitab kustomize build . kaustas, kus on fail kustomization.yaml ja vajalikud ressursid (st failid deployment.yaml ja service.yaml), saab ta vÀljundina teksti koos muutustega, mis on mÀrgitud kustomization.yaml.

LĂŒhike sissejuhatus Kustomize'i
MÀrkus tÔlke kohta.: Illustratsioon projekti dokumentatsioonist "lihtsa" kustomize kasutamise kohta

VĂ€ljundit saab suunata, kui on vajalik muudatuste fikseerimine:

kustomize build . > custom-config.yaml

VÀljund on deterministlik (kui sisenedes on andmed samad, saadakse vÀljundis samad tulemused), seega ei pea tulemust faili salvestama. Selle asemel saab selle kohe edastada teisele kÀsurile:

kustomize build . | kubectl apply -f -

Kustomize'i funktsioonidele pÀÀseb ligi ka lÀbi kubectl -k (alates Kubernetes versioonist 1.14). Kuid pidage meeles, et eraldi kustomize'i pakk uuendatakse kiiremini kui kubectl'isse integreeritud (vÀhemalt on see nii Kubernetes 1.15 vÀljaande puhul).

Lugejad vĂ”ivad kĂŒsida: "Miks on kĂ”ik need keerukused vajalikud, kui faile saab otse redigeerida?" SuurepĂ€rane kĂŒsimus. Meie nĂ€ites on tĂ”esti saab failide deployment.yaml ja service.yaml otse muutmine vĂ”imalik, kuid mis siis, kui need on kellegi teise projekti fork? Failide otsene muutmine muudab harva (kui mitte vĂ”imatuks) fork'i rebase, kui lĂ€hte/koodi muudetakse. Kustomize'i kasutamine vĂ”imaldab neid muutusi keskenduda faili kustomization.yaml, jĂ€ttes originaalfailid puutumatuks ja muutes vajadusel lĂ€htefailide rebase'i lihtsamaks.

Kustomize'i eelised muutuvad ilmsiks keerukamates kasutusjuhtudes. Ülaltoodud nĂ€ites kustomization.yaml ja ressursid on samas kaustas. Kuid kustomize toetab kasutusjuhte, kus on pĂ”hiline konfigureerimine ja palju selle variante, tuntud ka kui kubectl create cronjob. NĂ€iteks soovis kasutaja vĂ”tta Deployment ja Service nginx'ist, mida kasutasin nĂ€itena, ja luua development-, staging- ja production-versioonid (vĂ”i variandid) nendest failidest. Selleks on tal vaja ĂŒlalmainitud overlay'd ja sama pĂ”hiressursse.

Kasutades overlay'de ja pÔhiressurside ideed (base resources), oletame, et kaustadel on jÀrgmine struktuur:

- baas
  - deployment.yaml
  - service.yaml
  - kustomization.yaml
- overlayd
  - dev
    - kustomization.yaml
  - staging
    - kustomization.yaml
  - prod
    - kustomization.yaml

Failis baas/kustomization.yaml kasutajad kasutavad valikut ressursid lihtsalt kuulutavad ressursid, mida kustomize peab sisaldama.

Igas failis overlayd/{dev,staging,prod}/kustomization.yaml kasutajad viitavad pÔhikonfiguratsioonile valikus ressursid, ja seejÀrel mÀÀravad spetsiifilised muudatused antud keskkonnale. NÀiteks vÔib fail overlayd/dev/kustomization.yaml nÀha vÀlja nagu eelnevalt nÀidatud nÀide:

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

Selle puhul vÔib fail overlayd/prod/kustomization.yaml olla tÀiesti erinev:

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

Kui kasutaja kĂ€ivitab kustomize build . kaustas overlayd/dev, kustomize genereerib arenduse variandi. Kui aga kĂ€ivitada kustomize build . kaustas overlayd/prod , siis saadakse tootmisvariant. Ja kĂ”ik see toimub ilma algsete muutmisteta (baas) failides, ja see kĂ”ik toimub deklaratiivse ja mÀÀratletud viisi kaudu. VĂ”ib commtiida pĂ”hikonfiguratsiooni ja overlaydirektorid otse versioonihaldussĂŒsteemi, teades, et nende failide alusel on igal ajal vĂ”imalik soovitud konfiguratsiooni taastada.

LĂŒhike sissejuhatus Kustomize'i
MÀrkus tÔlke kohta.: Illustratsioon projekti dokumentatsioonist overlays'i kasutamise kohta kustomizes

Kustomize oskab mÀrksa rohkem, kui selles artiklis rÀÀgitakse. Loodetavasti on see hea sissejuhatus.

Lisainfo

On palju hÀid artikleid ja vÀljaandeid kustomize'i kohta. Siin on mÔned, mida pean eriti kasulikeks:

MÀrkus tÔlke kohta.: Samuti vÔiks soovitada linkide plokki, mis on avaldatud Ressursid utiliidi veebilehel, ja sellele jÀrgnev videokogum viimaste kustomize'i esitluste kohta.

Kui teil on kĂŒsimusi vĂ”i ettepanekuid selle materjali tĂ€iustamiseks, olen alati tagasiside saamiseks avatud. VĂ”ite minuga ĂŒhendust vĂ”tta Twitteris vĂ”i Kubernetes'i Slack-kanalis. Nautige oma manifeestide muutmist kustomize'i abil!

P.S. tÔlkijalt

Lugege ka meie blogist:

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster