Usa ka Mubo nga Pasiuna sa Pag-customize

Nota. transl.: Ang artikulo gisulat ni Scott Lowe, usa ka inhenyero nga adunay halapad nga kasinatian sa IT, kinsa mao ang tagsulat / co-tagsulat sa pito ka giimprinta nga mga libro (nag-una sa VMware vSphere). Nagtrabaho na siya karon sa VMware nga subsidiary nga Heptio (nakuha kaniadtong 2016), nga espesyalista sa cloud computing ug Kubernetes. Ang teksto mismo nagsilbi ingon usa ka mubo ug dali masabtan nga pasiuna sa pagdumala sa pag-configure alang sa Kubernetes gamit ang teknolohiya Ipasibo, nga bag-o lang nahimong bahin sa K8s.

Usa ka Mubo nga Pasiuna sa Pag-customize

Ang Kustomize usa ka himan nga nagtugot sa mga tiggamit sa "ipasibo ang yano, walay template nga YAML nga mga file alang sa lain-laing mga katuyoan, gibiyaan ang orihinal nga YAML nga wala'y mahimo ug magamit" (deskripsyon nga gihulam direkta gikan sa customize repository sa GitHub). Ang Kustomize mahimong direktang ipadagan o, sama sa Kubernetes 1.14, gigamit kubectl -k aron ma-access ang gamit niini (bisan pa sa Kubernetes 1.15, ang bulag nga binary mas bag-o kaysa sa mga kapabilidad nga gitukod sa kubectl). (Nota. transl.: Ug uban sa bag-o nga pagpagawas Kubernet 1.16 ipahiangay gisuportahan sa usab sa kubeadm utility.) Sa kini nga post, gusto nakong ipaila ang mga magbabasa sa mga sukaranan sa kustomize.

Sa pinakasimple nga porma/aplikasyon niini, ang kustomize usa lamang ka koleksyon sa mga kahinguhaan (mga file sa YAML nga naghubit sa mga butang sa Kubernetes: Mga Deployment, Mga Serbisyo, ug uban pa) ug usa ka lista sa mga panudlo alang sa mga pagbag-o nga kinahanglan buhaton sa mga kapanguhaan. Sama sa make gamit ang set sa instruksiyon nga anaa sa Makefile, ug ang Docker nagtukod sa sudlanan base sa mga instruksyon gikan sa Dockerfile, ipasibo ang mga gamit kustomization.yaml sa pagtipig sa mga instruksyon bahin sa kung unsang mga pagbag-o ang gusto buhaton sa tiggamit sa usa ka hugpong sa mga kapanguhaan.

Ania ang usa ka pananglitan nga file kustomization.yaml:

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

Dili nako sulayan nga hisgutan ang tanan nga posible nga mga natad sa file. kustomization.yaml (Kini maayo nga gisulat bahin sa dinhi), apan mohatag ko og mubo nga katin-awan sa usa ka piho nga pananglitan:

  • uma resources nagpaila kung unsa (unsa nga mga kapanguhaan) ang pagbag-o sa kustomize. Sa kini nga kaso, kini mangita alang sa mga kapanguhaan sa mga file deployment.yaml ΠΈ service.yaml sa imong direktoryo (mahimo nimong ipiho ang tibuuk o paryente nga mga agianan kung kinahanglan).
  • uma namePrefix nagmando sa kustomize sa pagdugang sa usa ka piho nga prefix (sa kini nga kaso - dev-) nga i-attribute name tanan nga mga kapanguhaan nga gihubit sa natad resources. Busa, kung ang Deployment adunay name uban sa kahulogan nginx-deployment, ipahiangay kini dev-nginx-deployment.
  • uma namespace nagmando sa kustomize nga idugang ang gihatag nga namespace sa tanan nga mga kapanguhaan. Sa kini nga kaso, ang Deployment ug Serbisyo mahulog sa namespace development.
  • Sa katapusan, ang kapatagan commonLabels adunay usa ka hugpong sa mga label nga idugang sa tanan nga mga kapanguhaan. Sa among pananglitan, ang kustomize mag-assign ug label sa mga kapanguhaan nga adunay ngalan environment ug kahulogan development.

Kung buhaton sa user kustomize build . sa direktoryo nga adunay file kustomization.yaml ug ang gikinahanglan nga mga kapanguhaan (ie mga file deployment.yaml ΠΈ service.yaml), unya sa output makadawat kini usa ka teksto nga adunay mga pagbag-o nga gitakda sa kustomization.yaml.

Usa ka Mubo nga Pasiuna sa Pag-customize
Nota. transl.: Ilustrasyon gikan sa dokumentasyon sa proyekto sa "simple" nga paggamit sa kustomize

Ang output mahimong i-redirect kung kinahanglan ang mga pagbag-o:

kustomize build . > custom-config.yaml

Deterministiko ang datos sa output (ang parehas nga datos sa pag-input magpatunghag parehas nga mga resulta sa output), busa dili nimo kinahanglan nga i-save ang resulta sa usa ka file. Hinunoa, kini mahimong ipasa direkta ngadto sa laing sugo:

