Pagpamatuod sa Kubernetes gamit ang GitHub OAuth ug Dex
Gipresentar ko sa imong pagtagad ang usa ka panudlo alang sa pagmugna og access sa usa ka Kubernetes cluster gamit ang Dex, dex-k8s-authenticator ug GitHub.
Lokal nga meme gikan sa Russian-language Kubernetes chat in telegrama
Pasiuna
Gigamit namo ang Kubernetes sa paghimo og mga dinamikong palibot para sa development ug QA team. Busa gusto namong hatagan silag access sa cluster para sa dashboard ug kubectl. Dili sama sa OpenShift, ang vanilla Kubernetes walay lumad nga panghimatuud, mao nga gigamit namo ang mga himan sa ikatulo nga partido alang niini.
GitHub - tungod lang kay gigamit namo ang GitHub sa among kompanya
Gisulayan namon nga gamiton ang Google OIDC, apan sa kasubo kami napakyas aron magsugod sila sa mga grupo, mao nga ang panagsama sa GitHub haum kaayo kanamo. Kung walay pagmapa sa grupo, dili mahimo ang paghimo sa mga palisiya sa RBAC base sa mga grupo.
Busa, sa unsang paagi ang proseso sa pagtugot sa Kubernetes molihok sa usa ka biswal nga representasyon:
Proseso sa pagtugot
Usa ka gamay nga detalye ug punto sa punto:
User logs sa dex-k8s-authenticator (login.k8s.example.com)
Gipasa sa dex-k8s-authenticator ang hangyo sa Dex (dex.k8s.example.com)
Gi-redirect ni Dex ang panid sa pag-login sa GitHub
Ang GitHub nagmugna sa gikinahanglan nga impormasyon sa pagtugot ug gibalik kini sa Dex
Gipasa ni Dex ang nadawat nga kasayuran sa dex-k8s-authenticator
Ang user makadawat ug OIDC token gikan sa GitHub
Ang dex-k8s-authenticator nagdugang token sa kubeconfig
Gipasa sa kubectl ang token sa KubeAPIServer
Gibalik sa KubeAPIServer ang mga access sa kubectl base sa gipasa nga token
Ang user makakuha og access gikan sa kubectl
Mga aksyon nga giandam
Siyempre, aduna na kitay naka-install nga Kubernetes cluster (k8s.example.com), ug dala usab ang HELM nga pre-installed. Adunay usab kami usa ka organisasyon sa GitHub (super-org).
Kung wala kay HELM, i-install kini yano kaayo.
Una kinahanglan naton i-set up ang GitHub.
Adto sa pahina sa mga setting sa organisasyon, (https://github.com/organizations/super-org/settings/applications) ug paghimo ug bag-ong aplikasyon (Awtorisadong OAuth App):
Paghimo og bag-ong aplikasyon sa GitHub
Pun-a ang mga natad sa gikinahanglan nga mga URL, pananglitan:
URL sa Panimalay: https://dex.k8s.example.com
URL sa pagtawag balik sa pagtugot: https://dex.k8s.example.com/callback
Pag-amping sa mga link, hinungdanon nga dili mawala ang mga laslas.
Agig tubag sa usa ka nakompleto nga porma, ang GitHub makamugna Client ID ΠΈ Client secret, ibutang kini sa luwas nga dapit, kini mapuslanon kanato (pananglitan, atong gamiton Vault alang sa pagtipig sa mga sekreto):
Adto sa login page (https://login.k8s.example.com) ug pag-log in gamit ang imong GitHub account:
Login nga panid
Ang panid sa pag-login gi-redirect sa GitHub
Sunda ang namugna nga mga instruksyon aron maka-access
Pagkahuman sa pagkopya-paste gikan sa panid sa web, magamit namon ang kubectl aron madumala ang among mga kapanguhaan sa cluster:
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"
Ug kini molihok, ang tanan nga tiggamit sa GitHub sa among organisasyon makakita sa mga kapanguhaan ug maka-log in sa mga pod, apan wala silay katungod sa pag-usab niini.