इकाइयाँ
1. DevOps और Cloud AI का परिचय: भूमिकाएँ, सीमाएँ, प्रमाणीकरण, सुरक्षा और रहस्य 2. आर्टिफिशियल इंटेलिजेंस के साथ सीआई/सीडी पाइपलाइन डिजाइन करना: गिटहब एक्शन और गिटलैब सीआई 3. कोड के रूप में बुनियादी ढांचे का प्रबंधन: टेराफॉर्म और आईएसी के साथ आर्टिफिशियल इंटेलिजेंस 4. कंटेनरीकरण: आर्टिफिशियल इंटेलिजेंस के साथ डॉकरफाइल और छवि अनुकूलन 5. कुबेरनेट्स: मेनिफेस्ट, हेल्म और एआई-पावर्ड ऑर्केस्ट्रेशन 6. निगरानी और अवलोकन: मीट्रिक, लॉग, ट्रेस और अलार्म नियम 7. घटना प्रबंधन और पोस्टमॉर्टम: आर्टिफिशियल इंटेलिजेंस के साथ मूल कारण विश्लेषण 8. क्लाउड कॉस्ट ऑप्टिमाइजेशन (फिनऑप्स): आर्टिफिशियल इंटेलिजेंस के साथ कचरे की तलाश 9. स्क्रिप्ट और ऑटोमेशन जेनरेशन: बैश, पायथन और पावरशेल 10. सुरक्षा और रहस्य प्रबंधन: DevSecOps और आर्टिफिशियल इंटेलिजेंस 11. उत्पाद सत्यापन, रिलीज़ रणनीतियाँ और एंड-टू-एंड एआई वर्कफ़्लो
इकाई 5 / 11

कुबेरनेट्स: मेनिफेस्ट, हेल्म और एआई-पावर्ड ऑर्केस्ट्रेशन

लाभ:

  • बुनियादी वस्तुओं (पॉड, परिनियोजन, सेवा, कॉन्फिगमैप, सीक्रेट, नेमस्पेस) और कुबेरनेट्स के घोषणात्मक दर्शन को समझने और कृत्रिम बुद्धिमत्ता के लिए ठोस अभिव्यक्तियाँ तैयार करने की क्षमता
  • उत्पादन के लिए मैनिफ़ेस्ट तैयार करने और संसाधन सीमा, स्वास्थ्य जांच (जांच), निश्चित छवि टैग और संकीर्ण आरबीएसी के साथ सुरक्षित बनाने की क्षमता
  • निष्पादन से पहले सही संदर्भ को सत्यापित करने और ड्राई-रन/डिफ के साथ ड्राई-रन अनुशासन लागू करने की क्षमता

एक कंटेनर चलाना आसान है. लेकिन एक ऐसी प्रणाली स्थापित करना जो दर्जनों सर्वरों में सैकड़ों कंटेनरों को फैलाता है, उनमें से एक के क्रैश होने पर स्वचालित रूप से पुनरारंभ होता है, लोड बढ़ने पर इसे दोहराता है, और इसे शून्य डाउनटाइम के साथ अपडेट करता है? वह ऑर्केस्ट्रेशन है, और उद्योग मानक उपकरण कुबेरनेट्स (संक्षेप में K8s) है - वह प्लेटफ़ॉर्म जो स्वचालित रूप से एक क्लस्टर में कंटेनरों को तैनात, स्केल और प्रबंधित करता है। कुबेरनेट्स शक्तिशाली लेकिन जटिल है: सब कुछ लंबी, इंडेंटेशन-संवेदनशील YAML फ़ाइलों द्वारा परिभाषित किया गया है - जिन्हें मैनिफ़ेस्ट कहा जाता है। यह वह जगह है जहां एआई ताजी हवा की सांस देता है; सही संदर्भ के साथ, यह शीघ्रता से इन अभिव्यक्तियों को उत्पन्न करता है और उनकी रहस्यमय त्रुटियों को डिकोड करता है।

लेकिन कुबेरनेट्स में, एक गलत मेनिफेस्ट का अर्थ है पूरी सेवा को खड़ा करने में विफल होना, गलत तरीके से स्केल करना, या भेद्यता छोड़ना। एआई द्वारा उत्पादित प्रत्येक अभिव्यक्ति को समझना और सत्यापित करना आपकी ज़िम्मेदारी है - विशेष रूप से कुबेक्टल लागू होने से पहले।

