Chiyambi Chachidule cha Kustomize

Zindikirani. transl.: Nkhaniyi inalembedwa ndi Scott Lowe, injiniya wodziwa zambiri mu IT, yemwe ndi wolemba/wolemba nawo mabuku asanu ndi awiri osindikizidwa (makamaka pa VMware vSphere). Tsopano akugwira ntchito ku kampani yake ya VMware Heptio (yomwe idapezedwa mu 2016), yomwe imagwira ntchito pa cloud computing ndi Kubernetes. Mawuwo pawokha amakhala ngati mawu oyamba komanso osavuta kumva pakuwongolera kasinthidwe kwa Kubernetes pogwiritsa ntchito ukadaulo. Sinthani Mwamakonda Anu, yomwe posachedwapa idakhala gawo la K8s.

Chiyambi Chachidule cha Kustomize

Kustomize ndi chida chomwe chimalola ogwiritsa ntchito "kusintha mafayilo a YAML osavuta, opanda template pazifukwa zosiyanasiyana, kusiya YAML yoyambirira ilibe bwino komanso yogwiritsidwa ntchito" (mafotokozedwe adabwerekedwa kuchokera ku kustomize posungira pa GitHub). Kustomize imatha kuyendetsedwa mwachindunji kapena, monga Kubernetes 1.14, yogwiritsidwa ntchito kubectl -k kuti mupeze magwiridwe antchito ake (ngakhale monga Kubernetes 1.15, binary yosiyana ndi yatsopano kuposa kuthekera komwe kumapangidwira kubectl). (Zindikirani. transl.: Ndipo ndi kutulutsidwa kwaposachedwa Kubernetes 1.16 makonda mothandizidwa ndi komanso mu kubeadm utility.) Mu positi iyi, ndikufuna ndikudziwitse owerenga zoyambira za kustomize.

Mu mawonekedwe ake osavuta / kugwiritsa ntchito, kustomize ndikungosonkhanitsa zinthu (mafayilo a YAML omwe amatanthauzira zinthu za Kubernetes: Deployments, Services, etc.) kuphatikiza mndandanda wa malangizo osintha zomwe ziyenera kupangidwa kuzinthuzo. Monga momwe make amagwiritsira ntchito malangizo omwe ali mu Makefile, ndipo Docker amamanga chidebecho kutengera malangizo ochokera Dockerfile, sinthani magwiritsidwe ntchito kustomization.yaml kusunga malangizo okhudza zomwe wogwiritsa ntchito akufuna kupanga pagulu lazinthu.

Nayi fayilo yachitsanzo kustomization.yaml:

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

Sindidzayesa kulankhula za minda yonse yomwe ingatheke mufayilo. kustomization.yaml (izi zalembedwa bwino apa), koma ndipereka kufotokozera mwachidule kwachitsanzo china:

  • m'munda resources zikuwonetsa zomwe (zothandizira) kustomize zidzasintha. Pankhaniyi, idzayang'ana zothandizira mumafayilo deployment.yaml ΠΈ service.yaml m'ndandanda yanu (mutha kufotokoza njira zonse kapena zachibale ngati kuli kofunikira).
  • m'munda namePrefix amalangiza kustomize kuti awonjezere mawu oyamba (pankhaniyi - dev-) kutsimikizira name zida zonse zomwe zafotokozedwa m'munda resources. Chifukwa chake, ngati Deployment ili nayo name ndi tanthauzo nginx-deployment, makonda adzapanga dev-nginx-deployment.
  • m'munda namespace amalangiza kustomize kuwonjezera dzina lapatsidwa kuzinthu zonse. Pankhaniyi, Deployment and Service idzagwera mu namespace development.
  • Pomaliza, munda commonLabels ili ndi zolemba zomwe zidzawonjezedwa kuzinthu zonse. Muchitsanzo chathu, kustomize idzapereka chizindikiro kuzinthu zomwe zili ndi dzina environment ndi mtengo development.

Ngati wogwiritsa atero kustomize build . mu chikwatu ndi fayilo kustomization.yaml ndi zofunikira (ie mafayilo deployment.yaml ΠΈ service.yaml), ndiye pazotulutsa ilandila mawu ndi zosintha zomwe zafotokozedwamo kustomization.yaml.

Chiyambi Chachidule cha Kustomize
Zindikirani. transl.: Chithunzi chochokera muzolemba za polojekiti pakugwiritsa ntchito "zosavuta" za kustomize

Zotulutsa zitha kutumizidwanso ngati zosintha zikufunika:

kustomize build . > custom-config.yaml

Zomwe zimatuluka ndizokhazikika (zolowera zomwezo zidzatulutsa zotsatira zomwezo), kotero simuyenera kusunga zotsatira ku fayilo. M'malo mwake, ikhoza kuperekedwa mwachindunji ku lamulo lina:

