He Kupu Whakataki Poto mo Kustomize

Tuhipoka. whakamaori.: Na Scott Lowe te tuhinga i tuhi, he miihini whai wheako nui ki te IT, ko ia te kaituhi/kaituhi-tahi o nga pukapuka e whitu kua taia (ko te nuinga i runga i te VMware vSphere). Inaianei kei te mahi ia mo tana apiti VMware Heptio (i riro mai i te tau 2016), he tohunga ki nga mahi rorohiko kapua me nga Kubernetes. Ko te tuhinga ake he kupu whakataki poto me te ngawari ki te mohio ki te whakahaere whirihoranga mo Kubernetes e whakamahi ana i te hangarau. Whakaritea, i uru mai hei waahanga o K8s.

He Kupu Whakataki Poto mo Kustomize

Ko te Kustomize he taputapu e taea ai e nga kaiwhakamahi te "whakarite i nga konae YAML ngawari, tauira-kore mo nga kaupapa rereke, ka waiho te YAML taketake kia mau tonu me te whakamahi" (whakaahuatanga i tono tika mai i customize putunga i runga i GitHub). Ka taea te whakahaere tika a Kustomize, i te Kubernetes 1.14 ranei, kua whakamahia kubectl -k ki te uru atu ki tana mahi (ahakoa mai i te Kubernetes 1.15, he hou ake te taarua wehe i nga kaha i hangaia ki te kubectl). (Tuhipoka. whakamaori.: Na me te tukunga tata Kubernetes 1.16 whakarite tautokona e kei roto hoki i te whaipainga kubeadm.) I tenei pou, e hiahia ana ahau ki te whakauru i nga kaipānui ki nga kaupapa o te kustomize.

I roto i tona ahua ngawari / tono, ko te kustomize he kohinga rauemi noa ( nga konae YAML e tautuhi ana i nga taonga Kubernetes: Whakamahinga, Ratonga, me etahi atu) me te rarangi o nga tohutohu mo nga huringa e tika ana kia mahia ki aua rauemi. Ka rite ki te whakamahi i te huinga tohutohu kei roto Makefile, ka hangaia e Docker te ipu i runga i nga tohutohu mai i Dockerfile, whakaritea nga whakamahinga kustomization.yaml ki te rokiroki i nga tohutohu mo nga huringa e hiahia ana te kaiwhakamahi ki te mahi ki te huinga rauemi.

Anei he tauira tauira kustomization.yaml:

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

E kore ahau e ngana ki te korero mo nga waahi katoa kei roto i te konae. kustomization.yaml (He pai te tuhi mo tenei konei), engari ka hoatu e ahau he whakamarama poto mo tetahi tauira motuhake:

  • mara resources e tohu ana he aha (he rauemi) ka huri. I tenei keehi, ka rapua e ia nga rauemi kei roto i nga konae deployment.yaml и service.yaml i roto i to whaiaronga (ka taea e koe te tautuhi i nga huarahi katoa, i nga huarahi whaitake ranei mehemea e tika ana).
  • mara namePrefix ka tohutohu ki a kustomize ki te taapiri i tetahi tohu tuatahi (i tenei keehi - dev-) ki te huanga name nga rauemi katoa kua tautuhia i roto i te mara resources. No reira, mena kei te Whakamahinga name me te tikanga nginx-deployment, Whakaritea ka mahia dev-nginx-deployment.
  • mara namespace ka tohutohu ki a kustomize ki te taapiri i te mokowāingoa ki ngā rauemi katoa. I tenei keehi, ka taka te Whakamahi me te Ratonga ki te mokowāingoa development.
  • Ka mutu, ko te mara commonLabels kei roto he huinga tapanga ka taapiri atu ki nga rauemi katoa. I roto i ta maatau tauira, ka tohua e kustomize he tapanga ki nga rauemi me te ingoa environment me te tikanga development.

Mena ka mahi te kaiwhakamahi kustomize build . i roto i te whaiaronga me te konae kustomization.yaml me nga rauemi e tika ana (ara nga konae deployment.yaml и service.yaml), na i te putanga ka whiwhi tuhinga me nga huringa kua tohua ki roto kustomization.yaml.

He Kupu Whakataki Poto mo Kustomize
Tuhipoka. whakamaori.: Whakaahua mai i nga tuhinga kaupapa mo te whakamahi "ngawari" o kustomize

Ka taea te tuku i te putanga ki te hiahia whakarereketia:

kustomize build . > custom-config.yaml

Ko nga raraunga whakaputa he mea whakatau (ka rite nga raraunga whakaurunga ka whakaputa i nga hua whakaputa), no reira kaore koe e tiaki i te hua ki te konae. Engari, ka taea te tuku tika ki tetahi atu whakahau:

