Isingeniso esifushane se-Kustomize

Qaphela. transl.: Isihloko sabhalwa nguScott Lowe, unjiniyela onolwazi olunzulu ku-IT, ongumbhali/umdidiyeli wezincwadi eziyisikhombisa eziphrintiwe (ikakhulukazi ku-VMware vSphere). Manje usebenzela inkampani engaphansi kwe-VMware i-Heptio (etholwe ngo-2016), egxile kwi-cloud computing kanye ne-Kubernetes. Umbhalo ngokwawo usebenza njengesingeniso esifushane nesiqondakala kalula sokuphathwa kokucushwa kwe-Kubernetes kusetshenziswa ubuchwepheshe. Enza ngendlela oyifisayo, esanda kuba yingxenye ye-K8s.

Isingeniso esifushane se-Kustomize

I-Kustomize iyithuluzi elivumela abasebenzisi “ukwenza ngendlela oyifisayo amafayela e-YAML alula, angenazifanekiso ngezinjongo ezihlukene, okushiya i-YAML yoqobo injalo futhi isebenziseka” (incazelo ebolekwe ngokuqondile kwa- kustomize inqolobane ku-GitHub). I-Kustomize ingaqhutshwa ngokuqondile noma, kusukela ku-Kubernetes 1.14, isetshenziswe kubectl -k ukuze ufinyelele ukusebenza kwayo (yize kusukela ku-Kubernetes 1.15, kanambambili ehlukene yintsha kunamakhono akhelwe ku-kubectl). (Qaphela. transl.: Kanye nokukhishwa kwakamuva Ama-Kubernetes 1.16 ngokwezifiso isekelwe ngu futhi kusisetshenziswa se-kubeadm.) Kule post, ngifuna ukwethula abafundi ngezisekelo ze-kustomize.

Ngendlela yayo elula/uhlelo lokusebenza, i-kustomize imane iyiqoqo lezinsiza (amafayela e-YAML achaza izinto ze-Kubernetes: Ukuthunyelwa, Izinsizakalo, njll.) kanye nohlu lwemiyalo yezinguquko okudingeka zenziwe kulezo zinsiza. Njengoba nje i-make isebenzisa imiyalo equkethwe kuyo Makefile, futhi i-Docker yakha isiqukathi ngokusekelwe emiyalweni evela Dockerfile,enza ngendlela oyifisayo ukusetshenziswa kustomization.yaml ukugcina imiyalelo mayelana nokuthi yiziphi izinguquko umsebenzisi afuna ukuzenza kusethi yezinsiza.

Nali ifayela eliyisibonelo kustomization.yaml:

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

Ngeke ngizame ukukhuluma ngazo zonke izinkambu ezingaba khona kufayela. kustomization.yaml (lokhu kubhalwe kahle ngakho lapha), kodwa ngizonikeza incazelo emfushane yesibonelo esithile:

  • Insimu resources ikhombisa ukuthi (iziphi izinsiza) kustomize ezoshintsha. Kulokhu, izobheka izinsiza kumafayela deployment.yaml и service.yaml ohlwini lwakho lwemibhalo (ungacacisa izindlela ezigcwele noma ezihlobene uma kunesidingo).
  • Insimu namePrefix iyalela kustomize ukwengeza isiqalo esithile (kulokhu - dev-) ukuchasisa name zonke izinsiza ezichazwe ensimini resources. Ngakho, uma Deployment has name ngencazelo nginx-deployment, ukwenza ngendlela oyifisayo kuzokwenza dev-nginx-deployment.
  • Insimu namespace iyalela kustomize ukwengeza indawo yegama enikeziwe kuzo zonke izinsiza. Kulesi simo, Ukuthunyelwa Nesevisi kuzowela endaweni yamagama development.
  • Ekugcineni, insimu commonLabels iqukethe isethi yamalebula azokwengezwa kuzo zonke izinsiza. Esibonelweni sethu, i-kustomize izokwabela ilebula ezinsizeni ezinegama environment kanye nencazelo development.

Uma umsebenzisi enza kustomize build . ohlwini lwemibhalo olunefayela kustomization.yaml kanye nezinsiza ezidingekayo (okungukuthi amafayela deployment.yaml и service.yaml), lapho-ke okukhiphayo izothola umbhalo onezinguquko ezishiwo ku kustomization.yaml.

Isingeniso esifushane se-Kustomize
Qaphela. transl.: Umfanekiso ovela kumadokhumenti ephrojekthi ngokusetshenziswa “okulula” kwe-kustomize

Okukhiphayo kungaqondiswa kabusha uma izinguquko zidinga ukwenziwa:

kustomize build . > custom-config.yaml

Idatha yokuphumayo iyanqunywa (idatha yokufaka efanayo izokhiqiza imiphumela efanayo), ngakho-ke akudingeki ukuthi ulondoloze umphumela efayeleni. Kunalokho, ingadluliselwa ngokuqondile komunye umyalo:

kustomize build . | kubectl apply -f -

