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. , mis on hiljuti lisandunud K8s'i koosseisu.

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'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 kustomize 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 ), aga annan lĂŒhikese seletuse konkreetse nĂ€ite kohta:
- VĂ€li
ressursidtÀhendab, et (milliseid ressursse) kustomize muudab. Antud juhul otsib ta ressursse failidestdeployment.yamljaservice.yamloma kataloogis (vajadusel vÔib kasutada tÀielikke vÔi suhtelisi radu). - VÀli
namePrefixmÀÀrab kustomize'ile, et ta lisab kindla eesliite (antud juhul -dev-) kÔigi ressursside atribuudile, mis on mÀÀratletud vÀljasnimi. Seega, kui Deployment'is onressursidnginx-deploymentnimivÀÀrtusega, muudab kustomize selledev-nginx-deploymentmÀÀrab kustomize'ile, et ta lisab mÀÀratud nimeserva kÔigile ressurssidele. Antud juhul, Deployment ja Service sattuvad nimetuse alla. - VÀli
namespacenÔuab kustomize'ilt, et see lisaks mÀÀratud nimedele kÔigile ressurssidele. Antud juhul kuuluvad Deployment ja Service mÀÀratud nimesseareng. - LÔpuks, vÀli
commonLabelssisaldab mÀrgiste kogumit, mis lisatakse kÔigile ressurssidele. Meie nÀites omistab kustomize ressurssidele mÀrgise nimegakeskkondja vÀÀrtusegaareng.
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.

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.yamlVÀ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.

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 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 vĂ”i . Nautige oma manifeestide muutmist kustomize'i abil!
P.S. tÔlkijalt
Lugege ka meie blogist:
- «»;
- «»;
- «»;
- «».
Allikas: habr.com
