ክፍል 5 / 11

ኩበርኔትስ፡ አንጸባራቂ፣ Helm እና AI-Powered Orchestration

ትርፍ፡

  • የመሠረታዊ ዕቃዎችን (ፖድ ፣ ማሰማራት ፣ አገልግሎት ፣ ኮንፊግማፕ ፣ ምስጢር ፣ የስም ቦታ) እና የኩበርኔትስ ገላጭ ፍልስፍና የመረዳት ችሎታ እና ለአርቴፊሻል ኢንተለጀንስ ጠንካራ መግለጫዎችን መፍጠር።
  • አንጸባራቂዎችን ለማምረት ዝግጁ የማድረግ እና በንብረት ገደቦች ፣ በጤና ምርመራዎች (ምርመራዎች) ፣ ቋሚ የምስል መለያዎች እና ጠባብ RBAC የመጠበቅ ችሎታ
  • ከመፈጸሙ በፊት ትክክለኛውን አውድ የማጣራት ችሎታ እና በደረቅ አሂድ/ልዩነት በደረቅ አሂድ ዲሲፕሊን መተግበር

አንድ መያዣ ለማሄድ ቀላል ነው. ነገር ግን በመቶዎች የሚቆጠሩ ኮንቴይነሮችን በደርዘን በሚቆጠሩ አገልጋዮች ላይ የሚያሰራጭ ስርዓት መዘርጋት፣ ከመካከላቸው አንዱ ሲበላሽ በራስ-ሰር እንደገና ይጀመራል፣ ጭነቱ ሲጨምር ይደግማል እና በዜሮ ማቆያ ጊዜ ያዘምነዋል? ያ ኦርኬስትራ ነው፣ እና የኢንደስትሪ ስታንዳርድ መሳሪያ ኩበርኔትስ ነው (በአጭሩ K8s) - በጥቅል ላይ ያሉ መያዣዎችን በራስ ሰር የሚያሰማራ፣ የሚለካው እና የሚያስተዳድር መድረክ። ኩበርኔትስ ኃይለኛ ነው ነገር ግን ውስብስብ ነው፡ ሁሉም ነገር የሚገለጸው በረጅም፣ ውስጠ-ስሱ YAML ፋይሎች - መግለጫዎች ይባላሉ። ይህ AI ንጹህ አየር እስትንፋስ ይሰጣል; ከትክክለኛው አውድ ጋር, እነዚህን መግለጫዎች በፍጥነት ያዘጋጃል እና ሚስጥራዊ ስህተቶቻቸውን ያስተካክላል.

ነገር ግን በኩበርኔትስ ውስጥ፣ የተሳሳተ አንጸባራቂ ማለት አንድን አገልግሎት ሙሉ በሙሉ አለመቆም፣ ትክክል ባልሆነ መጠን መጨመር ወይም ተጋላጭነትን መተው ማለት ነው። እያንዳንዱን መግለጫ የኤአይአይ ምርቶችን ማረጋገጥ እና ማረጋገጥ የእርስዎ ኃላፊነት ነው - በተለይ kubectl ከመተግበሩ በፊት።

የኩበርኔትስ ዋና እቃዎች

Kubernetes ኦዲት ለማድረግ ዋና ዋና ፅንሰ ሀሳቦችን ማወቅ አለቦት፡-

  • ፖድ: ትንሹ የሥራ ክፍል; አንድ ወይም ብዙ መያዣዎችን ይዟል. በአጠቃላይ፣ ፖዱ በቀጥታ ጥቅም ላይ አይውልም፣ ነገር ግን የሚያስተዳድሩት ወላጅ ነገሮች ጥቅም ላይ ይውላሉ።
  • ማሰማራት፡ የአንድ መተግበሪያ ምን ያህል ቅጂዎች እንደሚሰራ፣ የትኛውን ምስል እንደሚጠቀም እና እንዴት እንደሚዘመን ይገልጻል። አንድ ፖድ ከተበላሸ በራስ-ሰር እንደገና ይፈጥራል።
  • አገልግሎት: ቋሚ የአውታረ መረብ አድራሻ እና የጭነት ሚዛን ወደ ፖድዎች ያቀርባል; ምንም እንኳን ፖድዎች መጥተው ቢሄዱም የመዳረሻ አድራሻ አይለወጥም.
  • ConfigMap እና ሚስጥር፡ የውቅረት እሴቶችን እና ሚስጥራዊ መረጃን ከፖድ ለይ ያቆያል። ConfigMap ለግልጽ ቅንጅቶች ነው፣ ሚስጥሩ ለስሜታዊ እሴቶች ነው።
  • የስም ቦታ፡ ሃብቶችን በሎጂክ የሚከፋፍል እና የሚለይ አካባቢ (ለምሳሌ ዴቭ፣ ፕሮድ)።
  • መግባት፡ የኤችቲቲፒ ትራፊክን ከውጭው ዓለም ወደ ክላስተር ውስጥ ወደሚገኙ አገልግሎቶች የሚመራው ደንብ ስብስብ።

