Lus Qhia luv luv rau Kustomize

Nco tseg. txhais.: Kab lus tau sau los ntawm Scott Lowe, tus kws tshaj lij uas muaj kev paub dhau los hauv IT, uas yog tus sau / tus kws sau ntawv ntawm xya phau ntawv luam tawm (tsuas yog ntawm VMware vSphere). Tam sim no nws ua haujlwm rau nws lub tuam txhab VMware Heptio (tau txais hauv 2016), tshwj xeeb hauv huab xam thiab Kubernetes. Cov ntawv nyeem nws tus kheej ua haujlwm raws li kev qhia yooj yim thiab nkag siab txog kev tswj hwm kev teeb tsa rau Kubernetes siv thev naus laus zis Customize, uas nyuam qhuav dhau los ua ib feem ntawm K8s.

Lus Qhia luv luv rau Kustomize

Kustomize yog ib qho cuab yeej uas tso cai rau cov neeg siv "kho qhov yooj yim, template-dawb YAML cov ntaub ntawv rau ntau lub hom phiaj, tawm hauv YAML qub thiab siv tau" (cov lus piav qhia ncaj qha los ntawm customize repository ntawm GitHub). Kustomize tuaj yeem khiav ncaj qha lossis, raws li Kubernetes 1.14, siv kubectl -k txhawm rau nkag mus rau nws cov haujlwm ua haujlwm (txawm hais tias yog Kubernetes 1.15, qhov sib cais binary yog qhov tshiab dua li qhov muaj peev xwm ua rau kubectl). (Nco tseg. txhais.: Thiab nrog kev tso tawm tsis ntev los no Kub Qav Kaws 1.16 kho txhawb los ntawm kuj nyob rau hauv kubeadm utility.) Hauv tsab xov xwm no, kuv xav qhia cov neeg nyeem rau cov hauv paus ntawm kustomize.

Hauv nws daim ntawv yooj yim tshaj plaws / daim ntawv thov, kustomize tsuas yog ib qho kev sau ntawm cov peev txheej (YAML cov ntaub ntawv uas txhais cov khoom Kubernetes: Kev xa tawm, Kev Pabcuam, thiab lwm yam) ntxiv rau cov npe ntawm cov lus qhia rau kev hloov pauv uas yuav tsum tau ua rau cov peev txheej ntawd. Ib yam li ua siv cov txheej txheem qhia muaj nyob rau hauv Makefile, thiab Docker tsim lub thawv raws li cov lus qhia los ntawm Dockerfile, customize siv kustomization.yaml khaws cov lus qhia txog qhov hloov pauv uas tus neeg siv xav ua rau cov txheej txheem.

Nov yog ib daim ntawv piv txwv kustomization.yaml:

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

Kuv yuav tsis sim tham txog txhua qhov ua tau hauv cov ntaub ntawv. kustomization.yaml (qhov no yog sau zoo txog no), tab sis kuv yuav piav qhia luv luv ntawm ib qho piv txwv tshwj xeeb:

  • teb resources qhia tias dab tsi (uas cov peev txheej) customize yuav hloov. Hauv qhov no, nws yuav nrhiav cov peev txheej hauv cov ntaub ntawv deployment.yaml ΠΈ service.yaml hauv koj phau ntawv teev npe (koj tuaj yeem qhia tag nrho lossis txheeb ze txoj hauv kev yog tias tsim nyog).
  • teb namePrefix qhia kustomize ntxiv ib qho prefix (hauv qhov no - dev-) rau attribute name tag nrho cov peev txheej tau teev tseg hauv thaj chaw resources. Yog li, yog tias Deployment muaj name nrog lub ntsiab lus nginx-deployment, customize yuav ua rau nws dev-nginx-deployment.
  • teb namespace qhia kustomize ntxiv qhov muab lub npe rau txhua qhov chaw. Hauv qhov no, Kev Tshaj Tawm thiab Kev Pabcuam yuav poob rau hauv lub npe development.
  • Thaum kawg, teb commonLabels muaj cov ntawv sau uas yuav muab ntxiv rau txhua qhov kev pabcuam. Hauv peb qhov piv txwv, kustomize yuav muab ib daim ntawv lo rau cov peev txheej nrog lub npe environment thiab lub ntsiab lus development.

Yog tus neeg siv ua kustomize build . hauv daim ntawv teev npe nrog cov ntaub ntawv kustomization.yaml thiab cov peev txheej tsim nyog (piv txwv li cov ntaub ntawv deployment.yaml ΠΈ service.yaml), tom qab ntawd ntawm cov zis nws yuav tau txais cov ntawv nyeem nrog cov kev hloov pauv tau teev tseg hauv kustomization.yaml.

Lus Qhia luv luv rau Kustomize
Nco tseg. txhais.: Daim duab piv txwv los ntawm cov ntaub ntawv hauv qhov project ntawm "yooj yim" siv kustomize

Cov zis tuaj yeem raug xa rov qab yog tias kev hloov pauv yuav tsum tau cog lus:

kustomize build . > custom-config.yaml

Cov ntaub ntawv tso zis yog txiav txim siab (cov ntaub ntawv tawm tswv yim tib yam yuav tsim cov txiaj ntsig zoo ib yam), yog li koj tsis tas yuav khaws cov txiaj ntsig rau hauv cov ntaub ntawv. Hloov chaw, nws tuaj yeem xa ncaj qha mus rau lwm cov lus txib:

kustomize build . | kubectl apply -f -

