ለማበጀት አጭር መግቢያ

ማስታወሻ. ትርጉምጽሑፉ የተጻፈው በሰባት የታተሙ መጽሐፍት (በተለይ በVMware vSphere) ደራሲ/ ተባባሪ ደራሲ በሆነው በአይቲ ውስጥ ብዙ ልምድ ያለው መሐንዲስ ስኮት ሎው ነው። አሁን ለ VMware ንዑስ Heptio (በ 2016 የተገኘ) በCloud ኮምፒውቲንግ እና በኩበርኔትስ ላይ ልዩ ሙያን ይሰራል። ጽሑፉ ራሱ ቴክኖሎጂን በመጠቀም ለኩበርኔትስ የውቅረት አስተዳደር እንደ አጭር እና ለመረዳት ቀላል መግቢያ ሆኖ ያገለግላል። አብጅበቅርቡ የK8s አካል የሆነው።

ለማበጀት አጭር መግቢያ

Kustomize ተጠቃሚዎች “ቀላል እና ከአብነት ነፃ የሆኑ YAML ፋይሎችን ለተለያዩ ዓላማዎች እንዲያበጁ፣ ዋናውን YAML ሳይበላሽ እና ጥቅም ላይ እንዲውል ለማድረግ የሚያስችል መሣሪያ ነው” (መግለጫ በቀጥታ የተበደረው ከ በ GitHub ላይ ማከማቻን ማከማቸት). Kustomize በቀጥታ ሊሠራ ይችላል ወይም እንደ Kubernetes 1.14 ጥቅም ላይ ይውላል kubectl -k ተግባራቱን ለመድረስ (ምንም እንኳን ከ Kubernetes 1.15 ጀምሮ, የተለየው ሁለትዮሽ በ kubectl ውስጥ ከተገነቡት ችሎታዎች የበለጠ አዲስ ነው). (ማስታወሻ. ትርጉምእና በቅርቡ ከተለቀቀው ጋር ኩበሬቶች 1.16 ማበጀት የተደገፈ እንዲሁም በ kubeadm መገልገያ ውስጥ።) በዚህ ልጥፍ ውስጥ, እኔ kustomiz ያለውን መሠረታዊ አንባቢዎች ማስተዋወቅ እፈልጋለሁ.

በቀላል ቅጹ/አፕሊኬሽኑ፣ kustomize በቀላሉ የሀብቶች ስብስብ ነው (የKubernetes ነገሮችን የሚገልጹ የYAML ፋይሎች፡ ማሰማራቶች፣ አገልግሎቶች፣ ወዘተ.) እና በእነዚያ ሀብቶች ላይ መደረግ ያለባቸው ለውጦች መመሪያዎች ዝርዝር። ልክ በ ውስጥ ያለውን መመሪያ ስብስብ እንደሚጠቀም ሁሉ Makefile, እና ዶከር በተሰጠው መመሪያ መሰረት መያዣውን ይገነባል Dockerfile፣ አጠቃቀሞችን ያብጁ kustomization.yaml ተጠቃሚው በንብረቶች ስብስብ ላይ ምን ለውጦች ማድረግ እንደሚፈልግ መመሪያዎችን ለማከማቸት.

አንድ ምሳሌ ፋይል ይኸውና kustomization.yaml:

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