कुबेरनेट्स मुख्य वस्तुएं

कुबेरनेट्स का ऑडिट करने के लिए, आपको मुख्य अवधारणाओं को जानना चाहिए:

  • पॉड: सबसे छोटी कार्यशील इकाई; इसमें एक या कई कंटेनर होते हैं। आम तौर पर, पॉड का सीधे उपयोग नहीं किया जाता है, लेकिन इसे प्रबंधित करने वाली मूल वस्तुओं का उपयोग किया जाता है।
  • परिनियोजन: परिभाषित करता है कि किसी एप्लिकेशन की कितनी प्रतियां चलेंगी, यह किस छवि का उपयोग करेगा और इसे कैसे अपडेट किया जाएगा। यदि कोई पॉड क्रैश हो जाता है तो यह स्वचालित रूप से उसे पुनः बना देगा।
  • सेवा: पॉड्स को एक निश्चित नेटवर्क पता और लोड संतुलन प्रदान करता है; भले ही पॉड्स आते-जाते रहें, लेकिन एक्सेस एड्रेस नहीं बदलता।
  • कॉन्फिग मैप और सीक्रेट: कॉन्फ़िगरेशन मान और गुप्त जानकारी को पॉड्स से अलग रखता है। कॉन्फिग मैप स्पष्ट सेटिंग्स के लिए है, सीक्रेट संवेदनशील मूल्यों के लिए है।
  • नेमस्पेस: वह क्षेत्र जो संसाधनों को तार्किक रूप से विभाजित और अलग करता है (जैसे देव, प्रोड)।
  • प्रवेश: नियम सेट जो HTTP ट्रैफ़िक को बाहरी दुनिया से क्लस्टर में सेवाओं तक निर्देशित करता है।

हेल्म कुबेरनेट्स का "पैकेज मैनेजर" है: यह आपको आवर्ती मैनिफ़ेस्ट (चार्ट) को टेम्पलेट करने और उन्हें एक ही कमांड के साथ विभिन्न वातावरणों में विभिन्न मूल्यों के साथ स्थापित करने की अनुमति देता है। एआई रॉ मेनिफेस्ट और हेल्म चार्ट दोनों तैयार करता है।

इतनी सारी वस्तुएँ क्यों हैं? क्योंकि कुबेरनेट्स का मूल दर्शन घोषणात्मक है: आप परिभाषित करते हैं कि "आप सिस्टम को अंततः कैसा दिखाना चाहते हैं" (उदाहरण के लिए "हमेशा इस एप्लिकेशन की 3 प्रतियां चालू रखें"), जबकि कुबेरनेट्स लगातार वर्तमान स्थिति को उस वांछित स्थिति के करीब ले जाता है। यदि एक पॉड मर जाता है, तो यह एक नया पॉड बनाता है; यदि कोई नोड नीचे जाता है, तो यह कार्यभार को दूसरे नोड पर ले जाता है। इसीलिए मैनिफ़ेस्ट "करो" कमांड नहीं हैं, बल्कि "इसे ऐसे ही रहने दें" रेसिपी हैं। एआई द्वारा उत्पादित मैनिफेस्टों को पढ़ते समय इस अंतर को समझना महत्वपूर्ण है: प्रत्येक डोमेन सिस्टम की वांछित स्थिति के हिस्से का वर्णन करता है। एक गलत डोमेन का मतलब है कि कुबेरनेट्स एक गलत लक्ष्य की ओर काम कर रहा है - और वह लक्ष्य चुपचाप, लगातार लागू किया जाता है।

टिप: कुबेरनेट्स में, सबसे महत्वपूर्ण सुरक्षित परीक्षण उपकरण kubectl apply --dry-run=server -f file.yaml है: यह दिखाता है कि सर्वर स्वीकार करेगा या नहीं और वास्तव में मेनिफेस्ट लागू किए बिना क्या करना है। उत्पाद पर मेनिफेस्ट लागू करने से पहले ड्राई-रन और क्यूबेक्टल डिफ चलाना सुनिश्चित करें।

