एक्सटेंशन API सर्वर सेटअप
एक्सटेंशन API सर्वर को एग्रीगेशन लेयर के साथ काम करने के लिए सेट करने से कुबेरनेट्स apiserver को अतिरिक्त APIs के साथ विस्तारित किया जा सकता है, जो कोर कुबेरनेट्स APIs का हिस्सा नहीं हैं।
शुरू करने से पहले
आपको कुबरनेट्स क्लस्टर की ज़रूरत पड़ेगी और क्यूब सीटीएल कमांड लाइन साधन को
समनुरूप करना होगा ताकि वो आपके क्लस्टर के साथ संवाद कर सकें। हमारी सलाह है की इस टुटोरिअल को क्लस्टर में रन करने के लिए कम से कम दो नोड का इस्तेमाल करे जो कि कंट्रोल प्लेन
होस्ट के तरह ना एक्ट करे। अगर आपके पास पहले से क्लस्टर नही है, आप
minikube
की मदद से वह बना सकते है या आप नीचे दिए हुए इन दो कुबरनेट्स प्लेग्राउंड का इस्तेमाल कर सकते हैं:
संस्करण की जांच करने के लिए, लिखें kubectl version.
एग्रीगेशन लेयर के साथ काम करने के लिए एक्सटेंशन api-server सेट करें
निम्नलिखित चरण एक्सटेंशन-apiserver को उच्च स्तर पर सेट करने का वर्णन करते हैं। ये चरण YAML कॉन्फ़िग्स का उपयोग करने या APIs का उपयोग करने की परवाह किए बिना लागू होते हैं। दोनों के बीच के किसी भी अंतर को विशेष रूप से पहचानने का प्रयास किया गया है। YAML कॉन्फ़िग्स का उपयोग करके उन्हें कैसे लागू किया जा सकता है, इसका एक ठोस उदाहरण के लिए, आप कुबेरनेट्स repo में sample-apiserver को देख सकते हैं।
वैकल्पिक रूप से, आप एक मौजूदा तृतीय-पक्ष समाधान का उपयोग कर सकते हैं, जैसे apiserver-builder, जो आपके लिए एक स्केलेटन उत्पन्न करेगा और निम्नलिखित सभी चरणों को स्वचालित करेगा।
- सुनिश्चित करें कि APIService API सक्षम है (
--runtime-config की जांच करें)। यह डिफ़ॉल्ट रूप से चालू होना चाहिए, जब तक कि इसे आपके क्लस्टर में जानबूझकर बंद नहीं किया गया है।
- आपको APIService ऑब्जेक्ट्स जोड़ने की अनुमति देने वाला एक RBAC नियम बनाने की आवश्यकता हो सकती है, या अपने क्लस्टर प्रशासक से एक बनाने के लिए कहें। (चूंकि API एक्सटेंशन पूरे क्लस्टर को प्रभावित करते हैं, लाइव क्लस्टर में API एक्सटेंशन का परीक्षण/विकास/डीबग करने की अनुशंसा नहीं की जाती है।)
- अपने एक्सटेंशन api-service को चलाने के लिए वांछित कुबेरनेट्स नेमस्पेस बनाएं।
- एक्सटेंशन api-server द्वारा HTTPS के लिए उपयोग किए जाने वाले सर्वर सर्ट को हस्ताक्षरित करने के लिए उपयोग की जाने वाली CA सर्ट बनाएं/प्राप्त करें।
- api-server के लिए HTTPS में उपयोग करने के लिए सर्वर सर्ट/कुंजी बनाएं। यह सर्ट उपरोक्त CA द्वारा हस्ताक्षरित होना चाहिए। इसमें Kube DNS नाम का CN भी होना चाहिए। यह कुबेरनेट्स सेवा से प्राप्त होता है और
<service name>.<service name namespace>.svc के रूप में होता है
- अपने नेमस्पेस में सर्वर सर्ट/कुंजी के साथ एक कुबेरनेट्स सीक्रेट बनाएं।
- एक्सटेंशन api-server के लिए एक कुबेरनेट्स डिप्लॉयमेंट बनाएं और सुनिश्चित करें कि आप सीक्रेट को वॉल्यूम के रूप में लोड कर रहे हैं। इसमें आपके एक्सटेंशन api-server की कार्यशील इमेज का संदर्भ होना चाहिए। डिप्लॉयमेंट आपके नेमस्पेस में भी होना चाहिए।
- सुनिश्चित करें कि आपका एक्सटेंशन-apiserver उन सर्ट्स को उस वॉल्यूम से लोड करता है और वे HTTPS हैंडशेक में उपयोग किए जाते हैं।
- अपने नेमस्पेस में एक कुबेरनेट्स सेवा खाता बनाएं।
- अपने संसाधनों पर अनुमत ऑपरेशनों के लिए एक कुबेरनेट्स क्लस्टर भूमिका बनाएं।
- अपने नेमस्पेस में सेवा खाते से आपके द्वारा बनाई गई क्लस्टर भूमिका तक एक कुबेरनेट्स क्लस्टर भूमिका बाइंडिंग बनाएं।
- कुबेरनेट्स कोर API सर्वर को auth निर्णयों को प्रत्यायोजित करने के लिए अपने नेमस्पेस में सेवा खाते से
system:auth-delegator क्लस्टर भूमिका तक एक कुबेरनेट्स क्लस्टर भूमिका बाइंडिंग बनाएं।
- अपने नेमस्पेस में सेवा खाते से
extension-apiserver-authentication-reader भूमिका तक एक कुबेरनेट्स भूमिका बाइंडिंग बनाएं। यह आपके एक्सटेंशन api-server को extension-apiserver-authentication कॉन्फ़िगमैप तक पहुंच की अनुमति देता है।
- एक कुबेरनेट्स apiservice बनाएं। उपरोक्त CA सर्ट को base64 एनकोड किया जाना चाहिए, नई लाइनों को हटाया जाना चाहिए और apiservice में spec.caBundle के रूप में उपयोग किया जाना चाहिए। यह नेमस्पेस नहीं होना चाहिए। यदि kube-aggregator API का उपयोग कर रहे हैं, तो केवल PEM एनकोडेड CA बंडल पास करें क्योंकि base 64 एनकोडिंग आपके लिए की जाती है।
- अपने संसाधन को प्राप्त करने के लिए kubectl का उपयोग करें। जब चलाया जाता है, तो kubectl को "No resources found." वापस करना चाहिए। यह संदेश इंगित करता है कि सब कुछ काम कर रहा है लेकिन आपके पास वर्तमान में उस संसाधन प्रकार का कोई ऑब्जेक्ट नहीं है।
आगे क्या है