በፋይሉ ውስጥ ሊኖሩ ስለሚችሉት መስኮች ሁሉ ለመናገር አልሞክርም። kustomization.yaml (ይህ በደንብ ተጽፏል እዚህ), ግን ለአንድ የተወሰነ ምሳሌ አጭር ማብራሪያ እሰጣለሁ-

  • መስክ resources ምን (የትኞቹን ሀብቶች) kustomiize እንደሚለውጥ ያሳያል። በዚህ አጋጣሚ በፋይሎች ውስጥ ሀብቶችን ይፈልጋል deployment.yaml и service.yaml በማውጫዎ ውስጥ (አስፈላጊ ከሆነ ሙሉ ወይም አንጻራዊ መንገዶችን መግለጽ ይችላሉ).
  • መስክ namePrefix የተወሰነ ቅድመ ቅጥያ እንዲጨምር kustomize ያስተምራል (በዚህ ሁኔታ - dev-) ለመሰየም name በመስክ ውስጥ የተገለጹ ሁሉም ሀብቶች resources. ስለዚህ, ማሰማራት ካለ name ትርጉም ያለው nginx-deployment፣ ማበጀት ያደርገዋል dev-nginx-deployment.
  • መስክ namespace የተሰጠውን የስም ቦታ ወደ ሁሉም ሀብቶች ለመጨመር kustomize ያስተምራል። በዚህ አጋጣሚ ማሰማራት እና አገልግሎት በስም ቦታ ውስጥ ይወድቃሉ development.
  • በመጨረሻም ሜዳው commonLabels ወደ ሁሉም ሀብቶች የሚጨመሩ የመለያዎች ስብስብ ይዟል። በእኛ ምሳሌ ኩስቶሚዝ ከስሙ ጋር ለሀብቶቹ መለያ ይመድባል environment እና ትርጉም development.

ተጠቃሚው ካደረገ kustomize build . ከፋይሉ ጋር በማውጫው ውስጥ kustomization.yaml እና አስፈላጊ ሀብቶች (ማለትም ፋይሎች deployment.yaml и service.yaml), ከዚያም በውጤቱ ላይ ከተገለጹት ለውጦች ጋር ጽሑፍ ይቀበላል kustomization.yaml.

ለማበጀት አጭር መግቢያ
ማስታወሻ. ትርጉምበ kustomize "ቀላል" አጠቃቀም ላይ ከፕሮጀክቱ ሰነድ የተገኘ ምሳሌ

ለውጦቹ መፈፀም ካስፈለገ ውጤቱ አቅጣጫ መቀየር ይቻላል፡-

kustomize build . > custom-config.yaml

የውጤት ውሂቡ የሚወስን ነው (ተመሳሳይ የግቤት ውሂብ አንድ አይነት የውጤት ውጤት ያስገኛል), ስለዚህ ውጤቱን በፋይል ላይ ማስቀመጥ የለብዎትም. ይልቁንም በቀጥታ ወደ ሌላ ትዕዛዝ ሊተላለፍ ይችላል፡-

kustomize build . | kubectl apply -f -

የ kustomize ባህሪያት እንዲሁ በ በኩል ሊደረስባቸው ይችላሉ kubectl -k (ከኩበርኔትስ ስሪት 1.14 ጀምሮ)። ነገር ግን፣ ራሱን የቻለ የ kustomize ጥቅል ከተቀናጀው የ kubectl ጥቅል በበለጠ ፍጥነት እንደሚዘመን አስታውስ (ቢያንስ ይህ በ Kubernetes 1.15 መለቀቅ ላይ ነው።)

አንባቢዎች “ፋይሎችን በቀጥታ ማርትዕ ከቻሉ ይህ ሁሉ ውስብስብ የሆነው ለምንድነው?” ብለው ይጠይቁ ይሆናል። ታላቅ ጥያቄ። በእኛ ምሳሌ ውስጥ, በእርግጥ ይችላል ፋይሎችን ቀይር deployment.yaml и service.yaml በቀጥታ፣ ግን የሌላ ሰው ፕሮጀክት ሹካ ከሆኑስ? ፋይሎችን መቀየር በመነሻው/ምንጭ ላይ ለውጦች ሲደረጉ ሹካውን እንደገና ለመመስረት (ከማይቻል) ከባድ ያደርገዋል። kustomize ን በመጠቀም እነዚህን ለውጦች በፋይል ውስጥ ማእከላዊ ለማድረግ ያስችልዎታል kustomization.yamlኦሪጅናል ፋይሎችን ሳይበላሹ በመተው አስፈላጊ ከሆነ ዋናውን ፋይሎች እንደገና መሠረት ማድረግ ቀላል ያደርገዋል።

