ProHoster > Blog > Uprava > Preverjanje pristnosti v Kubernetesu z uporabo GitHub OAuth in Dex
Preverjanje pristnosti v Kubernetesu z uporabo GitHub OAuth in Dex
Predstavljam vam vadnico za generiranje dostopa do gruče Kubernetes z uporabo Dex, dex-k8s-authenticator in GitHub.
Lokalni meme iz klepeta Kubernetes v ruskem jeziku v Telegram
Predstavitev
Kubernetes uporabljamo za ustvarjanje dinamičnih okolij za razvojno in QA ekipo. Zato jim želimo omogočiti dostop do gruče za nadzorno ploščo in kubectl. Za razliko od OpenShift, vanilija Kubernetes nima izvorne avtentikacije, zato za to uporabljamo orodja tretjih oseb.
GitHub – preprosto zato, ker uporabljamo GitHub v našem podjetju
Poskušali smo uporabiti Google OIDC, a žal smo neuspešno da jih začnemo s skupinami, zato nam je integracija z GitHubom zelo ustrezala. Brez preslikave skupin ne bo mogoče ustvariti pravilnikov RBAC na podlagi skupin.
Torej, kako deluje naš avtorizacijski postopek Kubernetes v vizualni predstavitvi:
Postopek avtorizacije
Malo več podrobnosti in po točkah:
Uporabnik se prijavi v dex-k8s-authenticator (login.k8s.example.com)
GitHub ustvari potrebne podatke za avtorizacijo in jih vrne Dexu
Dex posreduje prejete informacije dex-k8s-authenticatorju
Uporabnik prejme žeton OIDC od GitHub
dex-k8s-authenticator doda žeton v kubeconfig
kubectl posreduje žeton KubeAPIServerju
KubeAPIServer vrne dostope do kubectl na podlagi posredovanega žetona
Uporabnik dobi dostop iz kubectl
Pripravljalne dejavnosti
Seveda že imamo nameščeno gručo Kubernetes (k8s.example.com), prav tako pa ima vnaprej nameščen HELM. Imamo tudi organizacijo na GitHubu (super-org).
Če nimate HELM-a, ga namestite zelo enostavna.
Najprej moramo nastaviti GitHub.
Pojdite na stran z nastavitvami organizacije, (https://github.com/organizations/super-org/settings/applications) in ustvarite novo aplikacijo (Authorized OAuth App):
Bodite previdni pri povezavah, pomembno je, da ne izgubite poševnic.
Kot odgovor na izpolnjen obrazec bo GitHub ustvaril Client ID и Client secret, jih hranimo na varnem mestu, nam bodo koristile (npr. uporabljamo Vault za shranjevanje skrivnosti):
Pojdite na stran za prijavo (https://login.k8s.example.com) in se prijavite s svojim računom GitHub:
prijavna stran
Stran za prijavo preusmerjena na GitHub
Za dostop sledite ustvarjenim navodilom
Po kopiranju in lepljenju s spletne strani lahko uporabimo kubectl za upravljanje naših virov gruče:
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"
In deluje, vsi uporabniki GitHub v naši organizaciji si lahko ogledajo vire in se prijavijo v sklope, vendar nimajo pravic, da bi jih spreminjali.