Izici ze-kustomize nazo zingafinyelelwa nge kubectl -k (kusukela ku-Kubernetes version 1.14). Kodwa-ke, khumbula ukuthi iphakheji ye-standalone kustomize ibuyekezwa ngokushesha kunephakheji ehlanganisiwe ye-kubectl (okungenani lokhu kunjalo ngokukhishwa kwe-Kubernetes 1.15).

Abafundi bangase babuze: “Kungani konke lokhu kuyinkimbinkimbi uma ukwazi ukuhlela amafayela ngokuqondile?” Umbuzo omkhulu. Esibonelweni sethu, ngempela can guqula amafayela deployment.yaml и service.yaml ngokuqondile, kodwa kuthiwani uma beyimfoloko yephrojekthi yomunye umuntu? Ukushintsha amafayela ngokuqondile kwenza kube nzima (uma kungenzeki) ukusekela kabusha imfoloko lapho izinguquko zenziwa kumsuka/umthombo. Ukusebenzisa i-kustomize kukuvumela ukuthi wenze lezi zinguquko zibe phakathi kwefayela kustomization.yaml, ishiya amafayela angempela ephelele futhi ngaleyo ndlela kube lula ukusekela kabusha amafayela okuqala uma kudingeka.

Izinzuzo ze-kustomize zibonakala ezimweni zokusetshenziswa eziyinkimbinkimbi. Kulesi sibonelo esingenhla kustomization.yaml futhi izinsiza zikuhlu lwemibhalo olufanayo. Kodwa-ke, i-kustomize isekela izimo zokusebenzisa lapho kukhona ukucushwa kwesisekelo nokuhlukahluka kwakho okuningi, okwaziwa nangokuthi ukumbondelana. Isibonelo, umsebenzisi ubefuna ukuthatha i-Deployment and Service ye-nginx, engiyisebenzise njengesibonelo, futhi adale ukuthuthukiswa, izinguqulo zesiteji nokukhiqiza (noma okuhlukile) kwalawo mafayela. Ukuze enze lokhu, uzodinga ukumbondela okukhulunywe ngenhla futhi, empeleni, izinsiza eziyisisekelo ngokwazo.

Ukukhombisa umqondo wokumbondelana nezinsiza ezingaphansi (izinsiza eziyisisekelo), ake sicabange ukuthi izinkomba zinesakhiwo esilandelayo:

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

Kufayela base/kustomization.yaml abasebenzisi abasebenzisa inkambu resources vele umemezele izinsiza okufanele zifakwe kustomize.

Kufayela ngalinye overlays/{dev,staging,prod}/kustomization.yaml abasebenzisi babhekisela ekucushweni kwesisekelo kunkambu resources, bese ubonisa izinguquko ezithile ze imvelo enikeziwe. Ngokwesibonelo, ifayela overlays/dev/kustomization.yaml ingase ibukeke njengesibonelo esinikezwe ngaphambili:

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

Kulokhu ifayela overlays/prod/kustomization.yaml kungase kwehluke ngokuphelele:

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

Lapho umsebenzisi egijima kustomize build . kukhathalogi overlays/dev, i-kustomize izokhiqiza inketho yokuthuthukisa. Uma ugijima kustomize build . kukhathalogi overlays/prod - uthola inketho yokukhiqiza. Futhi konke lokhu - ngaphandle kokwenza izinguquko kokwangempela (isisekelo) amafayela, wonke ngendlela echazayo nenqumayo. Ungakwazi ukubophezela ukucushwa kwesisekelo kanye nezinkomba zembondela ngokuqondile ekulawuleni inguqulo, wazi ukuthi ngokusekelwe kulawa mafayela ungakwazi ukukhiqiza kabusha ukulungiselelwa okufunayo nganoma yisiphi isikhathi.

Isingeniso esifushane se-Kustomize
Qaphela. transl.: Umfanekiso ovela kumadokhumenti ephrojekthi ekusebenziseni ukumbondela ku-kustomize

Yenza ngokwezifiso ikani kakhulu ngaphezu kwalokho okuvezwe kulesi sihloko. Nokho, ngethemba ukuthi izosebenza njengesingeniso esihle.

Izinsiza Ezengeziwe

Kunezihloko eziningi ezinhle nezincwadi ezimayelana nokustomize. Nazi ezimbalwa engizithole ziwusizo ngokukhethekile:

Qaphela. transl.: Ungakwazi futhi ukuncoma ibhulokhi yezixhumanisi ezishicilelwe njenge Resources kuwebhusayithi yezinsiza, kulandelwa iqoqo lamavidiyo anemibiko yakamuva mayelana nokustomize.

Uma unemibuzo noma iziphakamiso zokuthuthukisa le nto, ngihlale ngivulekele impendulo. Ungangithinta ku Twitter noma ku Isiteshi se-Kubernetes Slack. Kujabulele ukulungisa ama-manifest akho nge-kustomize!

I-PS evela kumhumushi

Funda futhi kubhulogi yethu:

Source: www.habr.com

Engeza amazwana