Kubernetes Authentication kun GitHub OAuth kaj Dex
Mi prezentas al via atento lernilon por generi aliron al Kubernetes-grupo uzante Dex, dex-k8s-authenticator kaj GitHub.
Loka memo de la ruslingva Kubernetes babilado Telegramo
Enkonduko
Ni uzas Kubernetes por krei dinamikajn mediojn por la evolua teamo kaj QA. Do ni volas doni al ili aliron al la areto por ambaŭ la panelo kaj kubectl. Male al la sama OpenShift, vanilo Kubernetes ne havas denaskan aŭtentikigon, do ni uzas triajn ilojn por tio.
GitHub - simple ĉar ni uzas GitHub en nia kompanio
Ni provis uzi Google OIDC, sed bedaŭrinde ni malsukcesis komenci ilin per grupoj, do la integriĝo kun GitHub ĝuste konvenis al ni. Sen grupa mapado, ne estos eble krei grup-bazitajn RBAC-politikojn.
Do, kiel funkcias nia procezo de rajtigo de Kubernetes en vida reprezentado:
Procezo de rajtigo
Iom pli da detaloj kaj punkto post punkto:
Uzanto ensalutas en dex-k8s-authenticator (login.k8s.example.com)
dex-k8s-authenticator redirektas la peton al Dex (dex.k8s.example.com)
Dex alidirektas al GitHub-ensalutpaĝo
GitHub generas la bezonatajn rajtigajn informojn kaj resendas ĝin al Dex
Dex pasas la ricevitajn informojn al dex-k8s-authenticator
Uzanto ricevas OIDC-ĵetonon de GitHub
dex-k8s-authenticator aldonas ĵetonon al kubeconfig
kubectl pasas ĵetonon al KubeAPIServer
KubeAPIServer bazita sur la preterpasita ĵetono resendas aliron al kubectl
Uzantaj aliroj de kubectl
Preparaj agoj
Kompreneble, ni jam havas instalitan Kubernetes-grupon (k8s.example.com), same kiel HELM antaŭinstalita. Ni ankaŭ havas organizon en GitHub (super-org).
Se vi ne havas HELM, instalu ĝin tre simpla.
Unue ni devas agordi GitHub.
Iru al la paĝo de agordoj de la organizo, (https://github.com/organizations/super-org/settings/applications) kaj kreu novan aplikaĵon (aŭtorizita OAuth Apo):
Kreu novan apon en GitHub
Plenigu la kampojn kun la postulataj URL-oj, ekzemple:
Responde al la kompletigita formularo, GitHub generos Client ID и Client secret, konservu ilin en sekura loko, ili estos utilaj al ni (ekzemple, ni uzas volbo por konservi sekretojn):
Iru al ensaluta paĝohttps://login.k8s.example.com) kaj ensalutu per GitHub-konto:
Paĝo pri rajtigo
Rajtpaĝo alidirektita al GitHub
Sekvu la generitajn instrukciojn por akiri aliron
Post kopii-alglui de la retpaĝo, ni povas uzi kubectl por administri niajn amasrimedojn:
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"
Kaj ĝi funkcias, ĉiuj uzantoj de GitHub en nia organizo povas vidi rimedojn kaj ensaluti en podojn, sed ili ne havas permeson ŝanĝi ilin.