Eng kuerz Aféierung fir Kustomize

Note. iwwersat.: Den Artikel gouf vum Scott Lowe geschriwwen, en Ingenieur mat extensiv Erfahrung am IT, deen den Auteur / Co-Autor vu siwe gedréckte Bicher ass (haaptsächlech op VMware vSphere). Hie schafft elo fir seng VMware Duechtergesellschaft Heptio (opkaf am 2016), spezialiséiert op Cloud Computing a Kubernetes. Den Text selwer déngt als präzis an einfach ze verstoen Aféierung an d'Konfiguratiounsmanagement fir Kubernetes mat Technologie Personnaliséieren, déi kuerzem Deel vun K8s gouf.

Eng kuerz Aféierung fir Kustomize

Kustomize ass en Tool dat d'Benotzer erlaabt "einfach, Template-gratis YAML Dateien fir verschidden Zwecker ze personaliséieren, déi ursprénglech YAML intakt a benotzbar ze loossen" (Beschreiwung direkt geléint vun kustomize Repository op GitHub). Kustomize kann direkt lafen oder, wéi vu Kubernetes 1.14, benotzt ginn kubectl -k fir Zougang zu senger Funktionalitéit ze kréien (obwuel wéi vu Kubernetes 1.15, ass déi getrennte Binär méi nei wéi d'Fäegkeeten, déi an kubectl agebaut sinn). (Note. iwwersat.: A mat der rezenter Verëffentlechung Kubernetes 1.16 personaliséiere ënnerstëtzt vun och am Kubeadm Utility.) An dësem Post wëll ech d'Lieser d'Grondlage vum kustomize virstellen.

A senger einfachster Form / Applikatioun ass kustomize einfach eng Sammlung vu Ressourcen (YAML Dateien déi Kubernetes Objekter definéieren: Deployments, Services, etc.) plus eng Lëscht vun Instruktioune fir Ännerungen déi op dës Ressourcen gemaach musse ginn. Just wéi d'Make benotzt den Instruktiounsset an Makefile, an Docker baut de Container baséiert op Instruktioune vun Dockerfile, Benotzerdefinéiert benotzt kustomization.yaml fir Instruktiounen ze späicheren iwwer wéi eng Ännerunge de Benotzer op eng Rei vu Ressourcen maache wëllt.

Hei ass e Beispill Fichier kustomization.yaml:

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

Ech probéieren net iwwer all méiglech Felder an der Datei ze schwätzen. kustomization.yaml (dëst ass gutt geschriwwen hei), mee ech ginn eng kuerz Erklärung vun engem spezifesche Beispill:

  • Beräich resources weist wat (wat Ressourcen) kustomize wäert änneren. An dësem Fall wäert et no Ressourcen an Dateien sichen deployment.yaml и service.yaml an Ärem Verzeechnes (Dir kënnt voll oder relativ Weeër spezifizéieren wann néideg).
  • Beräich namePrefix instruéiert kustomize fir e bestëmmte Präfix ze addéieren (an dësem Fall - dev-) zouzeschreiwen name all Ressourcen am Feld definéiert resources. Also, wann Deployment huet name mat Bedeitung nginx-deployment, personaliséiere wäert et maachen dev-nginx-deployment.
  • Beräich namespace instruéiert kustomize fir de gegebene Nummraum un all Ressourcen ze addéieren. An dësem Fall falen Deployment a Service an den Nummraum development.
  • Endlech, den Terrain commonLabels enthält eng Rei vun Etiketten déi zu all Ressourcen dobäi ginn. An eisem Beispill gëtt kustomize e Label un d'Ressourcen mam Numm zouginn environment a Bedeitung development.

Wann de Benotzer et mécht kustomize build . am Dossier mat der Datei kustomization.yaml an déi néideg Ressourcen (dh Dateien deployment.yaml и service.yaml), dann op der Ausgab kritt en Text mat den Ännerungen, déi an kustomization.yaml.

Eng kuerz Aféierung fir Kustomize
Note. iwwersat.: Illustratioun aus dem Projet Dokumentatioun op der "einfach" Benotzung vun kustomize

D'Ausgab kann ëmgeleet ginn wann Ännerunge mussen engagéiert ginn:

kustomize build . > custom-config.yaml

D'Ausgabdaten sinn deterministesch (déi selwecht Inputdaten produzéieren déiselwecht Ausgangsresultater), sou datt Dir d'Resultat net an eng Datei späichere musst. Amplaz kann et direkt un en anere Kommando weidergeleet ginn:

kustomize build . | kubectl apply -f -

