ProHoster > Блог > басқарма > GitHub OAuth және Dex көмегімен Kubernetes-те аутентификация
GitHub OAuth және Dex көмегімен Kubernetes-те аутентификация
Мен сіздердің назарларыңызға Dex, dex-k8s-authenticator және GitHub көмегімен Kubernetes кластеріне кіруге арналған оқулықты ұсынамын.
Орыс тілді Kubernetes жергілікті мем чатта Telegram
Кіріспе
Біз Кубернеттерді әзірлеу және QA тобы үшін динамикалық орталар жасау үшін пайдаланамыз. Сондықтан біз оларға бақылау тақтасы мен kubectl үшін кластерге кіруге рұқсат бергіміз келеді. OpenShift-тен айырмашылығы, ваниль Кубернетестің түпнұсқалық аутентификациясы жоқ, сондықтан біз бұл үшін үшінші тарап құралдарын пайдаланамыз.
GitHub - жай ғана компаниямызда GitHub-ті пайдаланатындықтан
Біз Google OIDC қолдануға тырыстық, бірақ өкінішке орай сәтсіз болды оларды топтардан бастау үшін, сондықтан GitHub-пен интеграция бізге өте қолайлы болды. Топтық салыстырусыз топтарға негізделген RBAC саясаттарын жасау мүмкін болмайды.
Сонымен, біздің Kubernetes авторизациялау процесі визуалды көріністе қалай жұмыс істейді:
Авторизациялау процесі
Толығырақ және нүкте бойынша:
Пайдаланушы dex-k8s-authenticator жүйесіне кіреді (login.k8s.example.com)
kubectl таңбалауышты KubeAPIServer қызметіне жібереді
KubeAPIServer берілген таңбалауыш негізінде kubectl қатынасуларын қайтарады
Пайдаланушы kubectl арқылы қол жеткізе алады
Дайындық әрекеттері
Әрине, бізде Kubernetes кластері орнатылған (k8s.example.com), сонымен қатар алдын ала орнатылған HELM бағдарламасымен бірге жеткізіледі. Бізде GitHub (super-org) сайтында да ұйым бар.
Егер сізде HELM жоқ болса, оны орнатыңыз өте оңай.
Алдымен GitHub орнатуымыз керек.
Ұйым параметрлері бетіне өтіңіз, (https://github.com/organizations/super-org/settings/applications) және жаңа қолданбаны жасаңыз (Authorized OAuth App):
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 пайдаланушылары ресурстарды көріп, подкасттарға кіре алады, бірақ оларды өзгертуге құқықтары жоқ.