Hyrje e shkurtër në Kustomize

ShĂ«n. pĂ«rkth.: Artikulli Ă«shtĂ« shkruar nga Scott Lowe — njĂ« inxhinier me shumĂ« pĂ«rvojĂ« nĂ« IT, autori/ko-autori i shtatĂ« librave tĂ« printuar (ndĂ«rsa kryesisht pĂ«r VMware vSphere). Ai aktualisht punon nĂ« nĂ«norganizatat e VMware — Heptio (e blerĂ« nĂ« vitin 2016), me specializim nĂ« llogaritĂ« nĂ« re dhe Kubernetes. Teksti shĂ«rben si njĂ« hyrje e shkurtĂ«r dhe e lehtĂ« pĂ«r t'u kuptuar nĂ« menaxhimin e konfigurimeve pĂ«r Kubernetes pĂ«rmes teknologjisĂ« Kustomize, qĂ« sĂ« fundmi Ă«shtĂ« bĂ«rĂ« pjesĂ« e K8s.

Hyrje e shkurtër në Kustomize

Kustomize është një mjet që lejon përdoruesit "të konfigurojnë skedarët e thjeshtë dhe të lirë nga shabllonët YAML për qëllime të ndryshme, duke lënë origjinalin YAML të paprekur dhe të gatshëm për përdorim" (përshkrimi është marrë drejtpërdrejt nga repozitori kustomize në GitHub). Kustomize mund të ekzekutohet drejtpërdrejt ose, që nga Kubernetes 1.14, të përdoret kubectl -k për qasje në funksionet e tij (pavarësisht se që nga Kubernetes 1.15, një binar i veçantë është më i fundit se funksionalitetet e ndërtuara në kubectl). (Shën. përkth.: Me publikimin e fundit Kubernetes 1.16 (për t'iu thënë, zhvillimi tani po bëhet në një repository të veçantë), pra për të përpunuar YAML-të shtesë nga direktori të veçanta kustomization (detajet për përdorimin e tyre shih në mbështetet edhe në utilitarin kubeadm.) Në këtë publikim, dua t'i njoh lexuesit me bazat e kustomize.

Në formën e saj më të thjeshtë/a, kustomize është thjesht një grup burimesh (skedarë YAML që përcaktojnë objekte Kubernetes: Deployments, Services, etj.) plus një listë instrukcionesh për ndryshimet që duhen bërë në këto burime. Ashtu siç make përdor një grup instrukcionesh që ndodhen në Makefile, dhe Docker ndërtën një enë mbi bazën e instrukcioneve nga Dockerfile, kustomize përdor kustomization.yaml për të ruajtur rregullat se cilat ndryshime dëshiron përdoruesi të bëjë në grupin e burimeve.

Ja një shembull i skedarit kustomization.yaml:

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

Nuk do të përpiqem të flas për të gjitha fushat e mundshme në skedarin kustomization.yaml (për këtë është shkruar mjaft mirë këtu), por do të jap një shpjegim të shkurtër të shembullit të veçantë:

  • Fusha resources tregon se (cilat burime) do tĂ« ndryshojĂ« kustomize. NĂ« kĂ«tĂ« rast, ai do tĂ« kĂ«rkojĂ« burimet nĂ« skedarĂ«t deployment.yaml dhe service.yaml nĂ« katalogun e tij (nĂ«se Ă«shtĂ« e nevojshme, mund tĂ« specifikohen rrugĂ« tĂ« plota ose relative).
  • Fusha namePrefix i jep kustomize-sĂ« urdhrin pĂ«r tĂ« shtuar njĂ« prefiks tĂ« caktuar (nĂ« kĂ«tĂ« rast — dev-) nĂ« atributin emri e tĂ« gjithĂ« burimeve qĂ« pĂ«rcaktohen nĂ« fushĂ«n resources. KĂ«shtu, nĂ«se nĂ« Deployment ka emri me vlerĂ«n nginx-deployment, kustomize do ta kthejĂ« atĂ« nĂ« dev-nginx-deployment.
  • Fusha namespace pĂ«rcakton qĂ« kustomize tĂ« shtojĂ« hapĂ«sirĂ«n e specifikuar tĂ« emrave nĂ« tĂ« gjitha burimet. NĂ« kĂ«tĂ« rast, Deployment dhe Service do tĂ« bien nĂ« hapĂ«sirĂ«n e emrave zhvillim.
  • NĂ« fund, fusha commonLabels pĂ«rmban njĂ« grup etiketash qĂ« do tĂ« shtohen nĂ« tĂ« gjitha burimet. NĂ« shembullin tonĂ«, kustomize do tĂ« caktojĂ« burimeve njĂ« etiketĂ« me emrin mjedis dhe vlerĂ«n zhvillim.

Nëse përdoruesi ekzekuton kustomize build . në direktorinë me skedarin kustomization.yaml dhe burimet e nevojshme (pra, skedarët deployment.yaml dhe service.yaml), atëherë në dalje do të marrë tekstin me ndryshimet e përcaktuara në kustomization.yaml.

Hyrje e shkurtër në Kustomize
Shën. përkth.: Ilustrimi nga dokumentacioni i projektit për përdorimin "e thjeshtë" të kustomize

Dalja mund të ridrejtohet nëse është e nevojshme të ruhet ndryshimi:

kustomize build . > custom-config.yaml

Të dhënat në dalje janë të përcaktuara (me të njëjtat të dhëna në hyrje do të marrin të njëjtat rezultate në dalje), prandaj nuk është e nevojshme ta ruani rezultatin në skedar. Në vend të kësaj, mund ta kaloni drejtpërdrejt në një komandë tjetër:

kustomize build . | kubectl apply -f -

Qasje në funksionalitetet e kustomize gjithashtu mund të merret përmes kubectl -k (duke filluar nga versioni 1.14 i Kubernetes). Sidoqoftë, mbani në mend se paketi i veçantë kustomize përditësohet më shpejt se ai i integruar në kubectl (të paktën, kështu është situata me publikimin e Kubernetes 1.15).

Lexuesit mund të pyesin: "Pse janë të gjitha këto komplimente, nëse mund të redaktojmë skedarët direkt?". Pyetje e shkëlqyer. Në shembullin tonë, me të vërtetë mund të modifikimi i skedarëve deployment.yaml dhe service.yaml direkt, por çfarë nëse ata janë një fork i një projekti të dikujt? Modifikimi i drejtpërdrejtë i skedarëve e vështirëson (nëse nuk e bën të pamundur) rebase të forkut, kur bëhen ndryshime në burimin/faqen e origjinës. Përdorimi i kustomize lejon që këto ndryshime të centralizohen në një skedar kustomization.yaml, duke lënë skedarët origjinalë të paprekur dhe, kështu, duke lehtësuar ribashkimin e skedarëve origjinalë, nëse është e nevojshme.

Avantazhet e kustomize bëhen të dukshme në raste më të komplikuara përdorimi. Në shembullin e lartpërmendur kustomization.yaml dhe burimet ndodhen në të njëjtën direktori. Sidoqoftë, kustomize mbështet skenarë përdorimi ku ka një konfigurim bazë dhe shumë variacione të saj, të njohura gjithashtu si komanda e re. Për shembull, përdoruesi mund të dëshirojë të marrë Deployment dhe Service për nginx, të cilat unë i kam përdorur si shembull, dhe të krijojë versione (ose variacione) development-, staging-, dhe production- të atyre skedarëve. Për këtë, do t'i duhen overlays të përmendura më sipër dhe, përkatësisht, burimet bazë vetë.

Për të ilustruar idenë e overlays dhe resurseve bazë (resurset bazë), le të supozojmë se direktorët kanë strukturën e mëposhtme:

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

Në skedar base/kustomization.yaml përdoruesit me anë të fushës resources thjesht shpallin resurset që duhet të përfshijë kustomize.

Në çdo skedë overlays/{dev,staging,prod}/kustomization.yaml përdoruesit referohen në konfigurimin bazë në fushën resources, dhe më pas specifikojnë ndryshimet e veçanta për këtë mjedis. Për shembull, skeda overlays/dev/kustomization.yaml mund të duket si shembulli i dhënë më parë:

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

Në këtë rast, skeda overlays/prod/kustomization.yaml mund të jetë krejtësisht e ndryshme:

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

Kur përdoruesi të ekzekutojë kustomize build . në katalogun overlays/dev, kustomize do të gjenerojë variantin development. Nëse ekzekutohet kustomize build . në katalogun overlays/prod , do të marrësh variantin production. Dhe gjithë kjo, pa bërë asnjë ndryshim në skedat origjinale (bazë) , dhe gjithë kjo në një mënyrë deklarative dhe të përcaktuar. Mund të angazhoj konfigurimin bazë dhe direktorët overlay direkt në sistemin e menaxhimit të versioneve, duke ditur se mbi këto skeda, në çdo moment, mund të riprodhohet konfigurimi i nevojshëm.

Hyrje e shkurtër në Kustomize
Shën. përkth.: Ilustrimi nga dokumentacioni i projektit për përdorimin e overlays në kustomize

Kustomize di shumë më shumë se sa është përmendur në këtë artikull. Megjithatë, shpresoj se do të jetë një hyrje e mirë.

Burime të tjera

Ka shumë artikuj dhe publikime të mira mbi kustomize. Ja disa, që i kam konsideruar veçanërisht të dobishme:

Shën. përkth.: Mund të rekomandohen gjithashtu blloket e lidhjeve, të publikuara si Burime në faqen e veglës, dhe koleksioni që pason me video mbi prezantimet më të fundit rreth kustomize.

Nëse keni pyetje ose sugjerime për përmirësimin e këtij materiali, unë gjithmonë jam i hapur për reagime. Mund të më kontaktoni në Twitter ose në kanalin Slack të Kubernetes. Shijoni modifikimin e manifestacioneve tuaj me anë të kustomize!

P.S. nga përkthyesi

Lexoni gjithashtu në blogun tonë:

Burimi: habr.com

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster