Prestu à a vostra attenzione un tutoriale per generà accessu à un cluster Kubernetes cù Dex, dex-k8s-authenticator è GitHub.
Meme locale da u chat Kubernetes in lingua russa n'ambasciata
Introduzione
Utilizemu Kubernetes per creà ambienti dinamichi per u sviluppu è a squadra di QA. Allora vulemu dà accessu à u cluster sia per u dashboard sia per kubectl. A cuntrariu di OpenShift, vanilla Kubernetes ùn hà micca l'autentificazione nativa, cusì usemu strumenti di terzu per questu.
GitHub - solu perchè usemu GitHub in a nostra cumpagnia
Avemu pruvatu à aduprà Google OIDC, ma sfurtunatamenti noi fallutu per principià cù i gruppi, cusì l'integrazione cù GitHub ci hè abbastanza bè. Senza mapping di gruppu, ùn serà micca pussibule di creà pulitiche RBAC basate nantu à i gruppi.
Allora, cumu funziona u nostru prucessu d'autorizazione Kubernetes in una rappresentazione visuale:
Prucessu d'autorizazione
Un pocu di più dettagliu è puntu per puntu:
L'utente accede à dex-k8s-authenticator (login.k8s.example.com)
dex-k8s-authenticator trasmette a dumanda à Dex (dex.k8s.example.com)
Dex redirige à a pagina di login di GitHub
GitHub genera l'infurmazioni necessarii di l'autorizazione è a torna à Dex
Dex passa l'infurmazioni ricevute à dex-k8s-authenticator
L'utilizatore riceve un token OIDC da GitHub
dex-k8s-authenticator aghjusta un token à kubeconfig
kubectl passa u token à KubeAPIServer
KubeAPIServer torna l'accessu à kubectl basatu annantu à u token passatu
L'utilizatore hà accessu da kubectl
Attività preparatorii
Di sicuru, avemu digià stallatu un cluster Kubernetes (k8s.example.com), è vene ancu cù HELM preinstallatu. Avemu ancu una urganizazione in GitHub (super-org).
Se ùn avete micca HELM, installate assai simplici.
Prima avemu bisognu di cunfigurà GitHub.
Andà à a pagina di paràmetri di l'urganizazione, (https://github.com/organizations/super-org/settings/applications) è crea una nova applicazione (App OAuth Autorizzata):
Crià una nova applicazione in GitHub
Riempite i campi cù l'URL necessarii, per esempiu:
URL di a pagina iniziale: https://dex.k8s.example.com
URL di callback d'autorizazione: https://dex.k8s.example.com/callback
Attenti cù i ligami, hè impurtante ùn perde micca slashes.
In risposta à una forma cumpleta, GitHub generà Client ID и Client secret, mantene in un locu sicuru, seranu utili per noi (per esempiu, avemu aduprà Vault per guardà i sicreti):
Andà à a pagina di login (https://login.k8s.example.com) è accede cù u vostru contu GitHub:
Pagina di login
Pagina di login rediretta à GitHub
Segui l'istruzzioni generati per avè accessu
Dopu à copia-incolla da a pagina web, pudemu usà kubectl per gestisce i nostri risorse di 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"
È funziona, tutti l'utilizatori di GitHub in a nostra urganizazione ponu vede risorse è log in pods, ma ùn anu micca diritti per cambià.