ಪ್ರೊಹೋಸ್ಟರ್ > Блог > ಆಡಳಿತ > GitHub OAuth ಮತ್ತು Dex ಬಳಸಿಕೊಂಡು Kubernetes ನಲ್ಲಿ ಪ್ರಮಾಣೀಕರಿಸಿ
GitHub OAuth ಮತ್ತು Dex ಬಳಸಿಕೊಂಡು Kubernetes ನಲ್ಲಿ ಪ್ರಮಾಣೀಕರಿಸಿ
Dex, dex-k8s-authenticator ಮತ್ತು GitHub ಅನ್ನು ಬಳಸಿಕೊಂಡು ಕುಬರ್ನೆಟ್ಸ್ ಕ್ಲಸ್ಟರ್ಗೆ ಪ್ರವೇಶವನ್ನು ರಚಿಸಲು ನಾನು ನಿಮ್ಮ ಗಮನಕ್ಕೆ ಟ್ಯುಟೋರಿಯಲ್ ಅನ್ನು ಪ್ರಸ್ತುತಪಡಿಸುತ್ತೇನೆ.
ರಷ್ಯನ್ ಭಾಷೆಯ ಕುಬರ್ನೆಟ್ಸ್ ಚಾಟ್ನಿಂದ ಸ್ಥಳೀಯ ಮೆಮೆ ಟೆಲಿಗ್ರಾಂ
ಪರಿಚಯ
ಅಭಿವೃದ್ಧಿ ಮತ್ತು QA ತಂಡಕ್ಕೆ ಕ್ರಿಯಾತ್ಮಕ ಪರಿಸರವನ್ನು ರಚಿಸಲು ನಾವು ಕುಬರ್ನೆಟ್ಸ್ ಅನ್ನು ಬಳಸುತ್ತೇವೆ. ಆದ್ದರಿಂದ ನಾವು ಅವರಿಗೆ ಡ್ಯಾಶ್ಬೋರ್ಡ್ ಮತ್ತು kubectl ಎರಡಕ್ಕೂ ಕ್ಲಸ್ಟರ್ಗೆ ಪ್ರವೇಶವನ್ನು ನೀಡಲು ಬಯಸುತ್ತೇವೆ. OpenShift ಗಿಂತ ಭಿನ್ನವಾಗಿ, ವೆನಿಲ್ಲಾ ಕುಬರ್ನೆಟ್ಸ್ ಸ್ಥಳೀಯ ದೃಢೀಕರಣವನ್ನು ಹೊಂದಿಲ್ಲ, ಆದ್ದರಿಂದ ನಾವು ಇದಕ್ಕಾಗಿ ಮೂರನೇ ವ್ಯಕ್ತಿಯ ಸಾಧನಗಳನ್ನು ಬಳಸುತ್ತೇವೆ.
GitHub - ನಾವು ನಮ್ಮ ಕಂಪನಿಯಲ್ಲಿ GitHub ಅನ್ನು ಬಳಸುವುದರಿಂದ
ನಾವು Google OIDC ಅನ್ನು ಬಳಸಲು ಪ್ರಯತ್ನಿಸಿದ್ದೇವೆ, ಆದರೆ ದುರದೃಷ್ಟವಶಾತ್ ನಾವು ವಿಫಲವಾಗಿದೆ ಅವುಗಳನ್ನು ಗುಂಪುಗಳೊಂದಿಗೆ ಪ್ರಾರಂಭಿಸಲು, ಆದ್ದರಿಂದ GitHub ನೊಂದಿಗೆ ಏಕೀಕರಣವು ನಮಗೆ ಸಾಕಷ್ಟು ಸೂಕ್ತವಾಗಿದೆ. ಗುಂಪು ಮ್ಯಾಪಿಂಗ್ ಇಲ್ಲದೆ, ಗುಂಪುಗಳ ಆಧಾರದ ಮೇಲೆ RBAC ನೀತಿಗಳನ್ನು ರಚಿಸಲು ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ.
ಆದ್ದರಿಂದ, ನಮ್ಮ ಕುಬರ್ನೆಟ್ಸ್ ದೃಢೀಕರಣ ಪ್ರಕ್ರಿಯೆಯು ದೃಶ್ಯ ಪ್ರಾತಿನಿಧ್ಯದಲ್ಲಿ ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ:
ದೃಢೀಕರಣ ಪ್ರಕ್ರಿಯೆ
ಸ್ವಲ್ಪ ಹೆಚ್ಚು ವಿವರ ಮತ್ತು ಪಾಯಿಂಟ್ ಮೂಲಕ ಪಾಯಿಂಟ್:
ಬಳಕೆದಾರರು dex-k8s-authenticator ಗೆ ಲಾಗ್ ಮಾಡುತ್ತಾರೆ (login.k8s.example.com)
dex-k8s-authticator ವಿನಂತಿಯನ್ನು Dex ಗೆ ರವಾನಿಸುತ್ತದೆ (dex.k8s.example.com)
ಡೆಕ್ಸ್ ಗಿಟ್ಹಬ್ ಲಾಗಿನ್ ಪುಟಕ್ಕೆ ಮರುನಿರ್ದೇಶಿಸುತ್ತದೆ
GitHub ಅಗತ್ಯ ದೃಢೀಕರಣ ಮಾಹಿತಿಯನ್ನು ಉತ್ಪಾದಿಸುತ್ತದೆ ಮತ್ತು ಅದನ್ನು Dex ಗೆ ಹಿಂತಿರುಗಿಸುತ್ತದೆ
Dex ಸ್ವೀಕರಿಸಿದ ಮಾಹಿತಿಯನ್ನು dex-k8s-authenticator ಗೆ ರವಾನಿಸುತ್ತದೆ
ಬಳಕೆದಾರರು GitHub ನಿಂದ OIDC ಟೋಕನ್ ಅನ್ನು ಸ್ವೀಕರಿಸುತ್ತಾರೆ
dex-k8s-authenticator kubeconfig ಗೆ ಟೋಕನ್ ಅನ್ನು ಸೇರಿಸುತ್ತದೆ
kubectl ಟೋಕನ್ ಅನ್ನು KubeAPIServer ಗೆ ರವಾನಿಸುತ್ತದೆ
ಪಾಸ್ ಮಾಡಿದ ಟೋಕನ್ ಆಧಾರದ ಮೇಲೆ 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 ಬಳಕೆದಾರರು ಸಂಪನ್ಮೂಲಗಳನ್ನು ನೋಡಬಹುದು ಮತ್ತು ಪಾಡ್ಗಳಿಗೆ ಲಾಗ್ ಇನ್ ಮಾಡಬಹುದು, ಆದರೆ ಅವುಗಳನ್ನು ಬದಲಾಯಿಸುವ ಹಕ್ಕುಗಳನ್ನು ಹೊಂದಿಲ್ಲ.