ProHoster > Blog > uprava > Autentificirajte se u Kubernetesu koristeći GitHub OAuth i Dex
Autentificirajte se u Kubernetesu koristeći GitHub OAuth i Dex
Predstavljam vam vodič za generiranje pristupa Kubernetes klasteru koristeći Dex, dex-k8s-authenticator i GitHub.
Lokalni meme iz Kubernetes chata na ruskom jeziku Telegram
Uvod
Koristimo Kubernetes za stvaranje dinamičnih okruženja za razvojni i QA tim. Stoga im želimo dati pristup klasteru i za nadzornu ploču i za kubectl. Za razliku od OpenShift-a, vanilija Kubernetes nema izvornu autentifikaciju, pa za to koristimo alate trećih strana.
GitHub - jednostavno zato što koristimo GitHub u našoj tvrtki
Pokušali smo koristiti Google OIDC, ali nažalost nije uspio pokrenuti ih s grupama, tako da nam je integracija s GitHubom sasvim dobro legla. Bez grupnog mapiranja neće biti moguće kreirati RBAC politike na temelju grupa.
Dakle, kako naš Kubernetes postupak autorizacije funkcionira u vizualnom prikazu:
Proces autorizacije
Malo detaljnije i točku po točku:
Korisnik se prijavljuje u dex-k8s-authenticator (login.k8s.example.com)
GitHub generira potrebne podatke za autorizaciju i vraća ih Dexu
Dex prosljeđuje primljene informacije dex-k8s-autentifikatoru
Korisnik dobiva OIDC token od GitHuba
dex-k8s-authenticator dodaje token u kubeconfig
kubectl prosljeđuje token KubeAPIServeru
KubeAPIServer vraća pristupe kubectl-u na temelju proslijeđenog tokena
Korisnik dobiva pristup iz kubectl
Pripremne aktivnosti
Naravno, već imamo instaliran Kubernetes klaster (k8s.example.com), a dolazi i s unaprijed instaliranim HELM-om. Imamo i organizaciju na GitHubu (super-org).
Ako nemate HELM, instalirajte ga vrlo jednostavan.
Prvo moramo postaviti GitHub.
Idite na stranicu postavki organizacije, (https://github.com/organizations/super-org/settings/applications) i izradite novu aplikaciju (Authorized OAuth App):
Budite oprezni s linkovima, važno je da ne izgubite kose crte.
Kao odgovor na ispunjen obrazac, GitHub će generirati Client ID и Client secret, čuvajte ih na sigurnom mjestu, bit će nam korisni (na primjer, koristimo svod za čuvanje tajni):
Idite na stranicu za prijavu (https://login.k8s.example.com) i prijavite se koristeći svoj GitHub račun:
Stranica za prijavu
Stranica za prijavu preusmjerena je na GitHub
Slijedite generirane upute za pristup
Nakon kopiranja i lijepljenja s web stranice, možemo koristiti kubectl za upravljanje našim resursima klastera:
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"
I radi, svi korisnici GitHuba u našoj organizaciji mogu vidjeti resurse i prijaviti se u module, ali nemaju prava mijenjati ih.