Vërtetoni në Kubernetes duke përdorur GitHub OAuth dhe Dex
Unë paraqes në vëmendjen tuaj një tutorial për gjenerimin e aksesit në një grupim Kubernetes duke përdorur Dex, dex-k8s-authenticator dhe GitHub.
Meme lokale nga biseda në gjuhën ruse Kubernetes në Telegram
Paraqitje
Ne përdorim Kubernetes për të krijuar mjedise dinamike për ekipin e zhvillimit dhe QA. Pra, ne duam t'u japim atyre akses në grup si për pultin ashtu edhe për kubectl. Ndryshe nga OpenShift, vanilla Kubernetes nuk ka vërtetim origjinal, kështu që ne përdorim mjete të palëve të treta për këtë.
GitHub - thjesht sepse ne përdorim GitHub në kompaninë tonë
Ne u përpoqëm të përdornim Google OIDC, por për fat të keq ne dështuar për t'i nisur me grupe, kështu që integrimi me GitHub na përshtatej mjaft mirë. Pa hartimin e grupeve, nuk do të jetë e mundur të krijohen politika RBAC bazuar në grupe.
Pra, si funksionon procesi ynë i autorizimit Kubernetes në një paraqitje vizuale:
Procesi i autorizimit
Pak më shumë detaje dhe pikë për pikë:
Përdoruesi regjistrohet në dex-k8s-authenticator (login.k8s.example.com)
dex-k8s-authenticator ia përcjell kërkesën Dex (dex.k8s.example.com)
Dex ridrejtohet në faqen e hyrjes në GitHub
GitHub gjeneron informacionin e nevojshëm të autorizimit dhe e kthen atë në Dex
Dex ia kalon informacionin e marrë dex-k8s-authenticator
Përdoruesi merr një shenjë OIDC nga GitHub
dex-k8s-authenticator shton token në kubeconfig
kubectl ia kalon tokenin KubeAPIServer
KubeAPIServer kthen akses në kubectl bazuar në tokenin e kaluar
Përdoruesi merr akses nga kubectl
Aktivitetet përgatitore
Sigurisht, ne tashmë kemi të instaluar një grup Kubernetes (k8s.example.com), dhe gjithashtu vjen me HELM të para-instaluar. Ne gjithashtu kemi një organizatë në GitHub (super-org).
Nëse nuk keni HELM, instaloni atë shumë e thjeshtë.
Fillimisht duhet të konfigurojmë GitHub.
Shkoni te faqja e cilësimeve të organizatës, (https://github.com/organizations/super-org/settings/applications) dhe krijoni një aplikacion të ri (Aplikacion i autorizuar OAuth):
Krijimi i një aplikacioni të ri në GitHub
Plotësoni fushat me URL-të e nevojshme, për shembull:
URL e faqes kryesore: https://dex.k8s.example.com
URL-ja e kthimit të thirrjes së autorizimit: https://dex.k8s.example.com/callback
Kini kujdes me lidhjet, është e rëndësishme që të mos humbni prerjet.
Në përgjigje të një formulari të plotësuar, GitHub do të gjenerojë Client ID и Client secret, mbajini në një vend të sigurt, ato do të jenë të dobishme për ne (për shembull, ne i përdorim Kasafortë për ruajtjen e sekreteve):
Shkoni në faqen e hyrjes (https://login.k8s.example.com) dhe identifikohuni duke përdorur llogarinë tuaj GitHub:
Faqja e hyrjes
Faqja e hyrjes u ridrejtua në GitHub
Ndiqni udhëzimet e krijuara për të fituar akses
Pas kopjimit nga faqja e internetit, ne mund të përdorim kubectl për të menaxhuar burimet tona të grupimit:
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"
Dhe funksionon, të gjithë përdoruesit e GitHub në organizatën tonë mund të shohin burimet dhe të hyjnë në pods, por ata nuk kanë të drejtë t'i ndryshojnë ato.