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