Kustomize جو مختصر تعارف

نوٽ. ترجمو: مضمون Scott Lowe طرفان لکيو ويو آهي، جيڪو IT ۾ وسيع تجربو رکندڙ انجنيئر آهي، جيڪو ست ڇپيل ڪتابن جو ليکڪ/ شريڪ ليکڪ آهي (بنيادي طور تي VMware vSphere تي). هو هاڻي ڪم ڪري ٿو ان جي VMware ماتحت اداري Heptio (2016 ۾ حاصل ڪيل)، ڪلائوڊ ڪمپيوٽنگ ۽ ڪبرنيٽس ۾ ماهر. متن پاڻ کي ٽيڪنالاجي استعمال ڪندي Kubernetes لاءِ ترتيب ڏيڻ جي انتظام جي هڪ جامع ۽ سمجھڻ ۾ آسان تعارف جي طور تي ڪم ڪري ٿو حسب ضرورت، جيڪو تازو K8s جو حصو بڻجي ويو.

Kustomize جو مختصر تعارف

Kustomize ھڪڙو اوزار آھي جيڪو صارفين کي "مختلف مقصدن لاء سادي، ٽيمپليٽ فري YAML فائلن کي ترتيب ڏيڻ جي اجازت ڏئي ٿو، اصل YAML برقرار ۽ قابل استعمال" (تفصيل سڌو سنئون GitHub تي ڪسٽمائيز مخزن). Kustomize سڌو هلائي سگھجي ٿو يا، ڪبرنيٽس 1.14 جي طور تي، استعمال ٿيل kubectl -k ان جي ڪارڪردگي تائين رسائي حاصل ڪرڻ لاءِ (جيتوڻيڪ Kubernetes 1.15 جي مطابق، الڳ بائنري ڪبيڪٽل ۾ ٺهيل صلاحيتن کان نئون آهي). (نوٽ. ترجمو: ۽ تازو رليز سان ڪبرنيٽز 1.16 ترتيب ڏيڻ جي حمايت ڪئي پڻ kubeadm افاديت ۾.) هن پوسٽ ۾، مان پڙهندڙن کي متعارف ڪرائڻ چاهيان ٿو ڪسٽمائيز جي بنيادي ڳالهين.

ان جي آسان ترين فارم/ايپليڪيشن ۾، kustomize صرف وسيلن جو هڪ مجموعو آهي (YAML فائلون جيڪي وضاحت ڪن ٿيون Kubernetes شيون: Deployments, Services, etc.) ۽ انهن تبديلين لاءِ هدايتن جي هڪ فهرست جيڪي انهن وسيلن ۾ ٿيڻ گهرجن. جيئن ته ٺاهيو استعمال ڪري ٿو هدايتون سيٽ ۾ موجود Makefile، ۽ Docker کان هدايتون جي بنياد تي ڪنٽينر ٺاهي ٿو Dockerfile، حسب ضرورت استعمال kustomization.yaml استعمال ڪندڙ وسيلن جي سيٽ ۾ ڪهڙيون تبديليون ڪرڻ چاهي ٿو بابت هدايتون ذخيرو ڪرڻ لاءِ.

هتي هڪ مثال فائل آهي kustomization.yaml:

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

مان فائل ۾ سڀني ممڪن شعبن بابت ڳالهائڻ جي ڪوشش نه ڪندس. kustomization.yaml (هن بابت سٺو لکيو ويو آهي هتي)، پر مان هڪ خاص مثال جي مختصر وضاحت ڏيندس:

  • ميدان resources اشارو ڪري ٿو (ڪهڙا وسيلا) ڪسٽمائيز تبديل ٿي ويندا. انهي حالت ۾، اهو فائلن ۾ وسيلن جي ڳولا ڪندو deployment.yaml и service.yaml توهان جي ڊاريڪٽري ۾ (جيڪڏهن ضروري هجي ته توهان مڪمل يا لاڳاپيل رستا بيان ڪري سگهو ٿا).
  • ميدان namePrefix هڪ خاص اڳڪٿي شامل ڪرڻ لاءِ ڪسٽمائيز کي هدايت ڪري ٿو (هن صورت ۾ - dev-) منسوب ڪرڻ name فيلڊ ۾ بيان ڪيل سڀئي وسيلا resources. اهڙيء طرح، جيڪڏهن تعیناتي آهي name معنيٰ سان nginx-deployment، حسب ضرورت ٺاهيندو dev-nginx-deployment.
  • ميدان namespace kustomize کي سڀني وسيلن ۾ ڏنل نالي جي جڳھ شامل ڪرڻ جي هدايت ڪري ٿو. انهي صورت ۾، تعیناتي ۽ خدمت نالي جي جاء تي گر ٿي ويندي development.
  • آخرڪار، ميدان commonLabels ليبلن جو هڪ سيٽ شامل آهي جيڪو سڀني وسيلن ۾ شامل ڪيو ويندو. اسان جي مثال ۾، kustomize نالي سان وسيلن کي هڪ ليبل تفويض ڪندو environment ۽ معنيٰ development.

