புரோஹோஸ்டர் > Блог > நிர்வாகம் > GitHub OAuth மற்றும் Dex ஐப் பயன்படுத்தி Kubernetes இல் அங்கீகரிக்கவும்
GitHub OAuth மற்றும் Dex ஐப் பயன்படுத்தி Kubernetes இல் அங்கீகரிக்கவும்
Dex, dex-k8s-authenticator மற்றும் GitHub ஐப் பயன்படுத்தி Kubernetes கிளஸ்டருக்கான அணுகலை உருவாக்குவதற்கான ஒரு பயிற்சியை உங்கள் கவனத்திற்கு முன்வைக்கிறேன்.
ரஷ்ய மொழியான குபெர்னெட்ஸ் அரட்டையில் இருந்து உள்ளூர் நினைவு தந்தி
அறிமுகம்
மேம்பாடு மற்றும் QA குழுவிற்கான மாறும் சூழல்களை உருவாக்க நாங்கள் குபெர்னெட்ஸைப் பயன்படுத்துகிறோம். எனவே டாஷ்போர்டு மற்றும் kubectl ஆகிய இரண்டிற்கும் கிளஸ்டருக்கான அணுகலை அவர்களுக்கு வழங்க விரும்புகிறோம். OpenShift போலல்லாமல், vanilla Kubernetes க்கு சொந்த அங்கீகாரம் இல்லை, எனவே இதற்கு மூன்றாம் தரப்பு கருவிகளைப் பயன்படுத்துகிறோம்.
GitHub - எங்கள் நிறுவனத்தில் GitHub பயன்படுத்துவதால்
நாங்கள் Google OIDC ஐப் பயன்படுத்த முயற்சித்தோம், ஆனால் துரதிர்ஷ்டவசமாக நாங்கள் தோல்வி குழுக்களுடன் அவற்றைத் தொடங்க, GitHub உடனான ஒருங்கிணைப்பு எங்களுக்கு மிகவும் பொருத்தமானது. குழு மேப்பிங் இல்லாமல், குழுக்களின் அடிப்படையில் RBAC கொள்கைகளை உருவாக்க முடியாது.
எனவே, காட்சிப் பிரதிநிதித்துவத்தில் எங்கள் குபெர்னெட்ஸ் அங்கீகார செயல்முறை எவ்வாறு செயல்படுகிறது:
அங்கீகார செயல்முறை
இன்னும் கொஞ்சம் விவரம் மற்றும் புள்ளி மூலம் புள்ளி:
பயனர் dex-k8s-authenticator இல் உள்நுழைகிறார் (login.k8s.example.com)
dex-k8s-authticator கோரிக்கையை Dex க்கு அனுப்புகிறது (dex.k8s.example.com)
டெக்ஸ் GitHub உள்நுழைவு பக்கத்திற்கு வழிமாற்று
GitHub தேவையான அங்கீகார தகவலை உருவாக்கி அதை Dex க்கு திருப்பி அனுப்புகிறது
Dex பெறப்பட்ட தகவலை dex-k8s-authicatorக்கு அனுப்புகிறது
பயனர் GitHub இலிருந்து OIDC டோக்கனைப் பெறுகிறார்
dex-k8s-authenticator kubeconfig இல் டோக்கனைச் சேர்க்கிறது
kubectl டோக்கனை KubeAPIServer க்கு அனுப்புகிறது
அனுப்பப்பட்ட டோக்கனின் அடிப்படையில் KubeAPIServer kubectl க்கு அணுகல்களை வழங்குகிறது
பயனர் kubectl இலிருந்து அணுகலைப் பெறுகிறார்
ஆயத்த நடவடிக்கைகள்
நிச்சயமாக, எங்களிடம் ஏற்கனவே குபெர்னெட்ஸ் கிளஸ்டர் நிறுவப்பட்டுள்ளது (k8s.example.com), மற்றும் ஹெல்ம் முன் நிறுவப்பட்ட உடன் வருகிறது. எங்களிடம் GitHub (super-org) இல் ஒரு நிறுவனமும் உள்ளது.
உங்களிடம் ஹெல்ம் இல்லையென்றால், அதை நிறுவவும் மிகவும் எளிமையானது.
முதலில் நாம் GitHub ஐ அமைக்க வேண்டும்.
நிறுவன அமைப்புகள் பக்கத்திற்குச் செல்லவும், (https://github.com/organizations/super-org/settings/applications) மற்றும் ஒரு புதிய பயன்பாட்டை உருவாக்கவும் (அங்கீகரிக்கப்பட்ட OAuth ஆப்):
GitHub இல் புதிய பயன்பாட்டை உருவாக்குதல்
தேவையான URLகளுடன் புலங்களை நிரப்பவும், எடுத்துக்காட்டாக:
முகப்புப் பக்க URL: https://dex.k8s.example.com
அங்கீகார அழைப்பு URL: https://dex.k8s.example.com/callback
இணைப்புகளில் கவனமாக இருங்கள், சாய்வுகளை இழக்காமல் இருப்பது முக்கியம்.
பூர்த்தி செய்யப்பட்ட படிவத்திற்கு பதில், 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 பயனர்களும் ஆதாரங்களைக் காணலாம் மற்றும் பாட்களில் உள்நுழையலாம், ஆனால் அவற்றை மாற்ற அவர்களுக்கு உரிமை இல்லை.