Introduzzjoni qasira għal Kustomize

Nota. transl.: L-artiklu nkiteb minn Scott Lowe, inġinier b'esperjenza estensiva fl-IT, li huwa l-awtur/ko-awtur ta' seba' kotba stampati (prinċipalment fuq VMware vSphere). Issa jaħdem għas-sussidjarja tiegħu VMware Heptio (akkwistata fl-2016), li tispeċjalizza fil-cloud computing u Kubernetes. It-test innifsu jservi bħala introduzzjoni konċiża u faċli biex tinftiehem għall-ġestjoni tal-konfigurazzjoni għal Kubernetes bl-użu tat-teknoloġija Ippersonalizza, li reċentement saret parti minn K8s.

Introduzzjoni qasira għal Kustomize

Kustomize hija għodda li tippermetti lill-utenti biex "jippersonalizzaw fajls YAML sempliċi u ħielsa mill-mudelli għal skopijiet differenti, u jħallu l-YAML oriġinali intatt u użabbli" (deskrizzjoni mislufa direttament minn kustomize repożitorju fuq GitHub). Kustomize jista 'jitħaddem direttament jew, minn Kubernetes 1.14, jintuża kubectl -k biex taċċessa l-funzjonalità tagħha (għalkemm minn Kubernetes 1.15, il-binarju separat huwa aktar ġdid mill-kapaċitajiet mibnija f'kubectl). (Nota. transl.: U bir-rilaxx riċenti Kubernetes 1.16 Ippersonalizza appoġġjat minn ukoll fl-utilità kubeadm.) F'din il-kariga, nixtieq nintroduċi lill-qarrejja għall-baŜi ta 'kustomize.

Fil-forma/applikazzjoni l-aktar sempliċi tagħha, kustomize hija sempliċement ġabra ta 'riżorsi (fajls YAML li jiddefinixxu oġġetti Kubernetes: Skjeramenti, Servizzi, eċċ.) flimkien ma' lista ta 'struzzjonijiet għal bidliet li jeħtieġ li jsiru f'dawk ir-riżorsi. Hekk kif make juża s-sett ta’ struzzjonijiet li jinsab fi Makefile, u Docker jibni l-kontenitur ibbażat fuq struzzjonijiet minn Dockerfile, Ippersonalizza l-użi kustomization.yaml biex taħżen struzzjonijiet dwar liema bidliet l-utent irid jagħmel għal sett ta 'riżorsi.

Hawn fajl eżempju kustomization.yaml:

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