جيڪڏهن صارف ڪندو kustomize build . ڊاريڪٽري ۾ فائل سان گڏ kustomization.yaml ۽ ضروري وسيلا (يعني فائلون deployment.yaml и service.yaml)، پوء ٻاھر نڪرڻ تي ان ۾ بيان ڪيل تبديلين سان متن وصول ڪندو kustomization.yaml.

Kustomize جو مختصر تعارف
نوٽ. ترجمو: ڪسٽمائيز جي ”سادو“ استعمال تي پروجيڪٽ جي دستاويزن مان مثال

ٻاھر ڪڍي سگھجي ٿو جيڪڏھن تبديلين کي انجام ڏيڻ جي ضرورت آھي:

kustomize build . > custom-config.yaml

ٻاھر نڪرندڙ ڊيٽا تعيناتي آھي (ساڳي ان پٽ ڊيٽا ساڳيا ٻاھر نڪرندڙ نتيجا پيدا ڪندي)، تنھنڪري توھان کي فائل ۾ نتيجو محفوظ ڪرڻ جي ضرورت نھ آھي. ان جي بدران، اهو سڌو سنئون ٻئي حڪم ڏانهن منتقل ٿي سگهي ٿو:

kustomize build . | kubectl apply -f -

ڪسٽمائيز خاصيتون پڻ ذريعي پهچائي سگھجن ٿيون kubectl -k (ڪيبرنيٽس ورزن 1.14 کان وٺي). بهرحال، ذهن ۾ رکو ته اسٽينڊلون kustomize پيڪيج کي اپڊيٽ ڪيو ويو آهي تيزيءَ سان ضم ٿيل ڪبيڪٽل پيڪيج کان (گهٽ ۾ گهٽ اهو معاملو آهي Kubernetes 1.15 ڇڏڻ سان).

پڙهندڙ شايد پڇي سگھن ٿا: "جيڪڏهن توهان فائلن کي سڌو سنئون ايڊٽ ڪري سگهو ٿا ته هي سڀ پيچيدگي ڇو؟" عظيم سوال. اسان جي مثال ۾، واقعي سگهن ٿا فائلن کي تبديل ڪريو deployment.yaml и service.yaml سڌو، پر ڇا جيڪڏهن اهي ڪنهن ٻئي جي منصوبي جو ڪانٽو آهن؟ فائلن کي تبديل ڪرڻ سڌو سنئون ان کي ڏکيو بڻائي ٿو (جيڪڏهن ناممڪن نه هجي) هڪ ڪانٽو ٻيهر بحال ڪرڻ لاء جڏهن تبديليون اصل / ماخذ ۾ ڪيون وينديون آهن. kustomize استعمال ڪندي توهان کي فائل ۾ انهن تبديلين کي مرڪزي ڪرڻ جي اجازت ڏئي ٿي kustomization.yaml, اصل فائلن کي برقرار رکڻ ۽ اهڙيء طرح ان کي آسان بڻائي ٿي اصل فائلن کي بحال ڪرڻ لاء جيڪڏهن ضروري هجي.

