प्रोहोस्टर > ब्लॉग > प्रशासन > GitHub OAuth और Dex का उपयोग करके Kubernetes में प्रमाणित करें
GitHub OAuth और Dex का उपयोग करके Kubernetes में प्रमाणित करें
मैं आपके ध्यान में Dex, dex-k8s-प्रमाणक और GitHub का उपयोग करके Kubernetes क्लस्टर तक पहुंच उत्पन्न करने के लिए एक ट्यूटोरियल प्रस्तुत करता हूं।
रूसी भाषा के कुबेरनेट्स से स्थानीय मेम चैट करते हैं Telegram
परिचय
हम विकास और क्यूए टीम के लिए गतिशील वातावरण बनाने के लिए कुबेरनेट्स का उपयोग करते हैं। इसलिए हम उन्हें डैशबोर्ड और क्यूबेक्टल दोनों के लिए क्लस्टर तक पहुंच देना चाहते हैं। ओपनशिफ्ट के विपरीत, वेनिला कुबेरनेट्स में मूल प्रमाणीकरण नहीं है, इसलिए हम इसके लिए तीसरे पक्ष के टूल का उपयोग करते हैं।
इस कॉन्फ़िगरेशन में हम उपयोग करते हैं:
dex-k8s-प्रमाणक — kubectl config जनरेट करने के लिए वेब एप्लिकेशन
GitHub - केवल इसलिए कि हम अपनी कंपनी में GitHub का उपयोग करते हैं
हमने Google OIDC का उपयोग करने का प्रयास किया, लेकिन दुर्भाग्य से हम विफल रहा उन्हें समूहों के साथ शुरू करने के लिए, GitHub के साथ एकीकरण हमारे लिए काफी उपयुक्त रहा। समूह मानचित्रण के बिना समूहों के आधार पर आरबीएसी नीतियां बनाना संभव नहीं होगा।
तो, हमारी कुबेरनेट्स प्राधिकरण प्रक्रिया दृश्य प्रतिनिधित्व में कैसे काम करती है:
प्राधिकरण प्रक्रिया
थोड़ा और विवरण और बिंदु दर बिंदु:
उपयोगकर्ता dex-k8s-प्रमाणक में लॉग इन करता है (login.k8s.example.com)
dex-k8s-प्रमाणक अनुरोध को Dex को अग्रेषित करता है (dex.k8s.example.com)
डेक्स GitHub लॉगिन पेज पर रीडायरेक्ट करता है
GitHub आवश्यक प्राधिकरण जानकारी उत्पन्न करता है और इसे Dex को लौटाता है
डेक्स प्राप्त जानकारी को dex-k8s-प्रमाणक को भेजता है
उपयोगकर्ता को GitHub से OIDC टोकन प्राप्त होता है
dex-k8s-प्रमाणक kubeconfig में टोकन जोड़ता है
Kubectl KubeAPIServer को टोकन भेजता है
KubeAPIServer पारित टोकन के आधार पर Kubectl तक पहुंच लौटाता है
उपयोगकर्ता को kubectl से एक्सेस मिलता है
प्रारंभिक क्रियाएं
बेशक, हमारे पास पहले से ही एक कुबेरनेट्स क्लस्टर स्थापित है (k8s.example.com), और HELM भी पहले से इंस्टॉल के साथ आता है। GitHub (सुपर-ऑर्ग) पर हमारा एक संगठन भी है।
यदि आपके पास HELM नहीं है, तो इसे इंस्टॉल करें बहुत ही सरल.
सबसे पहले हमें GitHub स्थापित करना होगा।
संगठन सेटिंग पृष्ठ पर जाएँ, (https://github.com/organizations/super-org/settings/applications) और एक नया एप्लिकेशन बनाएं (अधिकृत OAuth ऐप):
लिंक से सावधान रहें, यह महत्वपूर्ण है कि स्लैश न खोएं।
भरे हुए फॉर्म के जवाब में, GitHub जेनरेट करेगा Client ID и Client secret, उन्हें सुरक्षित स्थान पर रखें, वे हमारे लिए उपयोगी होंगे (उदाहरण के लिए, हम उपयोग करते हैं मेहराब रहस्य संग्रहीत करने के लिए):
लॉगिन पेज पर जाएं (https://login.k8s.example.com) और अपने GitHub खाते का उपयोग करके लॉग इन करें:
लोग इन वाला पन्ना
लॉगिन पेज GitHub पर पुनः निर्देशित किया गया
पहुंच प्राप्त करने के लिए उत्पन्न निर्देशों का पालन करें
वेब पेज से कॉपी-पेस्ट करने के बाद, हम अपने क्लस्टर संसाधनों को प्रबंधित करने के लिए kubectl का उपयोग कर सकते हैं:
kubectl get po
NAME READY STATUS RESTARTS AGE
mypod 1/1 Running 0 3d
kubectl delete po mypod
Error from server (Forbidden): pods "mypod" is forbidden: User "[email protected]" cannot delete pods in the namespace "default"
और यह काम करता है, हमारे संगठन के सभी GitHub उपयोगकर्ता संसाधन देख सकते हैं और पॉड्स में लॉग इन कर सकते हैं, लेकिन उनके पास उन्हें बदलने का अधिकार नहीं है।