kustomize build . | kubectl apply -f -

Ang customize nga mga bahin mahimo usab nga ma-access pinaagi sa kubectl -k (sukad sa Kubernetes nga bersyon 1.14). Bisan pa, hinumdomi nga ang standalone nga kustomize nga pakete gi-update nga mas paspas kaysa sa integrated nga kubectl nga pakete (labing menos kini ang kaso sa pagpagawas sa Kubernetes 1.15).

Mahimong mangutana ang mga magbabasa: "Nganong kining tanan nga pagkakomplikado kung mahimo nimo nga i-edit ang mga file direkta?" Dakong pangutana. Sa atong panig-ingnan, sa pagkatinuod mahimo usba ang mga file deployment.yaml ΠΈ service.yaml direkta, apan unsa man kung kini usa ka tinidor sa proyekto sa uban? Ang pag-usab sa mga file direkta nagpalisud (kon dili imposible) sa pag-rebase sa usa ka tinidor kung ang mga pagbag-o gihimo sa gigikanan / gigikanan. Ang paggamit sa kustomize nagtugot kanimo sa pagsentro niini nga mga pagbag-o sa usa ka file kustomization.yaml, gibiyaan ang orihinal nga mga file nga wala’y hunong ug sa ingon nagpasayon ​​sa pag-rebase sa orihinal nga mga file kung kinahanglan.

Ang mga benepisyo sa kustomize makita sa mas komplikado nga mga kaso sa paggamit. Sa pananglitan sa ibabaw kustomization.yaml ug ang mga kapanguhaan anaa sa samang direktoryo. Bisan pa, ang kustomize nagsuporta sa mga kaso sa paggamit diin adunay base nga pag-configure ug daghang mga variant niini, nailhan usab nga ang nagaobra. Pananglitan, gusto sa user nga kuhaon ang Deployment and Service para sa nginx, nga akong gigamit isip usa ka panig-ingnan, ug paghimo og development, staging ug production versions (o variants) sa maong mga file. Aron mahimo kini, kinahanglan niya ang nahisgutan sa ibabaw nga mga overlay ug, sa tinuud, ang sukaranan nga mga kapanguhaan mismo.

Aron ihulagway ang ideya sa mga overlay ug nagpahiping mga kapanguhaan (base nga mga kapanguhaan), isipon nato nga ang mga direktoryo adunay mosunod nga istruktura:

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

Sa file base/kustomization.yaml tiggamit gamit ang field resources ipahayag lang ang mga kahinguhaan nga kinahanglan ilakip sa kustomize.

Sa matag usa sa mga file overlays/{dev,staging,prod}/kustomization.yaml ang mga tiggamit nagtumong sa base nga configuration sa field resources, ug dayon ipakita ang piho nga mga pagbag-o alang sa gihatag nga palibot. Pananglitan, file overlays/dev/kustomization.yaml mahimong tan-awon sama sa pananglitan nga gihatag sa sayo pa:

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

Sa kini nga kaso, ang file overlays/prod/kustomization.yaml mahimong hingpit nga lahi:

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

Sa diha nga ang user modagan kustomize build . sa katalogo overlays/dev, ang kustomize makamugna sa opsyon sa pag-uswag. Kung modagan ka kustomize build . sa katalogo overlays/prod - makuha nimo ang opsyon sa produksiyon. Ug kining tanan - nga wala maghimo bisan unsang pagbag-o sa orihinal (base) mga file, tanan sa deklaratibo ug deterministikong paagi. Mahimo nimong i-commit ang base nga configuration ug overlay nga mga direktoryo nga direkta sa pagkontrol sa bersyon, nahibal-an nga base niini nga mga file mahimo nimong kopyahon ang gusto nga configuration sa bisan unsang oras.

Usa ka Mubo nga Pasiuna sa Pag-customize
Nota. transl.: Ilustrasyon gikan sa dokumentasyon sa proyekto sa paggamit sa mga overlay sa kustomize

Ipasibo pwede daghan labaw pa sa gikobrehan niini nga artikulo. Bisan pa, nanghinaut ko nga kini usa ka maayong pasiuna.

Dugang nga mga Kapanguhaan

Adunay daghang maayong mga artikulo ug publikasyon bahin sa kustomize. Ania ang pipila nga akong nakit-an nga labi ka mapuslanon:

Nota. transl.: Mahimo ka usab nga magrekomenda sa usa ka bloke sa mga link nga gipatik ingon Kapanguhaan sa website sa utility, gisundan sa usa ka koleksyon sa mga video nga adunay pinakabag-o nga mga taho bahin sa kustomize.

Kung naa kay pangutana o suhestyon para sa pagpauswag sa kini nga materyal, kanunay kong bukas sa feedback. Mahimo nimong kontakon ako sa Twitter o Kubernetes Slack channel. Paglingaw sa pagbag-o sa imong mga manifest gamit ang kustomize!

PS gikan sa tighubad

Basaha usab sa among blog:

Source: www.habr.com

Idugang sa usa ka comment