Dilysu yn Kubernetes gan ddefnyddio GitHub OAuth a Dex
Rwy'n cyflwyno tiwtorial i'ch sylw ar gyfer cynhyrchu mynediad i glwstwr Kubernetes gan ddefnyddio Dex, dex-k8s-authenticator a GitHub.
Meme lleol o'r Kubernetes iaith Rwsieg sgwrsio yn Telegram
Cyflwyniad
Rydym yn defnyddio Kubernetes i greu amgylcheddau deinamig ar gyfer y tîm datblygu a sicrhau ansawdd. Felly rydym am roi mynediad iddynt i'r clwstwr ar gyfer y dangosfwrdd a'r kubectl. Yn wahanol i OpenShift, nid oes gan fanila Kubernetes ddilysu brodorol, felly rydym yn defnyddio offer trydydd parti ar gyfer hyn.
Yn y cyfluniad hwn rydym yn defnyddio:
dex-k8s-dilyswr — cymhwysiad gwe ar gyfer cynhyrchu cyfluniad kubectl
GitHub - yn syml oherwydd ein bod yn defnyddio GitHub yn ein cwmni
Fe wnaethon ni geisio defnyddio Google OIDC, ond yn anffodus ni wedi methu i'w cychwyn gyda grwpiau, felly roedd yr integreiddio â GitHub yn gweddu'n eithaf da i ni. Heb fapio grŵp, ni fydd yn bosibl creu polisïau RBAC yn seiliedig ar grwpiau.
Felly, sut mae ein proses awdurdodi Kubernetes yn gweithio mewn cynrychiolaeth weledol:
Proses awdurdodi
Ychydig mwy o fanylion ac fesul pwynt:
Defnyddiwr yn mewngofnodi i dex-k8s-authenticator (login.k8s.example.com)
dex-k8s-authenticator yn anfon y cais ymlaen at Dex (dex.k8s.example.com)
Mae Dex yn ailgyfeirio i dudalen mewngofnodi GitHub
Mae GitHub yn cynhyrchu'r wybodaeth awdurdodi angenrheidiol ac yn ei dychwelyd i Dex
Mae Dex yn trosglwyddo'r wybodaeth a dderbyniwyd i dex-k8s-authenticator
Mae'r defnyddiwr yn derbyn tocyn OIDC gan GitHub
dex-k8s-authenticator yn ychwanegu tocyn at kubeconfig
kubectl yn trosglwyddo'r tocyn i KubeAPIServer
Mae KubeAPIServer yn dychwelyd mynediadau i kubectl yn seiliedig ar y tocyn a basiwyd
Mae'r defnyddiwr yn cael mynediad o kubectl
camau gweithredu paratoadol
Wrth gwrs, mae gennym eisoes glwstwr Kubernetes wedi'i osod (k8s.example.com), a hefyd yn dod gyda HELM wedi'i osod ymlaen llaw. Mae gennym hefyd sefydliad ar GitHub (super-org).
Os nad oes gennych HELM, gosodwch ef syml iawn.
Yn gyntaf mae angen i ni sefydlu GitHub.
Ewch i dudalen gosodiadau'r sefydliad, (https://github.com/organizations/super-org/settings/applications) a chreu cais newydd (App OAuth Awdurdodedig):
Creu cais newydd ar GitHub
Llenwch y meysydd gyda'r URLau angenrheidiol, er enghraifft:
URL hafan: https://dex.k8s.example.com
URL galwad yn ôl awdurdodiad: https://dex.k8s.example.com/callback
Byddwch yn ofalus gyda chysylltiadau, mae'n bwysig peidio â cholli slaes.
Mewn ymateb i ffurflen wedi'i chwblhau, bydd GitHub yn cynhyrchu Client ID и Client secret, cadwch nhw mewn lle diogel, byddant yn ddefnyddiol i ni (er enghraifft, rydym yn defnyddio Bwlch ar gyfer storio cyfrinachau):
Ewch i'r dudalen mewngofnodi (https://login.k8s.example.com) a mewngofnodwch gan ddefnyddio'ch cyfrif GitHub:
Tudalen mewngofnodi
Tudalen mewngofnodi wedi'i hailgyfeirio i GitHub
Dilynwch y cyfarwyddiadau a gynhyrchwyd i gael mynediad
Ar ôl copïo-gludo o'r dudalen we, gallwn ddefnyddio kubectl i reoli adnoddau ein clwstwr:
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"
Ac mae'n gweithio, gall holl ddefnyddwyr GitHub yn ein sefydliad weld adnoddau a mewngofnodi i godau, ond nid oes ganddynt hawliau i'w newid.