kustomize جا فائدا وڌيڪ پيچيده استعمال جي ڪيسن ۾ واضح ٿي ويندا آهن. مٿين مثال ۾ kustomization.yaml ۽ وسيلا ساڳئي ڊاريڪٽري ۾ آهن. بهرحال، ڪسٽمائيز استعمال جي ڪيسن کي سپورٽ ڪري ٿو جتي بنيادي جوڙجڪ آهي ۽ ان جا ڪيترائي مختلف قسم، پڻ سڃاتل آهن. پورو ٿي چڪو آهي. مثال طور، هڪ صارف nginx لاءِ ڊيپلائيمينٽ ۽ سروس وٺڻ چاهي ٿو، جنهن کي مون مثال طور استعمال ڪيو آهي، ۽ انهن فائلن جي ڊولپمينٽ، اسٽيجنگ ۽ پروڊڪشن ورزن (يا مختلف قسمن) ٺاهي. هن کي ڪرڻ لاء، هن کي مٿي ڄاڻايل اوورليز جي ضرورت پوندي ۽ حقيقت ۾، بنيادي وسيلن پاڻ کي.

اوورليز ۽ زير زمين وسيلن جي خيال کي بيان ڪرڻ لاء (بنيادي وسيلن)، اچو ته فرض ڪريون ته ڊاريڪٽري هيٺ ڏنل ڍانچي آهي:

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

فائل ۾ base/kustomization.yaml استعمال ڪندڙ فيلڊ استعمال ڪندڙ resources صرف وسيلن جو اعلان ڪريو جيڪي ڪسٽمائيز ۾ شامل ٿيڻ گهرجن.

هر هڪ فائل ۾ overlays/{dev,staging,prod}/kustomization.yaml صارفين کي فيلڊ ۾ بنيادي ترتيبن جو حوالو ڏيو resources، ۽ پوءِ مخصوص تبديلين لاءِ اشارو ڪريو ڏنو ماحول. مثال طور، فائل overlays/dev/kustomization.yaml ٿي سگهي ٿو ته اڳ ڏنل مثال وانگر نظر اچي:

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

هن معاملي ۾ فائل overlays/prod/kustomization.yaml مڪمل طور تي مختلف ٿي سگهي ٿو:

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

جڏهن صارف هلائي ٿو kustomize build . فهرست ۾ overlays/dev، ڪسٽمائيز ٺاهي ويندي ترقي جو اختيار. جيڪڏهن توهان هلندا آهيو kustomize build . فهرست ۾ overlays/prod - توھان حاصل ڪريو پيداوار جا اختيار. ۽ هي سڀ - اصل ۾ ڪا به تبديلي ڪرڻ کان سواء (بنيادي) فائلون، سڀ هڪ بياني ۽ تعيناتي طريقي سان. توھان ڪم ڪري سگھوٿا بنيادي جوڙجڪ ۽ اوورلي ڊاريڪٽري سڌو سنئون ورزن ڪنٽرول ڏانھن، ڄاڻو ته انھن فائلن جي بنياد تي توھان ڪنھن به وقت گھربل ترتيبن کي ٻيهر پيدا ڪري سگھو ٿا.

Kustomize جو مختصر تعارف
نوٽ. ترجمو: kustomize ۾ اوورليز استعمال ڪرڻ تي پروجيڪٽ جي دستاويزن مان مثال

ڪسٽمائيز ڪري سگهو ٿا گهڻو انهي کان وڌيڪ جيڪو هن مضمون ۾ شامل ڪيو ويو آهي. بهرحال، مون کي اميد آهي ته اهو هڪ سٺو تعارف طور ڪم ڪري ٿو.

اضافي وسيلا

ڪسٽمائيز بابت ڪيترائي سٺا مضمون ۽ اشاعتون آهن. هتي ڪجھ آهن جيڪي مون کي خاص طور تي مفيد مليا آهن:

نوٽ. ترجمو: توهان پڻ سفارش ڪري سگهو ٿا بلاڪ جي لنڪ جي طور تي شايع ٿيل شاهاڻي يوٽيلٽي جي ويب سائيٽ تي، بعد ۾ وڊيوز جو هڪ مجموعو ڪسٽمائيز بابت تازي رپورٽن سان.

جيڪڏهن توهان وٽ هن مواد کي بهتر ڪرڻ لاءِ سوال يا تجويزون آهن، آئون هميشه راءِ ڏيڻ لاءِ کليل آهيان. توهان مون سان رابطو ڪري سگهو ٿا تي Twitter يا ڪبرنيٽس سست چينل. پنهنجي منشور کي ڪسٽمائيز سان تبديل ڪرڻ ۾ مزو وٺو!

پي ايس مترجم کان

اسان جي بلاگ تي پڻ پڙهو:

جو ذريعو: www.habr.com

تبصرو شامل ڪريو