kustomize build . | kubectl apply -f -

Ka taea hoki te uru atu ki nga ahuatanga customize ma kubectl -k (mai i te putanga Kubernetes 1.14). Heoi, kia maumahara ko te mokete kustomize motuhake he tere ake te whakahou ake i te kete kubectl whakauru (koinei te ahua o te tukunga Kubernetes 1.15).

Ka patai pea nga kaipanui: "He aha enei uauatanga katoa mena ka taea e koe te whakatika tika i nga konae?" Uiui nui. I roto i to tatou tauira, pono taea whakakē kōnae deployment.yaml и service.yaml tika, engari ka pehea mena he marau o te kaupapa a tetahi atu? Ma te huri tika i nga konae ka uaua (mehemea kare e taea) te whakahoki ano i te marau ina huri nga huringa ki te takenga/puna. Ma te whakamahi i te customize ka taea e koe te whakauru i enei huringa ki tetahi konae kustomization.yaml, ka waiho kia noho tonu nga konae taketake, na reira ka ngawari ake te whakahoki ano i nga konae taketake mena e tika ana.

Ko nga painga o te kustomize ka kitea i roto i nga keehi whakamahinga uaua ake. I roto i te tauira i runga ake nei kustomization.yaml me nga rauemi kei roto i te raarangi kotahi. Heoi, kei te tautoko a kustomize i nga keehi whakamahi kei reira he whirihoranga turanga me te maha o nga momo rereke, e mohiotia ana ko Tuhinga. Hei tauira, i hiahia tetahi kaiwhakamahi ki te tango i te Whakamahinga me te Ratonga mo te nginx, i whakamahia e au hei tauira, me te hanga i te whanaketanga, te whakaari me te whakaputa putanga (he rereke ranei) o aua konae. Ki te mahi i tenei, ka hiahia ia ki nga whakakikorua kua whakahuahia ake nei, me te pono, ko nga rauemi taketake ake.

Hei whakaatu i te whakaaro o nga whakakikorua me nga rauemi o raro (rauemi turanga), me whakaaro ko nga whaiaronga te hanganga e whai ake nei:

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

I roto i te kōnae base/kustomization.yaml nga kaiwhakamahi e whakamahi ana i te mara resources whakapuaki noa i nga rauemi me whakauru e kustomize.

I ia kōnae overlays/{dev,staging,prod}/kustomization.yaml ka titiro nga kaiwhakamahi ki te whirihoranga turanga i te mara resources, ka tohu i nga huringa motuhake mo taiao homai. Hei tauira, kōnae overlays/dev/kustomization.yaml penei pea te ahua o te tauira i homai i mua:

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

I tenei keehi ko te konae overlays/prod/kustomization.yaml he rereke rawa pea:

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

Ina rere te kaiwhakamahi kustomize build . i roto i te rārangi overlays/dev, ka whakaputahia e customize te kōwhiringa whanaketanga. Mena ka oma koe kustomize build . i roto i te rārangi overlays/prod - ka whiwhi koe i te whiringa whakaputa. Na enei mea katoa - kaore he whakarereketanga ki te taketake (turanga) kōnae, katoa i roto i te ara whakapuaki me te whakatau. Ka taea e koe te tuku i te whirihoranga turanga me te whakakikorua i nga whaiaronga tika ki te mana putanga, ma te mohio kei runga i enei konae ka taea e koe te whakaputa i te whirihoranga e hiahiatia ana i nga wa katoa.

He Kupu Whakataki Poto mo Kustomize
Tuhipoka. whakamaori.: Whakaahua mai i nga tuhinga kaupapa mo te whakamahi i nga whakakikorua i roto i te kustomize

Whakaritea taea nui nui atu i nga korero e korerohia ana i tenei tuhinga. Heoi, kei te tumanako ahau he korero pai tenei.

Rauemi Tāpiri

He maha nga tuhinga pai me nga whakaputanga mo te kustomize. Anei etahi i kitea e au he tino whai hua:

Tuhipoka. whakamaori.: Ka taea hoki e koe te taunaki i te poraka o nga hononga kua whakaputaina hei rauemi i runga i te paetukutuku o te taputapu, ka whai i te kohinga ataata me nga purongo hou mo kustomize.

Mena kei a koe nga patai, he whakaaro ranei mo te whakapai ake i tenei rauemi, kei te tuwhera tonu ahau ki nga urupare. Ka taea e koe te whakapā mai ki ahau i Twitter ranei Te hongere Kubernetes Slack. Kia ngahau ki te whakarereke i o whakaaturanga me te kustomize!

PS mai i te kaiwhakamaori

Pānuihia hoki i runga i ta maatau blog:

Source: will.com

Tāpiri i te kōrero