Otantifye nan Kubernetes lè l sèvi avèk GitHub OAuth ak Dex
Mwen prezante atansyon ou yon leson patikilye pou jenere aksè nan yon gwoup Kubernetes lè l sèvi avèk Dex, dex-k8s-authenticator ak GitHub.
Mem lokal ki soti nan chat Kubernetes nan lang Ris la Telegram
Entwodiksyon
Nou itilize Kubernetes pou kreye anviwònman dinamik pou ekip devlopman ak QA. Se konsa, nou vle ba yo aksè nan gwoup la pou tou de tablodbò a ak kubectl. Kontrèman ak OpenShift, vaniy Kubernetes pa gen otantifikasyon natif natal, kidonk nou itilize zouti twazyèm pati pou sa.
GitHub - tou senpleman paske nou itilize GitHub nan konpayi nou an
Nou te eseye sèvi ak Google OIDC, men malerezman nou echwe kòmanse yo ak gwoup, kidonk entegrasyon an ak GitHub adapte nou byen. San kat gwoup, li p ap posib pou kreye règleman RBAC ki baze sou gwoup.
Se konsa, ki jan pwosesis otorizasyon Kubernetes nou an travay nan yon reprezantasyon vizyèl:
Pwosesis otorizasyon
Yon ti kras plis detay ak pwen pa pwen:
Itilizatè konekte nan dex-k8s-authenticator (login.k8s.example.com)
dex-k8s-authenticator voye demann lan bay Dex (dex.k8s.example.com)
Dex redireksyon nan paj la konekte GitHub
GitHub jenere enfòmasyon otorizasyon ki nesesè yo epi retounen li bay Dex
Dex pase enfòmasyon yo resevwa bay dex-k8s-authenticator
Itilizatè a resevwa yon siy OIDC nan GitHub
dex-k8s-authenticator ajoute siy nan kubeconfig
kubectl pase siy la bay KubeAPIServer
KubeAPIServer retounen aksè nan kubectl ki baze sou siy ki pase a
Itilizatè a jwenn aksè nan kubectl
Aksyon preparatwa
Natirèlman, nou deja gen yon gwoup Kubernetes enstale (k8s.example.com), epi tou li vini ak HELM pre-enstale. Nou gen tou yon òganizasyon sou GitHub (super-org).
Si ou pa gen HELM, enstale li trè senp.
Premyèman, nou bezwen mete kanpe GitHub.
Ale nan paj paramèt òganizasyon an, (https://github.com/organizations/super-org/settings/applications) epi kreye yon nouvo aplikasyon (Applicasyon OAuth Otorize):
Fè atansyon ak lyen, li enpòtan pou pa pèdi koupe.
An repons a yon fòm ranpli, GitHub pral jenere Client ID и Client secret, kenbe yo nan yon kote ki an sekirite, yo pral itil nou (pa egzanp, nou itilize vout pou estoke sekrè):
Ale nan paj login (https://login.k8s.example.com) epi konekte ak kont GitHub ou a:
Paj konekte
Paj konekte redireksyon sou GitHub
Swiv enstriksyon yo pwodwi pou jwenn aksè
Apre kopye-kole soti nan paj wèb la, nou ka itilize kubectl pou jere resous gwoup nou yo:
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"
Epi li travay, tout itilizatè GitHub nan òganizasyon nou an ka wè resous epi konekte nan gous, men yo pa gen dwa chanje yo.