He hoʻolauna pōkole no Kustomize

Nānā. unuhi.: Ua kākau ʻia ka ʻatikala e Scott Lowe, he ʻenekinia me ka ʻike nui i ka IT, ʻo ia ka mea kākau/ko-kaukau o ʻehiku mau puke i paʻi ʻia (ka mea nui ma VMware vSphere). Ke hana nei ʻo ia no kāna ʻoihana ʻo VMware Heptio (loaʻa i ka makahiki 2016), ʻoihana loea i ka ʻikepili kapua a me nā Kubernetes. ʻO ka kikokikona ponoʻī he hoʻolauna pōkole a maʻalahi hoʻi i ka hoʻokele hoʻonohonoho no nā Kubernetes e hoʻohana ana i ka ʻenehana. Hoʻopilikino, i lilo i ʻāpana o K8s.

He hoʻolauna pōkole no Kustomize

He mea hana ʻo Kustomize e hiki ai i nā mea hoʻohana ke "hoʻopilikino i nā faila YAML maʻalahi a me ka maʻalahi no nā kumu like ʻole, e waiho ana i ka YAML kumu i paʻa a hiki ke hoʻohana ʻia" (ʻaiʻē pololei mai ka wehewehe ʻana mai. customize waihona ma GitHub). Hiki ke holo pololei ʻo Kustomize a i ʻole, e like me Kubernetes 1.14, hoʻohana ʻia kubectl -k e komo i kāna hana (ʻoiai e like me Kubernetes 1.15, ʻoi aku ka hou o ka binary kaʻawale ma mua o nā mana i kūkulu ʻia i kubectl). (Nānā. unuhi.: A me ka hoʻokuʻu hou ʻana Nā Kubernetes 1.16 hoʻopilikino kākoʻo ʻia e i loko o ka pono kubeadm.) Ma kēia pou, makemake wau e hoʻolauna i ka poʻe heluhelu i nā kumu o kustomize.

Ma kāna ʻano maʻalahi loa, ʻo ka kustomize he hōʻiliʻili o nā kumuwaiwai (nā faila YAML e wehewehe i nā mea Kubernetes: Deployments, Services, etc.) me kahi papa inoa o nā kuhikuhi no nā loli e pono e hana ʻia i kēlā mau kumuwaiwai. E like me make hoʻohana i ka ʻōlelo aʻo i loko Makefile, a kūkulu ʻo Docker i ka pahu e pili ana i nā ʻōlelo aʻoaʻo mai Dockerfile, hoʻohana ponoʻī kustomization.yaml e mālama i nā ʻōlelo kuhikuhi e pili ana i nā hoʻololi a ka mea hoʻohana e makemake ai e hana i kahi pūʻulu o nā kumuwaiwai.

Eia kekahi waihona laʻana kustomization.yaml:

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

ʻAʻole au e hoʻāʻo e kamaʻilio e pili ana i nā kahua āpau i hiki i ka faila. kustomization.yaml (Ua kākau maikaʻi ʻia kēia e pili ana maanei), akā e hāʻawi wau i ka wehewehe pōkole o kahi hiʻohiʻona kikoʻī:

  • kahua resources hōʻike i ka mea (nā kumu waiwai) e hoʻololi ʻia e kustomize. I kēia hihia, e ʻimi ʻo ia i nā kumuwaiwai i nā faila deployment.yaml и service.yaml i kāu papa kuhikuhi (hiki iā ʻoe ke kuhikuhi i nā ala piha a pili paha inā pono).
  • kahua namePrefix kauoha iā kustomize e hoʻohui i kekahi prefix (i kēia hihia - dev-) e hoʻohanohano name nā kumuwaiwai a pau i wehewehe ʻia ma ke kahua resources. No laila, inā loaʻa iā Deployment name me ke ano nginx-deployment, customize e hana ia dev-nginx-deployment.
  • kahua namespace aʻo iā kustomize e hoʻohui i ka inoa inoa i hāʻawi ʻia i nā kumuwaiwai āpau. I kēia hihia, e hāʻule ka Deployment a me Service i ka inoa inoa development.
  • ʻO ka hope, ke kahua commonLabels Loaʻa i kahi pūʻulu o nā lepili e hoʻohui ʻia i nā kumuwaiwai āpau. I kā mākou laʻana, e hāʻawi ʻo kustomize i kahi lepili i nā kumuwaiwai me ka inoa environment a me ke ano development.

Inā hana ka mea hoʻohana kustomize build . i ka papa kuhikuhi me ka faila kustomization.yaml a me nā kumuwaiwai e pono ai (ʻo ia hoʻi nā faila deployment.yaml и service.yaml), a laila ma ka puka e loaʻa iā ia kahi kikokikona me nā hoʻololi i kuhikuhi ʻia ma kustomization.yaml.

He hoʻolauna pōkole no Kustomize
Nānā. unuhi.: Hōʻike mai ka palapala papahana ma ka hoʻohana "maʻalahi" o kustomize

Hiki ke hoʻohuli hou ʻia ka hopena inā pono e hoʻololi ʻia:

kustomize build . > custom-config.yaml

Hoʻoholo ʻia ka ʻikepili hoʻopuka (e hoʻopuka ka ʻikepili hoʻokomo like i nā hopena hoʻopuka like), no laila ʻaʻole pono ʻoe e mālama i ka hopena i kahi faila. Akā, hiki ke hāʻawi pololei ʻia i kahi kauoha ʻē aʻe:

kustomize build . | kubectl apply -f -