የ kustomize ጥቅሞች ይበልጥ ውስብስብ በሆኑ የአጠቃቀም ጉዳዮች ላይ ግልጽ ይሆናሉ። ከላይ ባለው ምሳሌ kustomization.yaml እና ሀብቶቹ በተመሳሳይ ማውጫ ውስጥ ናቸው. ሆኖም kustomize ድጋፎች የመሠረት ውቅር ባለበት እና ብዙ ተለዋጮች ያሉባቸውን ጉዳዮች ይጠቀማሉ፣ እንዲሁም በመባል ይታወቃሉ ተደራቢዎች።. ለምሳሌ፣ ተጠቃሚው እንደ ምሳሌ የተጠቀምኩትን ለ nginx Deployment and Service መውሰድ ፈልጎ ነበር፣ እና የእነዚያን ፋይሎች ልማት፣ ዝግጅት እና የምርት ስሪቶች (ወይም ተለዋጮች) መፍጠር። ይህንን ለማድረግ, ከላይ የተጠቀሱትን ተደራቢዎች እና, በመሠረቱ, መሰረታዊ መርጃዎችን እራሱ ያስፈልገዋል.

ተደራቢዎችን እና መሰረታዊ ሀብቶችን ሀሳብ ለማሳየት (መሰረታዊ ሀብቶች), ማውጫዎቹ የሚከተለው መዋቅር አላቸው ብለን እናስብ።

- 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 ልማት አማራጭ ያመነጫል. ከሮጡ kustomize build . በካታሎግ ውስጥ overlays/prod - የምርት ምርጫውን ያገኛሉ. እና ይሄ ሁሉ - በዋናው ላይ ምንም ለውጥ ሳያደርጉ (መሰረት) ፋይሎች፣ ሁሉም ገላጭ እና ቆራጥ በሆነ መንገድ። በእነዚህ ፋይሎች ላይ በመመስረት የተፈለገውን ውቅር በማንኛውም ጊዜ ማባዛት እንደሚችሉ በማወቅ የመሠረት ውቅር እና ተደራቢ ማውጫዎችን በቀጥታ ወደ ስሪት ቁጥጥር ማድረግ ይችላሉ።

ለማበጀት አጭር መግቢያ
ማስታወሻ. ትርጉምበ kustomize ውስጥ ተደራቢዎችን ስለመጠቀም ከፕሮጀክቱ ሰነድ የተገኘ ምሳሌ

ማበጀት ይችላል። ብዙ በዚህ ጽሑፍ ውስጥ ከተካተቱት በላይ. ይሁን እንጂ እንደ ጥሩ መግቢያ እንደሚያገለግል ተስፋ አደርጋለሁ.

ተጨማሪ መርጃዎች

ስለ kustomise ብዙ ጥሩ ጽሑፎች እና ህትመቶች አሉ። በተለይ ጠቃሚ ሆኖ ያገኘኋቸው ጥቂቶቹ እነሆ፡-

ማስታወሻ. ትርጉም: እንዲሁም የታተመ አገናኞች ብሎክ እንመክራለን ይችላሉ መረጃዎች በመገልገያው ድህረ ገጽ ላይ፣ ስለ kustomize የቅርብ ጊዜ ሪፖርቶች የያዙ የቪዲዮዎች ስብስብ ይከተላል።

ይህን ጽሑፍ ለማሻሻል ጥያቄዎች ወይም ጥቆማዎች ካሉዎት፣ ሁልጊዜም ለግምገማ ክፍት ነኝ። በዚህ ሊያገኙኝ ይችላሉ። Twitter ወይም Kubernetes Slack ቻናል. መግለጫዎችዎን በ kustomize በማስተካከል ይደሰቱ!

PS ከተርጓሚ

በብሎጋችን ላይ ያንብቡ፡-

ምንጭ: hab.com

አስተያየት ያክሉ