Cov yam ntxwv kustomize kuj tuaj yeem nkag los ntawm kubectl -k (txij li Kubernetes version 1.14). Txawm li cas los xij, nco ntsoov tias lub pob kustomize standalone tau hloov kho sai dua li cov pob kubectl sib xyaw ua ke (tsawg kawg yog qhov no nrog Kubernetes 1.15 tso tawm).

Cov neeg nyeem yuav nug: "Vim li cas tag nrho qhov nyuaj no yog tias koj tuaj yeem hloov kho cov ntaub ntawv ncaj qha?" Lus nug zoo. Hauv peb qhov piv txwv, qhov tseeb tau hloov cov ntaub ntawv deployment.yaml ΠΈ service.yaml ncaj qha, tab sis yuav ua li cas yog tias lawv yog rab rawg ntawm lwm tus qhov project? Hloov cov ntaub ntawv ncaj qha ua rau nws nyuaj (yog tias tsis tuaj yeem ua tsis tau) kom rov pib lub diav rawg thaum hloov pauv mus rau lub hauv paus / qhov chaw. Siv kustomize tso cai rau koj los tswj cov kev hloov pauv no hauv cov ntaub ntawv kustomization.yaml, tawm hauv cov ntaub ntawv qub qub thiab yog li ua rau nws yooj yim dua rau rov tsim cov ntaub ntawv qub yog tias tsim nyog.

Cov txiaj ntsig ntawm kustomize tau pom meej nyob rau hauv cov ntaub ntawv siv ntau dua. Hauv qhov piv txwv saum toj no kustomization.yaml thiab cov ntaub ntawv yog nyob rau hauv tib phau ntawv. Txawm li cas los xij, kustomize txhawb kev siv cov xwm txheej uas muaj lub hauv paus teeb tsa thiab ntau yam sib txawv ntawm nws, tseem hu ua sib tshooj. Piv txwv li, tus neeg siv xav coj Kev Siv thiab Kev Pabcuam rau nginx, uas kuv tau siv ua piv txwv, thiab tsim kev txhim kho, kev ua haujlwm thiab ntau lawm versions (los yog variants) ntawm cov ntaub ntawv. Ua li no, nws yuav xav tau cov lus hais saum toj no thiab, qhov tseeb, cov peev txheej hauv lawv tus kheej.

Txhawm rau piav qhia lub tswv yim ntawm kev sib tshooj thiab cov peev txheej hauv qab (base resources), cia peb xav tias cov npe muaj cov qauv hauv qab no:

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

Hauv cov ntaub ntawv base/kustomization.yaml cov neeg siv lub teb resources tsuas tshaj tawm cov peev txheej uas kustomize yuav tsum suav nrog.

Hauv txhua cov ntaub ntawv overlays/{dev,staging,prod}/kustomization.yaml cov neeg siv xa mus rau lub hauv paus configuration nyob rau hauv lub teb resources, thiab tom qab ntawd qhia cov kev hloov pauv tshwj xeeb rau muab ib puag ncig. Piv txwv li, cov ntaub ntawv overlays/dev/kustomization.yaml tej zaum yuav zoo li qhov piv txwv tau muab ua ntej:

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

Hauv qhov no cov ntaub ntawv overlays/prod/kustomization.yaml tuaj yeem sib txawv kiag li:

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

Thaum tus neeg siv khiav kustomize build . hauv phau ntawv teev khoom overlays/dev, kustomize yuav tsim qhov kev xaiv txhim kho. Yog koj khiav kustomize build . hauv phau ntawv teev khoom overlays/prod - koj tau txais kev xaiv ntau lawm. Thiab tag nrho cov no - tsis muaj kev hloov pauv rau qhov qub (base) cov ntaub ntawv, tag nrho hauv ib txoj kev tshaj tawm thiab txiav txim siab. Koj tuaj yeem ua rau lub hauv paus kev teeb tsa thiab cov ntawv tshaj tawm ncaj qha rau kev tswj hwm version, paub tias raws li cov ntaub ntawv no koj tuaj yeem tsim kho qhov xav tau ntawm txhua lub sijhawm.

Lus Qhia luv luv rau Kustomize
Nco tseg. txhais.: Daim duab qhia los ntawm cov ntaub ntawv qhia txog kev siv overlays hauv kustomize

Customize ua tau ntau ntau tshaj li qhov tau hais hauv kab lus no. Txawm li cas los xij, kuv vam tias nws ua haujlwm tau zoo.

Cov peev txheej ntxiv

Muaj ntau cov ntawv zoo thiab cov ntawv tshaj tawm txog kustomize. Nov yog qee qhov kuv pom muaj txiaj ntsig tshwj xeeb:

Nco tseg. txhais.: Koj tseem tuaj yeem pom zoo kom thaiv cov ntawv txuas luam tawm raws li Cov Kev Pab Rau Cov Lag Luam ntawm qhov chaw siv hluav taws xob lub vev xaib, tom qab ntawd los ntawm kev sau cov yeeb yaj kiab nrog cov ntawv tshaj tawm tshiab txog kustomize.

Yog tias koj muaj lus nug lossis lus pom zoo rau kev txhim kho cov khoom siv no, kuv ib txwm qhib rau kev tawm tswv yim. Koj tuaj yeem tiv tauj kuv ntawm Twitter los yog Kubernetes Slack channel. Muaj kev lom zem hloov kho koj cov manifests nrog customize!

PS los ntawm tus txhais lus

Nyeem kuj ntawm peb blog:

Tau qhov twg los: www.hab.com

Ntxiv ib saib