ProHoster > blog > Utawala > Thibitisha katika Kubernetes ukitumia GitHub OAuth na Dex
Thibitisha katika Kubernetes ukitumia GitHub OAuth na Dex
Ninawasilisha kwa usikivu wako mafunzo ya kutoa ufikiaji wa nguzo ya Kubernetes kwa kutumia Dex, dex-k8s-authenticator na GitHub.
Meme ya ndani kutoka Kubernetes ya lugha ya Kirusi hupiga gumzo ndani telegram
Utangulizi
Tunatumia Kubernetes kuunda mazingira thabiti kwa ajili ya maendeleo na timu ya QA. Kwa hivyo tunataka kuwapa ufikiaji wa nguzo ya dashibodi na kubectl. Tofauti na OpenShift, vanilla Kubernetes haina uthibitishaji asilia, kwa hivyo tunatumia zana za wahusika wengine kwa hili.
GitHub - kwa sababu tu tunatumia GitHub katika kampuni yetu
Tulijaribu kutumia Google OIDC, lakini kwa bahati mbaya sisi imeshindwa kuwaanzisha na vikundi, kwa hivyo ujumuishaji na GitHub ulitufaa vizuri. Bila ramani ya kikundi, haitawezekana kuunda sera za RBAC kulingana na vikundi.
Kwa hivyo, mchakato wetu wa idhini ya Kubernetes hufanyaje kazi katika uwakilishi wa kuona:
Mchakato wa idhini
Maelezo kidogo zaidi na hatua kwa hatua:
Mtumiaji anaingia kwenye dex-k8s-authenticator (login.k8s.example.com)
dex-k8s-kithibitishaji hutuma ombi kwa Dex (dex.k8s.example.com)
Dex inaelekeza kwenye ukurasa wa kuingia wa GitHub
GitHub hutoa habari muhimu ya uidhinishaji na kuirudisha kwa Dex
Dex hupitisha taarifa iliyopokelewa kwa dex-k8s-kithibitishaji
Mtumiaji hupokea tokeni ya OIDC kutoka GitHub
dex-k8s-authenticator huongeza tokeni kwa kubeconfig
kubectl hupitisha ishara kwa KubeAPIServer
KubeAPIServer inarudisha ufikiaji kwa kubectl kulingana na tokeni iliyopitishwa
Mtumiaji anapata ufikiaji kutoka kwa kubectl
Vitendo vya maandalizi
Kwa kweli, tayari tunayo nguzo ya Kubernetes iliyosanikishwa (k8s.example.com), na pia inakuja na HELM iliyosakinishwa awali. Pia tuna shirika kwenye GitHub (super-org).
Ikiwa huna HELM, isakinishe rahisi sana.
Kwanza tunahitaji kusanidi GitHub.
Nenda kwenye ukurasa wa mipangilio ya shirika, (https://github.com/organizations/super-org/settings/applications) na unda programu mpya (Programu ya OAuth Iliyoidhinishwa):
Kuunda programu mpya kwenye GitHub
Jaza sehemu na URL zinazohitajika, kwa mfano:
URL ya ukurasa wa nyumbani: https://dex.k8s.example.com
URL ya uidhinishaji wa kupiga simu tena: https://dex.k8s.example.com/callback
Jihadharini na viungo, ni muhimu si kupoteza slashes.
Kwa kujibu fomu iliyokamilishwa, GitHub itatoa Client ID и Client secret, ziweke mahali salama, zitakuwa na manufaa kwetu (kwa mfano, tunatumia Vault kwa kuhifadhi siri):
Nenda kwenye ukurasa wa kuingia (https://login.k8s.example.com) na uingie kwa kutumia akaunti yako ya GitHub:
Ukurasa wa kuingia
Ukurasa wa kuingia umeelekezwa kwa GitHub
Fuata maagizo yaliyotolewa ili kupata ufikiaji
Baada ya kunakili-kubandika kutoka kwa ukurasa wa wavuti, tunaweza kutumia kubectl kudhibiti rasilimali zetu za nguzo:
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"
Na inafanya kazi, watumiaji wote wa GitHub katika shirika letu wanaweza kuona rasilimali na kuingia kwenye maganda, lakini hawana haki ya kuzibadilisha.