चरण दर चरण: एआई के साथ मैनिफ़ेस्ट बनाना

  1. आवेदन एवं आवश्यकता का वर्णन करें। छवि का नाम, पोर्ट, कितनी प्रतिकृतियां, संसाधन सीमाएं (सीपीयू/मेमोरी)।
  2. परिनियोजन + सेवा का अनुरोध करें। आमतौर पर दोनों की एक साथ आवश्यकता होती है।
  3. कॉन्फ़िगरेशन और रहस्य को अलग करें। कॉन्फिग मैप के लिए सेटिंग्स, सीक्रेट के प्रति संवेदनशील मान।
  4. स्वास्थ्य जांच जोड़ें. लाइवनेसप्रोब (क्या यह लाइव है) और रेडीनेसप्रोब (क्या यह ट्रैफिक के लिए तैयार है) महत्वपूर्ण हैं।
  5. संसाधन सीमा निर्धारित करें. बिना अनुरोध/सीमा के एक पॉड पूरे नोड का उपभोग कर सकता है।
  6. `--dry-run` और `diff` से सत्यापित करें, फिर आवेदन करें। परीक्षण नामस्थान में प्रथम.

सुरक्षा: कुबेरनेट्स-विशिष्ट जोखिम

  1. रहस्य वास्तव में रहस्य नहीं है - यह सिर्फ बेस64 है। कुबेरनेट्स सीक्रेट ऑब्जेक्ट बेस64 मानों को एन्कोड करता है; यह एन्क्रिप्शन नहीं है, इसे आसानी से डिक्रिप्ट किया जा सकता है। सच्ची गोपनीयता के लिए, आदि एन्क्रिप्शन और बाहरी वॉल्ट (वॉल्ट, क्लाउड सीक्रेट मैनेजर) की आवश्यकता होती है। कभी भी गुप्त प्रकटीकरण सीधे Git को न भेजें (इसके लिए सीलबंद रहस्य/बाहरी रहस्य जैसे समाधान मौजूद हैं)।
  2. संसाधन सीमा निर्धारित करें. बिना सीमा वाला पॉड मेमोरी लीक के कारण पूरे नोड को क्रैश कर सकता है।
  3. न्यूनतम अधिकार (आरबीएसी)। भूमिका-आधारित अभिगम नियंत्रण के साथ, प्रत्येक सेवा/उपयोगकर्ता के पास केवल वही अनुमतियाँ होती हैं जिनकी उसे आवश्यकता होती है। एआई कभी-कभी बड़े क्लस्टर-एडमिन देता है; इसे संक्षिप्त करें.
  4. `नवीनतम` छवि टैग का उपयोग न करें। आप नहीं जानते कि कौन सा संस्करण चल रहा है और आप इसे वापस नहीं ला सकते।
सावधानी: kubectl को हटाना या गलत तरीके से लागू करना लाइव परिनियोजन को नष्ट कर सकता है। आदेश चलाने से पहले यह सत्यापित करना सुनिश्चित करें कि आप किस नेमस्पेस में हैं (kubectl config current-context); उत्पादन के संदर्भ में आकस्मिक कार्य एक सामान्य आपदा है।

रॉ मेनिफेस्ट बनाम हेल्म टेबल

कसौटी

कच्चा YAML मेनिफेस्ट

हेल्म चार्ट

स्थापना

कुबेक्टल अप्लाई -एफ

पतवार स्थापित करें

मल्टीमीडिया (विकास/उत्पाद)

कॉपी-पेस्ट, त्रुटि प्रवण

एकल चार्ट, भिन्न मान.yaml

संस्करण/रोलबैक

हाथ से

हेल्म रोलबैक के साथ आसान

सीखने की अवस्था

कम

मध्यम

कब

छोटा, एकल वातावरण

मल्टी-मीडिया, दोहराव वाली सेवा

तीन मिनी मामले

केस 1 - दुर्घटनाग्रस्त सेवा का रहस्य। एक पॉड लगातार रीबूट हो रहा था (CrashLoopBackOff)। टीम ने एआई को लॉग और मेनिफेस्ट दिए; एआई ने दिखाया कि पॉड को कभी भी "तैयार" नहीं माना गया क्योंकि रेडीनेसप्रोब गलत पोर्ट को देख रहा था। उन्होंने पोर्ट ठीक कर दिया, 10 मिनट में सेवा स्थिर हो गई. इस संबंध को मैन्युअल रूप से स्थापित करने में घंटों लग सकते हैं.