kustomize build . | kubectl apply -f -

Zinthu za kustomize zitha kupezekanso kudzera kubectl -k (kuyambira Kubernetes mtundu 1.14). Komabe, kumbukirani kuti phukusi loyimilira la kustomize limasinthidwa mwachangu kuposa phukusi lophatikizika la kubectl (osachepera ndi momwe zimakhalira ndi Kubernetes 1.15 kumasulidwa).

Owerenga angafunse kuti: "Chifukwa chiyani zovuta zonsezi ngati mutha kusintha mafayilo mwachindunji?" Funso lalikulu. Mu chitsanzo chathu, ndithudi mungathe sintha mafayilo deployment.yaml ΠΈ service.yaml molunjika, koma bwanji ngati ali mphanda wa polojekiti ya munthu wina? Kusintha mafayilo mwachindunji kumapangitsa kuti zikhale zovuta (ngati sizingatheke) kubwezeretsanso foloko pamene zosintha zapangidwa ku chiyambi / gwero. Kugwiritsa ntchito kustomize kumakupatsani mwayi woyika zosinthazi mufayilo kustomization.yaml, kusiya mafayilo oyambilira ali pompo ndipo motero kupangitsa kukhala kosavuta kuyikanso mafayilo oyamba ngati kuli kofunikira.

Ubwino wa kustomize umawonekera muzochitika zovuta kugwiritsa ntchito. Mu chitsanzo pamwambapa kustomization.yaml ndipo zothandizira zili m'ndandanda womwewo. Komabe, kustomize imathandizira zochitika zomwe zimakhala ndi kasinthidwe koyambira ndi mitundu yambiri yake, yomwe imadziwikanso kuti zopondera. Mwachitsanzo, wogwiritsa ntchito amafuna kutenga Deployment and Service for nginx, yomwe ndidagwiritsa ntchito mwachitsanzo, ndikupanga masinthidwe, masitepe ndi kupanga (kapena mitundu) ya mafayilowo. Kuti achite izi, adzafunika zowunjikana zomwe tazitchula pamwambapa, komanso, zoyambira zokha.

Kuti mufotokozere lingaliro lazowonjezera ndi zida zapansi (zoyambira), tiyerekeze kuti zolembera zili ndi dongosolo ili:

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

Mu fayilo base/kustomization.yaml ogwiritsa ntchito munda resources ingolengezani zinthu zomwe kustomize ziyenera kuphatikiza.

M'mafayilo aliwonse overlays/{dev,staging,prod}/kustomization.yaml ogwiritsa amatchula kasinthidwe koyambira m'munda resources, ndiyeno sonyezani zosintha zenizeni za kupatsidwa chilengedwe. Mwachitsanzo, fayilo overlays/dev/kustomization.yaml zitha kuwoneka ngati chitsanzo chomwe chaperekedwa kale:

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

Pankhaniyi, fayilo overlays/prod/kustomization.yaml zikhoza kukhala zosiyana kwambiri:

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

Pamene wosuta akuthamanga kustomize build . mu katalogu overlays/dev, kustomize ipanga njira yachitukuko. Ngati muthamanga kustomize build . mu katalogu overlays/prod - mumapeza njira yopangira. Ndipo zonsezi - popanda kusintha koyambirira (basi) mafayilo, onse m'njira yolengeza komanso yotsimikizika. Mutha kuyika masinthidwe oyambira ndikuwonjezera maukonde mwachindunji kuti muwongolere mtundu, podziwa kuti kutengera mafayilowa mutha kupanganso masinthidwe omwe mukufuna nthawi iliyonse.

Chiyambi Chachidule cha Kustomize
Zindikirani. transl.: Chithunzi chochokera muzolemba zamapulojekiti pakugwiritsa ntchito zokutira kustomize

Sinthani mwamakonda anu zambiri kuposa zimene zafotokozedwa m’nkhani ino. Komabe, ndikukhulupirira kuti ikhala ngati mawu oyamba abwino.

Zowonjezera Zowonjezera

Pali zambiri zabwino zolemba ndi zofalitsa za kustomize. Nawa ochepa omwe ndidawapeza othandiza kwambiri:

Zindikirani. transl.: Mukhozanso kulangiza chipika cha maulalo osindikizidwa ngati Resources patsamba lazothandizira, ndikutsatiridwa ndi makanema omwe ali ndi malipoti aposachedwa okhudza kustomize.

Ngati muli ndi mafunso kapena malingaliro owongolera nkhaniyi, ndimakhala womasuka kuyankha. Mutha kulumikizana nane pa Twitter kapena Kubernetes Slack Channel. Sangalalani ndikusintha mawonekedwe anu ndi kustomize!

PS kuchokera kwa womasulira

Werenganinso pa blog yathu:

Source: www.habr.com

Kuwonjezera ndemanga