D'kustomize Fonctiounen kann och zougänglech via kubectl -k (zënter Kubernetes Versioun 1.14). Denkt awer drun datt de Standalone Kustomize Package méi séier aktualiséiert gëtt wéi den integréierte kubectl Package (op d'mannst ass dëst de Fall mat der Kubernetes 1.15 Verëffentlechung).

D'Lieser kënne froen: "Firwat all dës Komplexitéit, wann Dir d'Dateien direkt ännere kënnt?" Flott Fro. An eisem Beispill, jo kënnen Dateien änneren deployment.yaml и service.yaml direkt, mee wat wann se eng Gabel vun engem aneren Projet sinn? D'Ännerung vun Dateien direkt mécht et schwéier (wann net onméiglech) eng Gabel ze rebaséieren wann Ännerungen un der Hierkonft / Quell gemaach ginn. Mat kustomize kënnt Dir dës Ännerungen an enger Datei zentraliséieren kustomization.yaml, déi ursprénglech Dateien intakt ze loossen an doduerch et méi einfach ze maachen d'Original Dateien ze rebaséieren wann néideg.

D'Virdeeler vum kustomize ginn a méi komplexe Benotzungsfäll offensichtlech. Am uewe genannte Beispill kustomization.yaml an d'Ressourcen sinn am selwechte Verzeechnes. Wéi och ëmmer, kustomize ënnerstëtzt Benotzungsfäll wou et eng Basiskonfiguratioun gëtt a vill Varianten dovun, och bekannt als Iwwerlagerungen. Zum Beispill wollt e Benotzer Deployment a Service fir nginx huelen, wat ech als Beispill benotzt hunn, an Entwécklungs-, Staging- a Produktiounsversioune (oder Varianten) vun dësen Dateien erstellen. Fir dëst ze maachen, brauch hien déi uewe genannten Iwwerlagerungen an tatsächlech d'Basisressourcen selwer.

Fir d'Iddi vun Iwwerlagerungen an ënnerierdesch Ressourcen ze illustréieren (Basis Ressourcen), loosst eis unhuelen datt d'Verzeichnisser déi folgend Struktur hunn:

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

Am Dossier base/kustomization.yaml Benotzer d'Feld benotzen resources erklären einfach d'Ressourcen déi kustomize soll enthalen.

An jiddereng vun den Fichieren overlays/{dev,staging,prod}/kustomization.yaml Benotzer bezéie sech op d'Basiskonfiguratioun am Feld resources, an dann uginn spezifesch Ännerungen fir ginn Ëmfeld. Zum Beispill, Fichier overlays/dev/kustomization.yaml kéint ausgesinn wéi d'Beispill virdrun uginn:

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

An dësem Fall de Fichier overlays/prod/kustomization.yaml kéint ganz anescht sinn:

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

Wann de Benotzer leeft kustomize build . am Katalog overlays/dev, kustomize wäert d'Entwécklung Optioun generéieren. Wann Dir lafen kustomize build . am Katalog overlays/prod - Dir kritt d'Produktiounsoptioun. An dat alles - ouni Ännerunge vum Original ze maachen (Basis) Dateien, alles op eng deklarativ an deterministesch Manéier. Dir kënnt d'Basiskonfiguratioun an d'Overlay-Verzeichnungen direkt op d'Versiounskontroll verpflichte, wëssend datt Dir op Basis vun dëse Dateien déi gewënschte Konfiguratioun zu all Moment reproduzéieren kënnt.

Eng kuerz Aféierung fir Kustomize
Note. iwwersat.: Illustratioun aus dem Projet Dokumentatioun op d'Benotzung vun overlays zu kustomize

Customize kann vill méi wéi dat wat an dësem Artikel ofgedeckt ass. Wéi och ëmmer, ech hoffen datt et als gutt Aféierung déngt.

Zousätzlech Ressourcen

Et gi vill gutt Artikelen a Publikatiounen iwwer kustomize. Hei sinn e puer déi ech besonnesch nëtzlech fonnt hunn:

Note. iwwersat.: Dir kënnt och e Block vu Linken recommandéieren publizéiert als Ressourcen op der Websäit vum Utility, gefollegt vun enger Sammlung vu Videoe mat de leschte Berichter iwwer kustomize.

Wann Dir Froen oder Virschléi hutt fir dëst Material ze verbesseren, sinn ech ëmmer op fir Feedback. Dir kënnt mech kontaktéieren um Twitter oder Kubernetes Slack Kanal. Vill Spaass beim Änneren vun Äre Manifestatiounen mat kustomize!

PS vum Iwwersetzer

Liest och op eisem Blog:

Source: will.com

Setzt e Commentaire