Autentifikatu Kubernetes-en GitHub OAuth eta Dex erabiliz
Kubernetes kluster baterako sarbidea sortzeko tutorial bat aurkezten dizuet Dex, dex-k8s-authenticator eta GitHub erabiliz.
Errusierazko Kubernetes txat-eko tokiko memea Telegrama
Sarrera
Kubernetes erabiltzen dugu garapenerako eta QA taldearentzat ingurune dinamikoak sortzeko. Beraz, klustererako sarbidea eman nahi diegu aginte-panelerako eta kubectl-erako. OpenShift-ek ez bezala, vanilla Kubernetes-ek ez du jatorrizko autentifikaziorik, beraz, hirugarrenen tresnak erabiltzen ditugu horretarako.
GitHub - gure enpresan GitHub erabiltzen dugulako besterik gabe
Google OIDC erabiltzen saiatu ginen, baina tamalez huts taldeekin hasteko, beraz, GitHub-en integrazioa nahiko ondo egokitu zitzaigun. Taldeen maparik gabe, ezin izango da taldeetan oinarritutako RBAC politikak sortu.
Beraz, nola funtzionatzen du gure Kubernetes baimen-prozesuak irudikapen bisual batean:
Baimen-prozesua
Xehetasun apur bat gehiago eta puntuz puntu:
Erabiltzailea dex-k8s-authenticator-en hasten da (login.k8s.example.com)
dex-k8s-authenticator-ek Dex-i birbidaltzen dio eskaera (dex.k8s.example.com)
Dex-ek GitHub saioa hasteko orrira birbideratzen du
GitHub-ek beharrezko baimen-informazioa sortzen du eta Dex-era itzultzen du
Dex-ek jasotako informazioa dex-k8s-authenticator-era pasatzen du
Erabiltzaileak OIDC token bat jasotzen du GitHub-etik
dex-k8s-authenticator-ek tokena gehitzen du kubeconfig-era
kubectl-ek tokena KubeAPIServer-era pasatzen du
KubeAPIServer-ek kubectl-erako sarbideak itzultzen ditu pasatutako tokenaren arabera
Erabiltzaileak kubectl-etik lortzen du sarbidea
Prestaketa ekintzak
Jakina, dagoeneko Kubernetes kluster bat instalatuta daukagu ββ(k8s.example.com), eta HELM aurrez instalatuta ere badator. GitHub-en (super-org) erakunde bat ere badugu.
HELM ez baduzu, instalatu oso erraza.
Lehenik eta behin GitHub konfiguratu behar dugu.
Joan erakundearen ezarpenen orrira, (https://github.com/organizations/super-org/settings/applications) eta sortu aplikazio berri bat (OAuth aplikazio baimendua):
Kontuz estekekin, garrantzitsua da barrak ez galtzea.
Osatutako inprimaki bati erantzunez, GitHub-ek sortuko du Client ID ΠΈ Client secret, gorde itzazu leku seguru batean, baliagarriak izango zaizkigu (adibidez, erabiltzen dugu Boveda sekretuak gordetzeko):
Joan saioa hasteko orrira (https://login.k8s.example.com) eta hasi saioa zure GitHub kontua erabiliz:
Saioa hasteko orria
Saioa hasteko orria GitHubera birbideratu da
Jarraitu sortutako argibideei sarbidea lortzeko
Web orritik kopiatu-itsatsi ondoren, kubectl erabil dezakegu gure kluster baliabideak kudeatzeko:
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"
Eta funtzionatzen du, gure erakundeko GitHub-eko erabiltzaile guztiek baliabideak ikusi eta podetan saioa hasi dezakete, baina ez dute horiek aldatzeko eskubiderik.