ప్రోహోస్టర్ > బ్లాగ్ > పరిపాలన > GitHub OAuth మరియు Dexని ఉపయోగించి Kubernetesలో ప్రమాణీకరించండి
GitHub OAuth మరియు Dexని ఉపయోగించి Kubernetesలో ప్రమాణీకరించండి
Dex, dex-k8s-authenticator మరియు GitHubని ఉపయోగించి Kubernetes క్లస్టర్కు యాక్సెస్ని రూపొందించడానికి నేను మీ దృష్టికి ట్యుటోరియల్ని అందిస్తున్నాను.
రష్యన్ భాషా కుబెర్నెట్స్ చాట్ నుండి స్థానిక పోటిలో Telegram
పరిచయం
అభివృద్ధి మరియు QA బృందం కోసం డైనమిక్ వాతావరణాలను సృష్టించడానికి మేము Kubernetesని ఉపయోగిస్తాము. కాబట్టి మేము వారికి డ్యాష్బోర్డ్ మరియు kubectl రెండింటికీ క్లస్టర్కి యాక్సెస్ ఇవ్వాలనుకుంటున్నాము. OpenShift వలె కాకుండా, vanilla Kubernetes స్థానిక ప్రమాణీకరణను కలిగి లేదు, కాబట్టి మేము దీని కోసం మూడవ పక్ష సాధనాలను ఉపయోగిస్తాము.
GitHub - మేము మా కంపెనీలో GitHubని ఉపయోగిస్తున్నందున
మేము Google OIDCని ఉపయోగించడానికి ప్రయత్నించాము, కానీ దురదృష్టవశాత్తు మేము విఫలమైంది వాటిని సమూహాలతో ప్రారంభించడానికి, GitHubతో అనుసంధానం మాకు బాగా సరిపోతుంది. గ్రూప్ మ్యాపింగ్ లేకుండా, సమూహాల ఆధారంగా RBAC విధానాలను రూపొందించడం సాధ్యం కాదు.
కాబట్టి, దృశ్య ప్రాతినిధ్యంలో మా కుబెర్నెట్స్ అధికార ప్రక్రియ ఎలా పని చేస్తుంది:
అధికార ప్రక్రియ
కొంచెం వివరంగా మరియు పాయింట్ వారీగా:
వినియోగదారు dex-k8s-authenticator (login.k8s.example.com)
dex-k8s-authenticator అభ్యర్థనను Dexకి ఫార్వార్డ్ చేస్తుంది (dex.k8s.example.com)
Dex GitHub లాగిన్ పేజీకి దారి మళ్లిస్తుంది
GitHub అవసరమైన అధికార సమాచారాన్ని ఉత్పత్తి చేస్తుంది మరియు దానిని Dexకి తిరిగి ఇస్తుంది
Dex అందుకున్న సమాచారాన్ని dex-k8s-authenticatorకి పంపుతుంది
వినియోగదారు GitHub నుండి OIDC టోకెన్ను అందుకుంటారు
KubeAPIServer పాస్ చేసిన టోకెన్ ఆధారంగా kubectlకి యాక్సెస్లను అందిస్తుంది
వినియోగదారు kubectl నుండి యాక్సెస్ పొందుతారు
సన్నాహక చర్యలు
వాస్తవానికి, మేము ఇప్పటికే కుబెర్నెట్స్ క్లస్టర్ని ఇన్స్టాల్ చేసాము (k8s.example.com), మరియు ముందే ఇన్స్టాల్ చేయబడిన HELMతో కూడా వస్తుంది. మాకు GitHub (super-org)లో ఒక సంస్థ కూడా ఉంది.
మీకు HELM లేకపోతే, దాన్ని ఇన్స్టాల్ చేయండి చాలా సులభం.
ముందుగా మనం 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 వినియోగదారులు వనరులను చూడగలరు మరియు పాడ్లలోకి లాగిన్ చేయగలరు, కానీ వాటిని మార్చడానికి వారికి హక్కులు లేవు.