Mhux se nipprova nitkellem dwar l-oqsma kollha possibbli fil-fajl. kustomization.yaml (dan huwa miktub tajjeb dwar hawn), iżda se nagħti spjegazzjoni qasira ta' eżempju speċifiku:

  • Qasam resources jindika dak (liema riżorsi) kustomize se jinbidlu. F'dan il-każ, se tfittex riżorsi fil-fajls deployment.yaml и service.yaml fid-direttorju tiegħek (tista' tispeċifika mogħdijiet sħaħ jew relattivi jekk meħtieġ).
  • Qasam namePrefix jagħti struzzjonijiet lil kustomize biex iżżid ċertu prefiss (f'dan il-każ - dev-) li jattribwixxi name ir-riżorsi kollha definiti fil-qasam resources. Għalhekk, jekk Skjerament għandu name b'tifsira nginx-deployment, Ippersonalizza se jagħmilha dev-nginx-deployment.
  • Qasam namespace jagħti struzzjonijiet lil kustomize biex iżżid l-ispazju tal-isem mogħti mar-riżorsi kollha. F'dan il-każ, Deployment and Service se jaqgħu fl-ispazju tal-isem development.
  • Fl-aħħarnett, il-qasam commonLabels fih sett ta’ tikketti li se jiżdiedu mar-riżorsi kollha. Fl-eżempju tagħna, kustomize se tassenja tikketta lir-riżorsi bl-isem environment u t-tifsira development.

Jekk l-utent jagħmel kustomize build . fid-direttorju mal-fajl kustomization.yaml u r-riżorsi meħtieġa (jiġifieri fajls deployment.yaml и service.yaml), imbagħad fl-output se tirċievi test bil-bidliet speċifikati fi kustomization.yaml.

Introduzzjoni qasira għal Kustomize
Nota. transl.: Illustrazzjoni mid-dokumentazzjoni tal-proġett dwar l-użu "sempliċi" ta' kustomize

L-output jista' jiġi ridirett jekk ikun hemm bżonn li jsiru bidliet:

kustomize build . > custom-config.yaml

Id-dejta tal-ħruġ hija deterministika (l-istess dejta tal-input se tipproduċi l-istess riżultati tal-ħruġ), sabiex ma jkollokx għalfejn issalva r-riżultat f'fajl. Minflok, jista 'jiġi mgħoddi direttament lil kmand ieħor:

kustomize build . | kubectl apply -f -

Il-karatteristiċi kustomize jistgħu wkoll jiġu aċċessati permezz kubectl -k (mill-verżjoni Kubernetes 1.14). Madankollu, iżomm f'moħħu li l-pakkett kustomize standalone huwa aġġornat aktar malajr mill-pakkett kubectl integrat (għall-inqas dan huwa l-każ tar-rilaxx Kubernetes 1.15).

Il-qarrejja jistgħu jistaqsu: "Għaliex din il-kumplessità kollha jekk tista' teditja l-fajls direttament?" Mistoqsija kbira. Fl-eżempju tagħna, tabilħaqq wieħed jista ' timmodifika fajls deployment.yaml и service.yaml direttament, imma x'jiġri jekk huma furketta tal-proġett ta 'xi ħadd ieħor? It-tibdil ta' fajls direttament jagħmilha diffiċli (jekk mhux impossibbli) li tirbaża mill-ġdid furketta meta jsiru bidliet fl-oriġini/sors. L-użu ta' kustomize jippermettilek tiċċentralizza dawn il-bidliet f'fajl kustomization.yaml, li tħalli l-fajls oriġinali intatti u b'hekk tagħmilha aktar faċli biex il-fajls oriġinali jiġu bażati mill-ġdid jekk meħtieġ.

Il-benefiċċji ta 'kustomize jidhru f'każijiet ta' użu aktar kumplessi. Fl-eżempju ta 'hawn fuq kustomization.yaml u r-riżorsi huma fl-istess direttorju. Madankollu, kustomize jappoġġja każijiet ta 'użu fejn hemm konfigurazzjoni bażi u ħafna varjanti tagħha, magħrufa wkoll bħala overlays. Pereżempju, l-utent ried jieħu Deployment and Service għal nginx, li użajt bħala eżempju, u joħloq verżjonijiet ta 'żvilupp, stadji u produzzjoni (jew varjanti) ta' dawk il-fajls. Biex jagħmel dan, ser ikollu bżonn is-superpożizzjonijiet imsemmija hawn fuq u, fil-fatt, ir-riżorsi bażiċi nfushom.

Biex turi l-idea ta 'overlays u riżorsi sottostanti (riżorsi bażi), ejja nassumu li d-direttorji għandhom l-istruttura li ġejja:

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

Fil-fajl base/kustomization.yaml utenti li jużaw il-qasam resources sempliċement tiddikjara r-riżorsi li kustomize għandhom jinkludu.

F'kull wieħed mill-fajls overlays/{dev,staging,prod}/kustomization.yaml utenti jirreferu għall-konfigurazzjoni bażi fil-qasam resources, u mbagħad indika bidliet speċifiċi għal ambjent partikolari. Per eżempju, fajl overlays/dev/kustomization.yaml jista' jidher bħall-eżempju mogħti qabel:

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

F'dan il-każ il-fajl overlays/prod/kustomization.yaml jista 'jkun kompletament differenti:

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

Meta l-utent imexxi kustomize build . fil-katalgu overlays/dev, kustomize se jiġġenera l-għażla ta 'żvilupp. Jekk tmexxi kustomize build . fil-katalgu overlays/prod - ikollok l-għażla tal-produzzjoni. U dan kollu - mingħajr ma jsir ebda tibdil għall-oriġinal (bażi) fajls, kollha b’mod dikjarattiv u deterministiku. Tista' tikkommetti l-konfigurazzjoni bażi u d-direttorji overlay direttament għall-kontroll tal-verżjoni, billi tkun taf li abbażi ta' dawn il-fajls tista' tirriproduċi l-konfigurazzjoni mixtieqa fi kwalunkwe ħin.

Introduzzjoni qasira għal Kustomize
Nota. transl.: Illustrazzjoni mid-dokumentazzjoni tal-proġett dwar l-użu ta' overlays f'kustomize

Ippersonalizza jista ħafna aktar minn dak li huwa kopert f'dan l-artikolu. Madankollu, nittama li sservi bħala introduzzjoni tajba.

Riżorsi Addizzjonali

Hemm ħafna artikli u pubblikazzjonijiet tajbin dwar kustomize. Hawn huma xi ftit li sibt partikolarment utli:

Nota. transl.: Tista' wkoll tirrakkomanda blokk ta' links ippubblikati bħala riżorsi fuq il-websajt tal-utilità, segwit minn ġabra ta 'vidjows bl-aħħar rapporti dwar kustomize.

Jekk għandek mistoqsijiet jew suġġerimenti biex ittejjeb dan il-materjal, jien dejjem miftuħ għal feedback. Tista' tikkuntattjani fuq twitter jew Kanal Kubernetes Slack. Ħu gost timmodifika l-manifesti tiegħek b'kustomize!

PS minn traduttur

Aqra wkoll fuq il-blog tagħna:

Sors: www.habr.com

Żid kumment