केस 2 - सीमा तय न करने से गांठ टूट गई। परिनियोजन में कोई सीमा नहीं थी; एक मेमोरी लीक ने पॉड को फुला दिया और पूरे नोड को क्रैश कर दिया, जिससे पड़ोसी सेवाएं भी बंद हो गईं। घटना के बाद, उन्होंने एआई से कहा कि "सभी परिनियोजनों में उचित सीपीयू/मेमोरी अनुरोध और सीमाएं जोड़ें" और इसे मानक बना दिया। एक लाइन गायब होने पर घंटों का डाउनटाइम खर्च होता है।

केस 3 - बड़े आरबीएसी पर कब्जा कर लिया गया। एक जांच के दौरान, एआई द्वारा उत्पन्न एक सर्विसअकाउंट मेनिफेस्ट को क्लस्टर-एडमिन भूमिका से जुड़ा हुआ पाया गया - जिसका अर्थ है कि सेवा पूरे क्लस्टर का प्रबंधन कर सकती है। टीम ने केवल पॉड्स को उनके नामस्थान में पढ़ने की अनुमति सीमित कर दी। न्यूनतम विशेषाधिकार के सिद्धांत ने सुरक्षा भेद्यता को बंद कर दिया।

चार प्रतिलिपि योग्य टेम्पलेट

1) परिनियोजन + सेवा उत्पादन:

कुबेरनेट्स के लिए एक परिनियोजन और सेवा मेनिफ़ेस्ट लिखें। अनुप्रयोग: [एडी], छवि: [छवि: निश्चित-संस्करण], पोर्ट: [एक्स], प्रतिकृति: [एन]। नियम:- सीपीयू/मेमोरी अनुरोध और सीमाएं जोड़ें।- लाइवनेसप्रोब और रेडीनेसप्रोब को परिभाषित करें।- कॉन्फिग मैप से कॉन्फ़िगरेशन पढ़ें, सीक्रेट ऑब्जेक्ट से सीक्रेट; मैनिफ़ेस्ट में मान एम्बेड न करें, प्लेसहोल्डर का उपयोग करें। - छवि टैग ":नवीनतम" का उपयोग न करें। विवरण सहित दीजिए।

2) प्रकट त्रुटि समाधान:

वर्तमान पॉड [CrashLoopBackOff / Pending / ImagePullBackOff] स्थिति में है। निम्नलिखित मेनिफेस्ट और 'कुबेक्टल डिस्क्रिप्शन' आउटपुट के अनुसार, संभावित मूल कारणों को संभाव्यता के क्रम में सूचीबद्ध करें और प्रत्येक के लिए सत्यापित कमांड जारी करें। प्रकट: [YAML] वर्णन करें: [आउटपुट]

3) सुरक्षा/अखंडता जांच:

इस कुबेरनेट्स मेनिफ़ेस्ट की जाँच करें: क्या संसाधन सीमा गायब है, क्या इसमें कोई संभावना नहीं है, क्या कोई :latest टैग है, क्या कोई अत्यधिक व्यापक RBAC/अनुमति है, क्या मैनिफ़ेस्ट में कोई रहस्य अंतर्निहित है? निष्कर्षों को महत्व के क्रम में और सुधार के साथ लिखें। प्रकट: [YAML]

4) हेल्म चार्ट में रूपांतरण:

निम्नलिखित कच्चे मैनिफ़ेस्ट को पुन: प्रयोज्य हेल्म चार्ट में परिवर्तित करें: कौन से मान values.yaml (छवि, प्रतिकृति, स्रोत, पर्यावरण) पर जाने चाहिए? चार्ट संरचना और नमूना मान दिखाएँ.yaml.घोषणापत्र: [YAML]

कमजोर संकेत/मजबूत संकेत

कमज़ोर: "मेरे एप्लिकेशन के लिए Kubernetes YAML लिखें।"

परिणाम: कोई जांच नहीं, कोई सीमा नहीं: नवीनतम टैग के साथ तैनाती, गुप्त मैदान को एम्बेड करना; उत्पाद में असुरक्षित और नाजुक.