ሄልም የኩበርኔትስ “የጥቅል አስተዳዳሪ” ነው፡ ተደጋጋሚ መግለጫዎችን (ሰንጠረዦችን) አብነት ለማድረግ እና በተለያዩ አካባቢዎች በአንድ ትእዛዝ በተለያዩ እሴቶች እንዲጭኗቸው ይፈቅድልዎታል። AI ሁለቱንም ጥሬ አንጸባራቂ እና የ Helm ገበታ ያዘጋጃል።

ለምንድነው ብዙ እቃዎች ያሉት? የኩበርኔትስ ዋና ፍልስፍና ገላጭ ስለሆነ፡ “ስርአቱ በመጨረሻ እንዴት እንዲታይ እንደሚፈልጉ” ይገልፃሉ (ለምሳሌ “የዚህ መተግበሪያ ሁል ጊዜ 3 ቅጂዎች አሉዎት”)፣ Kubernetes ደግሞ የአሁኑን ሁኔታ በቀጣይነት ወደሚፈለገው ሁኔታ ያንቀሳቅሰዋል። አንድ ፖድ ከሞተ, አዲስ ይፈጥራል; አንድ መስቀለኛ መንገድ ወደ ታች ከሄደ, የሥራውን ጫና ወደ ሌላ መስቀለኛ መንገድ ያንቀሳቅሰዋል. ለዚህም ነው መግለጫዎች "አድርገው" ትዕዛዞች አይደሉም, ግን "እንዲህ ይሁን" የምግብ አዘገጃጀት መመሪያዎች ናቸው. ይህንን ልዩነት መረዳት AI የሚያመነጨውን መግለጫ ሲያነብ ወሳኝ ነው፡ እያንዳንዱ ጎራ የሚፈለገውን የስርዓቱን ሁኔታ ይገልፃል። የተሳሳተ ጎራ ማለት ኩበርኔትስ ወደ ተሳሳተ ግብ እየሰራ ነው - እና ግቡ በፀጥታ፣ ያለማቋረጥ የሚተገበር ነው።

ጠቃሚ ምክር፡ በ Kubernetes ውስጥ በጣም አስፈላጊው ደህንነቱ የተጠበቀ የፍተሻ መሳሪያ kubectl apply --dry-run=server -f file.yaml፡ አገልጋዩ መቀበሉን እና ማኒፌክቱን በትክክል ሳይተገበር ምን ማድረግ እንዳለበት ያሳያል። አንጸባራቂን ለምርት ከመተግበሩ በፊት በደረቅ አሂድ እና kubectl diff ማሄድዎን ያረጋግጡ።

ደረጃ በደረጃ፡ ከኤአይአይ ጋር መገለጫዎችን መፍጠር

  1. ማመልከቻውን እና ፍላጎቱን ይግለጹ. የምስል ስም፣ ወደብ፣ ስንት ቅጂዎች፣ የንብረት ገደቦች (ሲፒዩ/ማህደረ ትውስታ)።
  2. ማሰማራት + አገልግሎት ጠይቅ። ብዙውን ጊዜ ሁለቱም አንድ ላይ ይፈለጋሉ.
  3. የተለየ ውቅረት እና ምስጢር። የ ConfigMap ቅንብሮች፣ ሚስጥራዊ የሆኑ እሴቶች።
  4. የጤና ምርመራዎችን ያክሉ። livenessProbe (ቀጥታ ነው) እና ዝግጁነት ፕሮብ (ለትራፊክ ዝግጁ ነው) ወሳኝ ናቸው።
  5. የግብአት ገደብ አዘጋጅ። ያለጥያቄ/ገደብ ፖድ ሙሉውን መስቀለኛ መንገድ ሊበላው ይችላል።
  6. በ `--ደረቅ አሂድ` እና `diff` ያረጋግጡ፣ ከዚያ ይተግብሩ። በመጀመሪያ በሙከራ ስም ቦታ.

