Yon brèf entwodiksyon nan Kustomize

Remak. trad.: Atik la te ekri pa Scott Lowe, yon enjenyè ki gen anpil eksperyans nan IT, ki se otè/ko-otè sèt liv enprime (sitou sou VMware vSphere). Kounye a li travay pou sipòtè VMware li Heptio (akeri an 2016), ki espesyalize nan cloud computing ak Kubernetes. Tèks la li menm sèvi kòm yon entwodiksyon kout epi fasil pou konprann nan jesyon konfigirasyon pou Kubernetes lè l sèvi avèk teknoloji. Customize, ki dènyèman te vin fè pati K8s.

Yon brèf entwodiksyon nan Kustomize

Kustomize se yon zouti ki pèmèt itilizatè yo "pèsonalize dosye YAML ki senp, san modèl yo pou diferan rezon, kite YAML orijinal la entak epi yo ka itilize" (deskripsyon yo te prete dirèkteman nan kustomize repozitwa sou GitHub). Kustomize ka kouri dirèkteman oswa, kòm nan Kubernetes 1.14, itilize kubectl -k jwenn aksè nan fonksyonalite li yo (byenke kòm nan Kubernetes 1.15, binè separe a se pi nouvo pase kapasite yo bati nan kubectl). (Remak. trad.: Ak dènye lage Kubernetes 1.16 personnaliser sipòte pa tou nan sèvis piblik kubeadm la.) Nan pòs sa a, mwen vle prezante lektè yo Basics nan kustomize.

Nan fòm/aplikasyon ki pi senp li yo, kustomize se tou senpleman yon koleksyon resous (fichye YAML ki defini objè Kubernetes: Deplwaman, Sèvis, elatriye) plis yon lis enstriksyon pou chanjman ki bezwen fè nan resous sa yo. Menm jan make itilize ansanm enstriksyon ki genyen nan Makefile, ak Docker bati veso a ki baze sou enstriksyon soti nan Dockerfile, Customize itilizasyon yo kustomization.yaml pou estoke enstriksyon sou ki chanjman itilizatè a vle fè nan yon seri resous.

Men yon egzanp dosye kustomization.yaml:

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

Mwen p ap eseye pale sou tout jaden posib nan dosye a. kustomization.yaml (sa a byen ekri sou isit la), men mwen pral bay yon eksplikasyon tou kout sou yon egzanp espesifik:

  • Jaden resources endike kisa (ki resous) kustomize pral chanje. Nan ka sa a, li pral chèche resous nan dosye yo deployment.yaml и service.yaml nan anyè ou a (ou ka presize chemen konplè oswa relatif si sa nesesè).
  • Jaden namePrefix enstwi kustomize pou ajoute yon prefiks sèten (nan ka sa a - dev-) pou atribiye name tout resous defini nan jaden an resources. Kidonk, si Deplwaman gen name ak siyifikasyon nginx-deployment, Customize pral fè li dev-nginx-deployment.
  • Jaden namespace enstwi kustomize pou ajoute espas non yo bay nan tout resous yo. Nan ka sa a, Deplwaman ak Sèvis pral tonbe nan espas non an development.
  • Finalman, jaden an commonLabels gen yon seri etikèt ki pral ajoute nan tout resous yo. Nan egzanp nou an, kustomize pral bay yon etikèt sou resous yo ak non an environment ak siyifikasyon development.

Si itilizatè a fè sa kustomize build . nan anyè a ak dosye a kustomization.yaml ak resous ki nesesè yo (sa vle di fichye deployment.yaml и service.yaml), Lè sa a, nan pwodiksyon an li pral resevwa yon tèks ak chanjman yo espesifye nan kustomization.yaml.

Yon brèf entwodiksyon nan Kustomize
Remak. trad.: Ilistrasyon nan dokiman pwojè a sou itilizasyon "senp" nan kustomize

Pwodiksyon an ka redireksyon si chanjman yo bezwen komèt:

kustomize build . > custom-config.yaml

Done pwodiksyon an se detèminist (menm done opinyon yo pral pwodwi rezilta pwodiksyon menm), kidonk ou pa bezwen sove rezilta a nan yon dosye. Olye de sa, li ka pase dirèkteman nan yon lòt lòd:

kustomize build . | kubectl apply -f -