मजबूत: "कुबेरनेट्स परिनियोजन + सेवा लिखें। छवि myapp:1.4.2, 3 प्रतिकृतियां, 8080 पोर्ट। CPU 100m-500m, मेमोरी 128Mi-512Mi अनुरोध/सीमाएं जोड़ें। /healthz के लिए जीवंतता जांच, /तैयार के लिए तत्परता जांच रखें। गुप्त ऑब्जेक्ट से रहस्य पढ़ें, इसे मैनिफ़ेस्ट में एम्बेड न करें। विवरण के साथ दें।"

अंतर: दूसरा त्वरित संस्करण पैमाना, संसाधन सीमा, स्वास्थ्य जांच और गुप्त नियम देता है; आउटपुट उत्पादन के करीब और सुरक्षित है।

सामान्य गलतियाँ

  • संसाधन सीमा निर्धारित नहीं करना. एक एकल पॉड पूरे नोड का उपभोग कर सकता है।
  • स्वास्थ्य जांच (जांच) नहीं जोड़ना। Kubernetes किसी दुर्घटनाग्रस्त/तैयार नहीं पॉड का पता नहीं लगा सकता।
  • `:नवीनतम` टैग। यह अस्पष्ट हो जाता है कि कौन सा संस्करण चल रहा है, इसे वापस नहीं लाया जा सकता।
  • रहस्य को सीधे Git को सौंपना। बेस64 एन्क्रिप्शन नहीं है; हर कोई इसे हल करता है.
  • गलत सन्दर्भ/नेमस्पेस में कमांड चलाना। उत्पाद में क्रैश होने का सबसे आम तरीका।
  • `--dry-run`/`diff` को छोड़ना। कार्यान्वयन से पहले यह नहीं देख रहा कि क्या होगा.

संक्षेप में

कुबेरनेट्स एक शक्तिशाली लेकिन जटिल ऑर्केस्ट्रेटर है जो क्लस्टर में कंटेनरों को स्वचालित रूप से तैनात, स्केल और अनुकूलित करता है; सब कुछ प्रकट YAMLs द्वारा परिभाषित किया गया है, जिसे हेल्म टेम्पलेटाइज़ करता है। एआई तेजी से परिनियोजन/सेवा मैनिफ़ेस्ट और हेल्म चार्ट तैयार करता है, रहस्यमय बग को हल करता है - लेकिन आपको संसाधन सीमा, स्वास्थ्य जांच, अपरिवर्तनीय छवि टैग, संकीर्ण आरबीएसी और गुप्त सुरक्षा नियमों के बारे में स्पष्ट रूप से पूछना होगा। --ड्राई-रन, डिफ और सही संदर्भ जांच ऐसी आदतें हैं जो उत्पाद दुर्घटनाओं को रोकती हैं।

आवेदन कार्य

एआई को "परिनियोजन + सेवा निर्माण" टेम्पलेट के साथ एक नमूना एप्लिकेशन के लिए एक मेनिफेस्ट तैयार करने दें। फिर: (1) क्या उसने "सुरक्षा/स्वच्छता जांच" टेम्पलेट के साथ संसाधन सीमा, जांच, :नवीनतम, और रहस्य की जांच की है; (2) यदि संभव हो तो परीक्षण क्लस्टर/मिनीक्यूब पर kubectl apply --dry-run=server चलाएं और आउटपुट पढ़ें; (3) दो सबसे महत्वपूर्ण सुरक्षा/मजबूती वस्तुओं पर ध्यान दें जिन्हें आप गायब पाते हैं।

चेकलिस्ट

  • [ ] मैंने अपने अनुरोध में छवि संस्करण, प्रतिकृतियों की संख्या, पोर्ट और संसाधन सीमाएँ जोड़ीं।
  • [ ] मैंने मेनिफेस्ट में जीवंतता और तत्परता जांच जोड़ी।
  • [ ] छवि टैग ठीक किया गया; मैंने :latest का उपयोग नहीं किया।
  • [ ] रहस्य प्रकट में अंतर्निहित नहीं है; मैंने गुप्त वस्तु/बाहरी वॉल्ट का उपयोग किया।
  • [ ] मैंने आरबीएसी/अनुमतियों को न्यूनतम अनुमतियों तक सीमित कर दिया है।
  • [ ] आवेदन करने से पहले, मैंने सत्यापित किया कि मैं सही संदर्भ में था और --ड्राई-रन/डिफ आउटपुट।