ደህንነት: Kubernetes-የተወሰኑ አደጋዎች

  1. ሚስጥር በእውነቱ ሚስጥር አይደለም - መሰረት ብቻ ነው64. የኩበርኔትስ ሚስጥራዊ ነገር ቤዝ64 እሴቶችን ያስቀምጣል። ይህ ምስጠራ አይደለም፣ በቀላሉ የሚፈታ ነው። ለእውነተኛ ግላዊነት፣ etcd ምስጠራ እና የውጭ መያዣ (Vault፣ cloud secret manager) ያስፈልጋል። ሚስጥራዊ መግለጫዎችን በቀጥታ ለጊት አታድርጉ (ለዚህ እንደ የታሸጉ ሚስጥሮች/ውጫዊ ሚስጥሮች ያሉ መፍትሄዎች አሉ።)
  2. የግብአት ገደብ አዘጋጅ። ገደብ የለሽ ፖድ ሙሉውን መስቀለኛ መንገድ በማህደረ ትውስታ መፍሰስ ሊያበላሽ ይችላል።
  3. ዝቅተኛ ባለስልጣን (RBAC)። በሚና ላይ የተመሰረተ የመዳረሻ ቁጥጥር እያንዳንዱ አገልግሎት/ተጠቃሚ የሚያስፈልጋቸው ፈቃዶች ብቻ ነው ያላቸው። AI አንዳንድ ጊዜ ትልቅ ክላስተር-አስተዳዳሪ ይሰጣል; ይህንን ጠባብ።
  4. የ'የቅርብ ጊዜ' ምስል መለያን አይጠቀሙ። የትኛው ስሪት እንደሚሰራ አታውቁም እና መልሰው ማንከባለል አይችሉም።
ማስጠንቀቂያ፡ kubectl ሰርዝ ወይም ትክክል ያልሆነ ማመልከቻ የቀጥታ ስርጭትን ሊያጠፋ ይችላል። ትዕዛዞቹን ከማሄድዎ በፊት በየትኛው የስም ቦታ (kubectl config current-context) ውስጥ እንዳሉ ማረጋገጥዎን ያረጋግጡ; ድንገተኛ ሥራ በምርት አውድ ውስጥ የተለመደ አደጋ ነው.

ጥሬ አንጸባራቂ ከሄልም ጠረጴዛ ጋር

መስፈርት

ጥሬ YAML አንጸባራቂ

Helm ገበታ

መጫን

kubectl ተግባራዊ -f

helm ጫን

መልቲሚዲያ (dev/prod)

ቅዳ-ለጥፍ፣ ስህተት የተጋለጠ

ነጠላ ገበታ፣ የተለያዩ እሴቶች.yaml

ስሪት/መመለስ

በእጅ

በ helm rollback ቀላል

የመማሪያ ጥምዝ

ዝቅተኛ

መካከለኛ

መቼ ነው።

አነስተኛ ፣ ነጠላ አካባቢ

መልቲ-ሚዲያ፣ ተደጋጋሚ አገልግሎት

ሶስት ጥቃቅን ጉዳዮች

ጉዳይ 1 - የተበላሸ አገልግሎት ሚስጥር. አንድ ፖድ ያለማቋረጥ እንደገና በመጀመር ላይ ነበር (CrashLoopBackOff)። ቡድኑ ምዝግብ ማስታወሻዎችን እና አንጸባራቂውን ለኤአይኤ ሰጥቷል; AI ፑድ በጭራሽ “ዝግጁ” ተብሎ እንደማይወሰድ አሳይቷል ምክንያቱም ዝግጁነት ፕሮብ የተሳሳተ ወደብ ይመለከት ነበር። ወደቡን አስተካክለዋል, አገልግሎቱ በ 10 ደቂቃዎች ውስጥ ተረጋጋ. ይህንን ግንኙነት በእጅ መመስረት ሰዓታትን ሊወስድ ይችላል።

ጉዳይ 2 - ገደብ አለማበጀት ቋጠሮውን ሰበረ። በማሰማራት ውስጥ ምንም ገደቦች አልነበሩም; የማስታወሻ ፍንጣቂው ፖድውን ናዶ ሙሉውን መስቀለኛ መንገድ ሰባበረ፣ ይህም የጎረቤት አገልግሎቶችንም አወረደ። ከክስተቱ በኋላ AI "ተመጣጣኝ የሲፒዩ/የማስታወሻ ጥያቄዎችን እና ገደቦችን በሁሉም ማሰማራቶች ላይ ጨምሩ" በማለት አደረጉ እና መደበኛ እንዲሆን አድርገውታል። አንድ የጠፋ መስመር የእረፍት ጊዜን ያስከፍላል።