Hiki ke kiʻi ʻia nā hiʻohiʻona kustomize ma o kubectl -k (mai ka mana Kubernetes 1.14). Eia naʻe, e hoʻomanaʻo ʻia ʻoi aku ka wikiwiki o ka pūʻolo kustomize kūʻokoʻa ma mua o ka pūʻolo kubectl i hoʻohui ʻia (ma ka liʻiliʻi loa kēia me ka hoʻokuʻu Kubernetes 1.15).

E nīnau paha ka poʻe heluhelu: "No ke aha kēia paʻakikī inā hiki iā ʻoe ke hoʻoponopono pololei i nā faila?" Nīnau nui. I kā mākou laʻana, ʻoiaʻiʻo hiki hoʻololi i nā faila deployment.yaml и service.yaml pololei, akā pehea inā he mākia lākou o ka papahana ʻē aʻe? ʻO ka hoʻololi pololei ʻana i nā faila he mea paʻakikī (inā ʻaʻole hiki ʻole) ke hoʻihoʻi hou i kahi ʻōpala ke hoʻololi ʻia i ke kumu/kumu. ʻO ka hoʻohana ʻana iā kustomize hiki iā ʻoe ke hoʻonohonoho i kēia mau hoʻololi i kahi faila kustomization.yaml, waiho i nā faila kumu a no laila e maʻalahi ka hoʻihoʻi ʻana i nā faila kumu inā pono.

ʻIke ʻia nā pōmaikaʻi o kustomize i nā hihia hoʻohana paʻakikī. Ma ka laana maluna kustomization.yaml a aia nā kumuwaiwai i ka papa kuhikuhi like. Eia naʻe, kākoʻo ʻo kustomize i nā hihia hoʻohana i loaʻa kahi hoʻonohonoho kumu a me nā ʻano like ʻole o ia mea, ʻike ʻia hoʻi nā pani. No ka laʻana, makemake ka mea hoʻohana e lawe i ka Deployment a me ka Service no nginx, aʻu i hoʻohana ai ma ke ʻano he laʻana, a hana i ka hoʻomohala ʻana, ka hoʻonohonoho ʻana a me nā ʻano hana (a i ʻole nā ​​​​mea like ʻole) o kēlā mau faila. No ka hana ʻana i kēia, pono ʻo ia i nā overlay i ʻōlelo ʻia ma luna a, ʻoiaʻiʻo, nā kumu waiwai ponoʻī.

E hōʻike i ka manaʻo o nā uhi a me nā kumu waiwai (nā kumu waiwai), e noʻonoʻo mākou aia nā papa kuhikuhi i kēia ʻano:

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

Ma ka waihona base/kustomization.yaml nā mea hoʻohana e hoʻohana ana i ke kahua resources e haʻi wale aku i nā kumuwaiwai e pono ai ke hoʻokomo ʻia e kustomize.

I kēlā me kēia faila overlays/{dev,staging,prod}/kustomization.yaml kuhikuhi nā mea hoʻohana i ka hoʻonohonoho kumu ma ke kahua resources, a laila hōʻike i nā hoʻololi kikoʻī no kaiapuni i haawiia. No ka laʻana, faila overlays/dev/kustomization.yaml e like paha me ka laʻana i hōʻike mua ʻia:

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

I kēia hihia, ʻo ka faila overlays/prod/kustomization.yaml hiki ke 'oko'a loa:

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

Ke holo ka mea hoʻohana kustomize build . i ka papa kuhikuhi overlays/dev, e hoʻopuka ʻo kustomize i ke koho hoʻomohala. Inā holo ʻoe kustomize build . i ka papa kuhikuhi overlays/prod - loaʻa iā ʻoe ke koho hana. A ʻo kēia mau mea a pau - me ka ʻole e hoʻololi i ka mea kumu (kumu) nā faila, nā mea a pau ma ke ʻano declarative a me ka deterministic. Hiki iā ʻoe ke hana i ka hoʻonohonoho kumu a me ka uhi ʻana i nā papa kuhikuhi pololei i ka mana mana, me ka ʻike e pili ana i kēia mau faila hiki iā ʻoe ke hana hou i ka hoʻonohonoho makemake i kēlā me kēia manawa.

He hoʻolauna pōkole no Kustomize
Nānā. unuhi.: Hōʻike mai ka palapala papahana ma ka hoʻohana ʻana i nā overlays ma kustomize

Hiki ke hoʻopilikino nui ʻoi aku ma mua o ka mea i uhi ʻia ma kēia ʻatikala. Eia naʻe, ke manaʻolana nei au he hoʻolauna maikaʻi ia.

Nā Punawai Hou

Nui nā ʻatikala maikaʻi a me nā puke e pili ana i kustomize. Eia kekahi mau mea aʻu i ʻike pono ai:

Nānā. unuhi.: Hiki iā ʻoe ke paipai i kahi poloka o nā loulou i paʻi ʻia ma ke ʻano Resources ma ka punaewele o ka pono, a me ka hōʻiliʻili o nā wikiō me nā hōʻike hou loa e pili ana i kustomize.

Inā he mau nīnau a manaʻo paha kāu no ka hoʻomaikaʻi ʻana i kēia mea, hāmama mau wau i nā manaʻo manaʻo. Hiki iā ʻoe ke hoʻokaʻaʻike mai iaʻu ma Twitter ole Kaila Kubernetes Slack. E leʻaleʻa i ka hoʻololi ʻana i kāu mau hōʻike me ka kustomize!

PS mai ka unuhi

E heluhelu pū ma kā mākou blog:

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka