Awtentika f'Kubernetes billi tuża GitHub OAuth u Dex
Nippreżenta għall-attenzjoni tiegħek tutorja biex tiġġenera aċċess għal cluster Kubernetes billi tuża Dex, dex-k8s-authenticator u GitHub.
Meme lokali miċ-chat ta' Kubernetes bil-lingwa Russa Telegramma
Introduzzjoni
Aħna nużaw Kubernetes biex noħolqu ambjenti dinamiċi għat-tim tal-iżvilupp u l-QA. Allura rridu nagħtuhom aċċess għall-cluster kemm għad-dashboard kif ukoll għall-kubectl. B'differenza OpenShift, vanilla Kubernetes m'għandux awtentikazzjoni nattiva, għalhekk nużaw għodod ta 'partijiet terzi għal dan.
GitHub - sempliċement għax nużaw GitHub fil-kumpanija tagħna
Ippruvajna nużaw Google OIDC, imma sfortunatament aħna falliet biex nibdew bi gruppi, għalhekk l-integrazzjoni ma 'GitHub addattatna pjuttost tajjeb. Mingħajr mapping tal-grupp, mhux se jkun possibbli li jinħolqu politiki RBAC bbażati fuq gruppi.
Allura, kif jaħdem il-proċess ta' awtorizzazzjoni Kubernetes tagħna f'rappreżentazzjoni viżiva:
Proċess ta' awtorizzazzjoni
Ftit aktar dettall u punt b'punt:
L-utent jidħol f'dex-k8s-authenticator (login.k8s.example.com)
dex-k8s-authenticator jgħaddi t-talba lil Dex (dex.k8s.example.com)
Dex jidderieġi mill-ġdid lejn il-paġna tal-login ta' GitHub
GitHub jiġġenera l-informazzjoni meħtieġa dwar l-awtorizzazzjoni u jibgħatha lura lil Dex
Dex jgħaddi l-informazzjoni riċevuta lil dex-k8s-authenticator
L-utent jirċievi token OIDC minn GitHub
dex-k8s-authenticator iżid token ma' kubeconfig
kubectl jgħaddi t-token lil KubeAPIServer
KubeAPIServer jirritorna aċċessi għal kubectl ibbażati fuq it-token mgħoddi
L-utent ikollu aċċess minn kubectl
Azzjonijiet preparatorji
Naturalment, diġà għandna cluster Kubernetes installat (k8s.example.com), u jiġi wkoll b'HELM installat minn qabel. Għandna wkoll organizzazzjoni fuq GitHub (super-org).
Jekk m'għandekx HELM, installah sempliċi ħafna.
L-ewwel irridu nwaqqfu GitHub.
Mur fil-paġna tas-settings tal-organizzazzjoni, (https://github.com/organizations/super-org/settings/applications) u oħloq applikazzjoni ġdida (App OAuth Awtorizzata):
URL ta' callback ta' awtorizzazzjoni: https://dex.k8s.example.com/callback
Oqgħod attent bil-links, huwa importanti li ma titlifx slashes.
Bi tweġiba għal formola mimlija, GitHub se jiġġenera Client ID и Client secret, żommhom f'post sigur, se jkunu utli għalina (per eżempju, nużaw Vault għall-ħażna tas-sigrieti):
Mur fil-paġna tal-login (https://login.k8s.example.com) u illoggja billi tuża l-kont GitHub tiegħek:
Il-paġna tal-login
Il-paġna tal-login rediretta lejn GitHub
Segwi l-istruzzjonijiet iġġenerati biex tikseb aċċess
Wara li nikkopja-pejst mill-paġna web, nistgħu nużaw kubectl biex niġġestixxu r-riżorsi tal-cluster tagħna:
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"
U jaħdem, l-utenti kollha ta 'GitHub fl-organizzazzjoni tagħna jistgħu jaraw ir-riżorsi u jidħlu fil-miżwed, iżda m'għandhomx drittijiet biex jibdluhom.