ጉዳይ 3 - ትልቅ RBAC ተያዘ። በምርመራ ወቅት፣ በ AI የመነጨ የአገልግሎት አካውንት መግለጫ ከክላስተር-አስተዳዳሪ ሚና ጋር የተያያዘ ሆኖ ተገኝቷል - ይህ ማለት አገልግሎቱ ሙሉውን ክላስተር ማስተዳደር ይችላል። ቡድኑ ፖድስን በስማቸው ቦታ ለማንበብ ብቻ ፈቃዱን አጥቧል። የአነስተኛ መብት መርህ የደህንነት ተጋላጭነትን ዘግቷል።

አራት ሊገለበጡ የሚችሉ አብነቶች

1) ማሰማራት + አገልግሎት ማምረት;

ለ Kubernetes የማሰማራት እና የአገልግሎት መግለጫ ይጻፉ። መተግበሪያ፡ [AD]፣ ምስል፡ [ምስል፡ ቋሚ ስሪት]፣ ወደብ፡ [X]፣ ቅጂ፡ [N]። ደንቦች፡- የሲፒዩ/የማስታወሻ ጥያቄዎችን እና ገደቦችን አክል፡- livenessProbe እና ዝግጁነት ፕሮቤን ይግለጹ።- ከConfigMap ውቅረትን ያንብቡ፣ ከሚስጥር ነገር ሚስጥር; በመግለጫው ውስጥ እሴቶችን አታስቀምጡ፣ ቦታ ያዥዎችን ይጠቀሙ። - የምስል መለያ አይጠቀሙ ": የቅርብ ጊዜ". ከመግለጫ ጋር ይስጡ።

2) ስህተቶችን መፍታት;

የአሁኑ ፖድ በ[CrashLoopBackOff/Pending/ImagePullBackOff] ሁኔታ ውስጥ ነው። በሚከተለው አንጸባራቂ እና 'kubectl description' ውፅዓት መሰረት ሊሆኑ የሚችሉ ዋና ዋና ምክንያቶችን በቅደም ተከተል ይዘርዝሩ እና ለእያንዳንዱ የማረጋገጫ ትዕዛዝ ይስጡ። ገላጭ፡ [YAML] ይግለጹ፡ [OUTPUT]

3) የደኅንነት/የታማኝነት ማረጋገጫ፡-

ይህንን የኩበርኔትስ አንጸባራቂ ያረጋግጡ፡ የግብአት ገደቡ ጠፍቷል፣ ፕሮብ ይጎድለዋል፣ : የቅርብ መለያ አለ፣ ከመጠን በላይ ሰፊ RBAC/ፍቃድ አለ፣ ሚስጥሩ በማንፀባረቁ ውስጥ ተካትቷል? ግኝቶቹን በአስፈላጊ ቅደም ተከተል እና በማረም ይፃፉ። መግለጫ፡ [YAML]

4) ወደ Helm ገበታ መለወጥ፡-

የሚከተሉትን ጥሬ መግለጫዎች እንደገና ጥቅም ላይ ሊውል ወደሚችል የ Helm ገበታ ይለውጡ፡ የትኞቹ እሴቶች ወደ values.yaml (ምስል፣ ቅጂ፣ ምንጭ፣ አካባቢ) መውጣት አለባቸው? የገበታ መዋቅር እና የናሙና እሴቶችን አሳይ.yaml.ማስረጃዎች፡ [YAML]

ደካማ ጥያቄ / ጠንካራ ጥያቄ

ደካማ፡ "ለእኔ መተግበሪያ Kubernetes YAML ፃፍ።"

ውጤት፡- ምንም-መመርመሪያ፣ ምንም ገደብ የለሽ ማሰማራት ከ: የቅርብ መለያ ጋር፣ ሚስጥራዊውን ሜዳ መክተት; በምርት ውስጥ ደህንነቱ ያልተጠበቀ እና ደካማ።

ጠንካራ፡ "Kubernetes Deployment + Service ፃፍ። ምስል myapp:1.4.2, 3 replicas, 8080 ports. CPU 100m-500m, memory 128Mi-512Mi add questions/ገደቦችን ጨምር። የቀጥታነት ምርመራ ለ/healthz፣ ዝግጁነት ፍተሻ ለ/ዝግጁ አድርግ። ሚስጥሩን ከዕቃው ውስጥ አንብብ።

