Autentificați-vă în Kubernetes folosind GitHub OAuth și Dex
Vă prezint atenției un tutorial pentru generarea accesului la un cluster Kubernetes folosind Dex, dex-k8s-authenticator și GitHub.
Meme locală din chatul Kubernetes în limba rusă Telegramă
Introducere
Folosim Kubernetes pentru a crea medii dinamice pentru echipa de dezvoltare și QA. Așa că vrem să le oferim acces la cluster atât pentru tabloul de bord, cât și pentru kubectl. Spre deosebire de OpenShift, vanilla Kubernetes nu are autentificare nativă, așa că folosim instrumente terțe pentru aceasta.
GitHub - pur și simplu pentru că folosim GitHub în compania noastră
Am încercat să folosim Google OIDC, dar, din păcate, noi nu a reușit pentru a le începe cu grupuri, așa că integrarea cu GitHub ni s-a potrivit destul de bine. Fără maparea grupului, nu va fi posibilă crearea politicilor RBAC bazate pe grupuri.
Deci, cum funcționează procesul nostru de autorizare Kubernetes într-o reprezentare vizuală:
Procesul de autorizare
Mai multe detalii și punct cu punct:
Utilizatorul se conectează la dex-k8s-authenticator (login.k8s.example.com)
dex-k8s-authenticator trimite cererea către Dex (dex.k8s.example.com)
Dex redirecționează către pagina de conectare GitHub
GitHub generează informațiile de autorizare necesare și le returnează Dex
Dex transmite informațiile primite către dex-k8s-authenticator
Utilizatorul primește un token OIDC de la GitHub
dex-k8s-authenticator adaugă un token la kubeconfig
kubectl transmite jetonul către KubeAPIServer
KubeAPIServer returnează acces la kubectl pe baza simbolului transmis
Utilizatorul are acces de la kubectl
Activități pregătitoare
Desigur, avem deja instalat un cluster Kubernetes (k8s.example.com), și vine, de asemenea, cu HELM preinstalat. Avem și o organizație pe GitHub (super-org).
Dacă nu aveți HELM, instalați-l foarte simplu.
Mai întâi trebuie să setăm GitHub.
Accesați pagina cu setările organizației, (https://github.com/organizations/super-org/settings/applications) și creați o nouă aplicație (Aplicație OAuth autorizată):
Crearea unei noi aplicații pe GitHub
Completați câmpurile cu adresele URL necesare, de exemplu:
Adresa URL a paginii de pornire: https://dex.k8s.example.com
Adresa URL de returnare a autorizării: https://dex.k8s.example.com/callback
Atenție la link-uri, este important să nu pierdeți barele oblice.
Ca răspuns la un formular completat, GitHub va genera Client ID и Client secret, păstrați-le într-un loc sigur, ne vor fi de folos (de exemplu, folosim Boltă pentru stocarea secretelor):
Accesați pagina de conectare (https://login.k8s.example.com) și conectați-vă folosind contul GitHub:
Pagina de logare
Pagina de conectare a fost redirecționată către GitHub
Urmați instrucțiunile generate pentru a obține acces
După copierea-lipirea de pe pagina web, putem folosi kubectl pentru a gestiona resursele clusterului:
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 funcționează, toți utilizatorii GitHub din organizația noastră pot vedea resurse și se pot conecta la pod-uri, dar nu au drepturi să le modifice.