Karakteristik kustomize yo kapab tou jwenn aksè atravè kubectl -k (depi Kubernetes vèsyon 1.14). Sepandan, kenbe nan tèt ou ke pake kustomize otonòm la mete ajou pi vit pase pake kubectl entegre (omwen sa a se ka a ak lage Kubernetes 1.15).

Lektè yo ka mande: "Poukisa tout konpleksite sa a si ou ka edite dosye yo dirèkteman?" Gwo kesyon. Nan egzanp nou an, tout bon yon sèl kapab modifye dosye yo deployment.yaml и service.yaml dirèkteman, men e si yo se yon fouchèt pwojè yon lòt moun? Chanje dosye dirèkteman fè li difisil (si se pa enposib) pou rebase yon fouchèt lè chanjman yo te fè nan orijin/sous la. Sèvi ak kustomize pèmèt ou santralize chanjman sa yo nan yon dosye kustomization.yaml, kite fichye orijinal yo entak e konsa fè li pi fasil pou rebase dosye orijinal yo si sa nesesè.

Benefis ki genyen nan kustomize vin aparan nan ka itilizasyon ki pi konplèks. Nan egzanp ki anwo a kustomization.yaml ak resous yo nan menm anyè a. Sepandan, kustomize sipòte ka itilize kote gen yon konfigirasyon baz ak anpil varyant nan li, ke yo rele tou superpositions. Pou egzanp, yon itilizatè te vle pran Deplwaman ak Sèvis pou nginx, ke mwen te itilize kòm yon egzanp, epi kreye devlopman, sèn, ak vèsyon pwodiksyon (oswa varyant) nan dosye sa yo. Pou fè sa, li pral bezwen kouvri yo mansyone anwo a ak, an reyalite, resous debaz yo tèt yo.

Pou ilistre lide a nan superpositions ak resous kache (resous de baz), an n sipoze ke anyè yo gen estrikti sa a:

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

Nan dosye base/kustomization.yaml itilizatè yo itilize jaden an resources tou senpleman deklare resous ki kustomize ta dwe genyen ladan li.

Nan chak nan dosye yo overlays/{dev,staging,prod}/kustomization.yaml itilizatè yo refere a konfigirasyon baz la nan jaden an resources, ak Lè sa a, endike chanjman espesifik pou anviwònman bay. Pou egzanp, dosye overlays/dev/kustomization.yaml ta ka sanble ak egzanp yo bay pi bonè:

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

Nan ka sa a dosye a overlays/prod/kustomization.yaml ta ka konplètman diferan:

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

Lè itilizatè a kouri kustomize build . nan katalòg la overlays/dev, kustomize pral jenere opsyon devlopman an. Si ou kouri kustomize build . nan katalòg la overlays/prod - ou jwenn opsyon pwodiksyon an. Ak tout bagay sa a - san yo pa fè okenn chanjman nan orijinal la (baz) dosye, tout nan yon fason deklaratif ak detèminist. Ou ka komèt konfigirasyon baz la ak repèrtwar kouvri dirèkteman nan kontwòl vèsyon an, konnen ke baze sou dosye sa yo ou ka repwodui konfigirasyon an vle a nenpòt ki lè.

Yon brèf entwodiksyon nan Kustomize
Remak. trad.: Ilistrasyon nan dokiman pwojè a sou lè l sèvi avèk superpositions nan kustomize

Customize kapab anpil plis pase sa ki kouvri nan atik sa a. Sepandan, mwen espere ke li sèvi kòm yon bon entwodiksyon.

Lòt Resous

Genyen anpil bon atik ak piblikasyon sou kustomize. Men kèk ke mwen te jwenn patikilyèman itil:

Remak. trad.: Ou ka rekòmande tou yon blòk lyen pibliye kòm Resous sou sit entènèt sèvis piblik la, ki te swiv pa yon koleksyon videyo ak dènye rapò sou kustomize.

Si ou gen kesyon oswa sijesyon pou amelyore materyèl sa a, mwen toujou ouvè a fidbak. Ou ka kontakte m nan Twitter oswa Kanal Slack Kubernetes. Pran plezi modifye manifest ou ak kustomize!

PS soti nan tradiktè

Li tou sou blog nou an:

Sous: www.habr.com

Add nouvo kòmantè