Authentifizéieren a Kubernetes mat GitHub OAuth an Dex
Ech presentéieren Iech en Tutorial fir Zougang zu engem Kubernetes Cluster ze generéieren mat Dex, dex-k8s-authenticator a GitHub.
Lokal meme aus dem russeschsproochege Kubernetes chatten an Hëllefe profitéieren
Aféierung
Mir benotzen Kubernetes fir dynamesch Ëmfeld fir d'Entwécklung an d'QA Team ze kreéieren. Also mir wëllen hinnen Zougang zum Stärekoup fir béid Dashboard an kubectl ginn. Am Géigesaz zu OpenShift huet Vanilla Kubernetes keng gebierteg Authentifikatioun, also benotze mir Drëtt Partei Tools fir dëst.
GitHub - einfach well mir GitHub an eiser Firma benotzen
Mir hu probéiert Google OIDC ze benotzen, awer leider ausgefall fir se mat Gruppen unzefänken, sou datt d'Integratioun mat GitHub eis ganz gutt passt. Ouni Gruppemapping wäert et net méiglech sinn RBAC-Politik op Basis vu Gruppen ze kreéieren.
Also, wéi funktionnéiert eise Kubernetes Autorisatiounsprozess an enger visueller Representatioun:
Autorisatioun Prozess
E bësse méi Detail a Punkt fir Punkt:
De Benotzer loggt sech an dex-k8s-authenticator (login.k8s.example.com)
dex-k8s-authenticator schéckt d'Ufro un Dex (dex.k8s.example.com)
Dex redirects op d'GitHub Login Säit
GitHub generéiert déi néideg Autorisatiounsinformatioun a gitt se an Dex zréck
Dex passéiert déi kritt Informatioun un dex-k8s-authenticator
De Benotzer kritt en OIDC Token vu GitHub
dex-k8s-authenticator füügt Token un kubeconfig
kubectl passt den Token un de KubeAPIServer
KubeAPIServer gëtt Zougang zu kubectl op Basis vum passéierten Token zréck
De Benotzer kritt Zougang vu kubectl
Virbereedungsaktivitéiten
Natierlech hu mir schonn e Kubernetes Cluster installéiert (k8s.example.com), a kënnt och mat HELM virinstalléiert. Mir hunn och eng Organisatioun op GitHub (super-org).
Wann Dir kee HELM hutt, installéiere se ganz einfach.
Als éischt musse mir GitHub opsetzen.
Gitt op d'Organisatioun Astellungssäit, (https://github.com/organizations/super-org/settings/applications) a erstellt eng nei Applikatioun (Autoriséiert OAuth App):
Erstellt eng nei Applikatioun op GitHub
Fëllt d'Felder mat den néidegen URLen aus, zum Beispill:
Sidd virsiichteg mat Linken, et ass wichteg keng Schnëtt ze verléieren.
Als Äntwert op eng ausgefëllte Form generéiert GitHub Client ID и Client secret, halen se op enger sécherer Plaz, si wäerte fir eis nëtzlech sinn (zum Beispill, mir benotzen Vault fir Geheimnisser ze späicheren):
Gitt op d'Login Säit (https://login.k8s.example.com) a loggt Iech mat Ärem GitHub Kont un:
Login Säit
Login Säit op GitHub ëmgeleet
Follegt déi generéiert Instruktioune fir Zougang ze kréien
Nom Kopie-paste vun der Websäit kënne mir kubectl benotzen fir eis Clusterressourcen ze managen:
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"
An et funktionnéiert, all GitHub Benotzer an eiser Organisatioun kënne Ressourcen gesinn an a Pods aloggen, awer si hunn keng Rechter fir se z'änneren.