ልዩነት፡ የሁለተኛው ፈጣን እትም ልኬትን፣ የሀብት ገደቦችን፣ የጤና ምርመራዎችን እና ሚስጥራዊ ህግን ይሰጣል። ውጤቱ ወደ ምርት ቅርብ እና ደህንነቱ የተጠበቀ ነው።

የተለመዱ ስህተቶች

  • የሀብት ገደቦችን አለማዘጋጀት። አንድ ነጠላ ፖድ ሙሉውን መስቀለኛ መንገድ ሊበላው ይችላል.
  • የጤና ምርመራ (ምርመራ) አለመጨመር. Kubernetes የተበላሸ/ያልተዘጋጀ ፖድ ማግኘት አይችልም።
  • `: የቅርብ ጊዜ መለያ የትኛው ስሪት እየሰራ እንደሆነ ግልጽ አይሆንም፣ ወደ ኋላ መመለስ አይቻልም።
  • ምስጢሩን በቀጥታ ለጊት መስጠት። Base64 ምስጠራ አይደለም; ሁሉም ይፈታዋል።
  • ትዕዛዞችን በተሳሳተ አውድ/ስም ቦታ ማስኬድ። በፕሮድ ውስጥ በጣም የተለመደው የብልሽት መንገድ።
  • `--ደረቅ-አሂድ`/`diff`ን መዝለል። ከመተግበሩ በፊት የሚሆነውን አለማየት።

በማጠቃለያው

ኩበርኔትስ ኃይለኛ ነገር ግን ውስብስብ ኦርኬስትራ ሲሆን መያዣውን በክላስተር ላይ በራስ-ሰር የሚያሰማራ፣ የሚለካ እና የሚያመቻች ነው። ሁሉም ነገር በአንጸባራቂ YAMLs ይገለጻል፣ እሱም Helm አብነት ያወጣው። AI በፍጥነት የማሰማራት/አገልግሎት መግለጫዎችን እና የ Helm ቻርቶችን ያዘጋጃል፣ ሚስጥራዊ ስህተቶችን ይፈታል - ነገር ግን የሃብት ገደብን፣ የጤና ምርመራን፣ የማይለዋወጥ ምስል መለያን፣ ጠባብ RBAC እና ሚስጥራዊ የደህንነት ደንቦችን በግልፅ መጠየቅ አለቦት። --ደረቅ አሂድ፣ ልዩነት እና ትክክለኛ አውድ መፈተሽ የፕሮድ ብልሽቶችን የሚከላከሉ ልማዶች ናቸው።

የመተግበሪያ ተግባር

AI ለናሙና ማመልከቻ በ"Deployment + Service Generation" አብነት አንጸባራቂ እንዲያመነጭ አድርግ። ከዚያም፡ (1) የሀብት ወሰንን፣ ምርመራን፣ የቅርብ ጊዜን፣ እና ምስጢሩን በ"ሴኩሪቲ/ጤና ቼክ" አብነት እንዲፈትሽ ያድርጉ። (2) kubectl apply --dry-run=አገልጋይ ከተቻለ በሙከራ ክላስተር/ሚኒኩቤ ላይ ያሂዱ እና ውጤቱን ያንብቡ። (3) ጠፍተው ያገኟቸውን ሁለቱን በጣም ወሳኝ የደህንነት/ጥንካሬ እቃዎች ልብ ይበሉ።

የማረጋገጫ ዝርዝር

  • [ ] በጥያቄዬ ላይ የምስሉን ሥሪት፣ የተባዙ ብዛት፣ የወደብ እና የንብረት ገደቦችን ጨምሬያለሁ።
  • [ ] ሕያውነት እና ዝግጁነት ምርመራን ወደ አንጸባራቂው ጨምሬያለሁ።
  • [] የምስል መለያ ተስተካክሏል; እኔ አልተጠቀምኩም: የቅርብ ጊዜ.
  • [ ] ሚስጥር በአንጸባራቂ ውስጥ አልተካተተም; ሚስጥራዊ ነገር/ውጫዊ ካዝና ተጠቀምኩ።
  • [] RBAC/ፈቃዶችን በትንሹ ፍቃዶች ላይ ቀነስኩ።
  • [ ] ከማመልከቴ በፊት፣ እኔ በትክክለኛው አውድ ውስጥ መሆኔን እና --ደረቅ-አሂድ/ልዩነትን አረጋግጫለሁ።