Kustomize lühitutvustus

Märge. tõlge: Artikli kirjutas ulatusliku IT-alase kogemusega insener Scott Lowe, kes on seitsme trükitud raamatu autor/kaasautor (peamiselt VMware vSphere'is). Nüüd töötab ta selle VMware tütarettevõttes Heptio (omandatud 2016. aastal), mis on spetsialiseerunud pilvandmetöötlusele ja Kubernetesele. Tekst ise on lühike ja hõlpsasti mõistetav sissejuhatus Kubernetese konfiguratsioonihaldusse tehnoloogia abil Kohanda, millest sai hiljuti osa K8s.

Kustomize lühitutvustus

Kustomize on tööriist, mis võimaldab kasutajatel kohandada lihtsaid, mallivabasid YAML-faile erinevatel eesmärkidel, jättes algse YAML-i puutumatuks ja kasutatavaks (kirjeldus on laenatud otse kustomize hoidla GitHubis). Kustomize'i saab käivitada otse või alates Kubernetes 1.14-st kasutada kubectl -k selle funktsioonidele juurdepääsuks (kuigi Kubernetes 1.15 seisuga on eraldiseisev binaarfail uuem kui kubectli sisseehitatud võimalused). (Märge. tõlge: Ja hiljutise väljalaskega Kubernetes 1.16 kohandada toetab ka utiliidis kubeadm.) Selles postituses tahan tutvustada lugejatele kustomize põhitõdesid.

Lihtsaimas vormis/rakenduses on kustomize lihtsalt ressursside kogum (YAML-failid, mis määratlevad Kubernetese objekte: juurutused, teenused jne) ning nendes ressurssides tehtavate muudatuste juhiste loend. Täpselt nagu make kasutab selles sisalduvat juhiste komplekti Makefileja Docker koostab konteineri juhiste alusel Dockerfile, kohandada kasutusalasid kustomization.yaml et salvestada juhiseid selle kohta, milliseid muudatusi kasutaja soovib ressursside komplektis teha.

Siin on näidisfail kustomization.yaml:

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

Ma ei püüa rääkida kõigist faili võimalikest väljadest. kustomization.yaml (sellest on hästi kirjutatud siin), kuid ma annan lühidalt konkreetse näite:

  • Väli resources näitab, mida (millised ressursid) kustomize muudab. Sel juhul otsib see failidest ressursse deployment.yaml и service.yaml oma kataloogis (vajadusel saate määrata täielikud või suhtelised teed).
  • Väli namePrefix käsib kustomize'il lisada teatud eesliide (antud juhul - dev-) omistada name kõik valdkonnas määratletud ressursid resources. Seega, kui juurutamisel on name tähendusega nginx-deployment, kohandamine teeb seda dev-nginx-deployment.
  • Väli namespace annab kustomize'ile käsu lisada antud nimeruum kõikidele ressurssidele. Sel juhul kuuluvad juurutamine ja teenus nimeruumi development.
  • Lõpuks väli commonLabels sisaldab siltide komplekti, mis lisatakse kõikidele ressurssidele. Meie näites määrab kustomize ressurssidele nimega sildi environment ja tähendus development.

Kui kasutaja seda teeb kustomize build . failiga kataloogis kustomization.yaml ja vajalikud ressursid (nt failid deployment.yaml и service.yaml), siis saab ta väljundis teksti punktis määratud muudatustega kustomization.yaml.

Kustomize lühitutvustus
Märge. tõlge: Illustratsioon projekti dokumentatsioonist kustomize “lihtsa” kasutamise kohta

Väljundit saab ümber suunata, kui on vaja teha muudatusi:

kustomize build . > custom-config.yaml

Väljundandmed on deterministlikud (sama sisendandmed annavad samad väljundtulemused), nii et te ei pea tulemust faili salvestama. Selle asemel saab selle otse teisele käsule edastada:

kustomize build . | kubectl apply -f -

Kustomize funktsioonidele pääseb juurde ka kaudu kubectl -k (alates Kubernetese versioonist 1.14). Kuid pidage meeles, et eraldiseisvat kustomize paketti värskendatakse kiiremini kui integreeritud kubectli paketti (vähemalt Kubernetes 1.15 versiooni puhul on see nii).

Lugejad võivad küsida: "Milleks see keerukus, kui saate faile otse redigeerida?" Suurepärane küsimus. Meie näites tõesti keegi ei saa faile muuta deployment.yaml и service.yaml otse, aga kui need on kellegi teise projekti kahvel? Failide otsene muutmine raskendab (kui mitte võimatu) lähtekoha/allika muudatuste tegemisel kahvli uuesti määramist. Kustomize'i kasutamine võimaldab need muudatused faili koondada kustomization.yaml, jättes originaalfailid puutumata ja muutes seega vajaduse korral algfailide ümberbaasimise lihtsamaks.

Kustomize'i eelised ilmnevad keerukamate kasutusjuhtude korral. Ülaltoodud näites kustomization.yaml ja ressursid on samas kataloogis. Kustomize toetab aga kasutusjuhtumeid, kus on olemas põhikonfiguratsioon ja palju selle variante, tuntud ka kui ülekatted. Näiteks soovis kasutaja kasutada nginxi juurutamist ja teenust, mida ma näitena kasutasin, ning luua nendest failidest arendus-, lavastus- ja tootmisversioonid (või variandid). Selleks vajab ta ülalmainitud katteid ja tegelikult ka põhiressursse.

Ülekatete ja nende aluseks olevate ressursside idee illustreerimiseks (baasressursid), oletame, et kataloogidel on järgmine struktuur:

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

Failis base/kustomization.yaml välja kasutavad kasutajad resources lihtsalt deklareerige ressursid, mida kustomize peaks sisaldama.

Igas failis overlays/{dev,staging,prod}/kustomization.yaml kasutajad viitavad väljal olevale põhikonfiguratsioonile resourcesja seejärel märkige konkreetsed muudatused antud keskkond. Näiteks fail overlays/dev/kustomization.yaml võib välja näha nagu varem toodud näide:

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

Sel juhul fail overlays/prod/kustomization.yaml võib olla täiesti erinev:

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

Kui kasutaja jookseb kustomize build . kataloogis overlays/dev, kustomize loob arendusvõimaluse. Kui jooksed kustomize build . kataloogis overlays/prod - saate tootmisvõimaluse. Ja seda kõike – originaalis muudatusi tegemata (alus) failid, kõik deklaratiivsel ja deterministlikul viisil. Põhikonfiguratsiooni ja ülekattekataloogid saate sisestada otse versioonikontrolli, teades, et nende failide põhjal saate soovitud konfiguratsiooni igal ajal reprodutseerida.

Kustomize lühitutvustus
Märge. tõlge: illustratsioon projekti dokumentatsioonist ülekatete kasutamise kohta kustomize'is

Kohandada saab palju rohkem kui selles artiklis käsitletud. Loodan siiski, et see on hea sissejuhatus.

Lisaressursid

Kustomize kohta on palju häid artikleid ja väljaandeid. Siin on mõned, mis mulle eriti kasulikud olid:

Märge. tõlge: võite soovitada ka linkide plokki, mis on avaldatud kui Vahendid utiliidi veebisaidil, millele järgneb videokogu viimaste aruannetega kustomize'i kohta.

Kui teil on küsimusi või ettepanekuid selle materjali täiustamiseks, olen alati avatud tagasisidele. Minuga saate ühendust võtta aadressil puperdama või Kubernetes Slacki kanal. Nautige oma manifestide muutmist kustomize'iga!

PS tõlkijalt

Loe ka meie blogist:

Allikas: www.habr.com

Lisa kommentaar