Otentikasi ing Kubernetes nggunakake GitHub OAuth lan Dex
Aku menehi perhatian sampeyan tutorial kanggo ngasilake akses menyang cluster Kubernetes nggunakake Dex, dex-k8s-authenticator lan GitHub.
Meme lokal saka obrolan Kubernetes ing basa Rusia Telegram
Pambuka
Kita nggunakake Kubernetes kanggo nggawe lingkungan dinamis kanggo pangembangan lan tim QA. Dadi, kita pengin menehi akses menyang kluster kanggo dashboard lan kubectl. Ora kaya OpenShift, vanilla Kubernetes ora duwe otentikasi asli, mula kita nggunakake alat pihak katelu kanggo iki.
Dadi, kepiye proses wewenang Kubernetes bisa digunakake ing perwakilan visual:
Proses wewenang
Luwih rinci lan titik demi titik:
Pangguna mlebu menyang dex-k8s-authenticator (login.k8s.example.com)
dex-k8s-authenticator nerusake panjalukan menyang Dex (dex.k8s.example.com)
Dex pangalihan menyang kaca mlebu GitHub
GitHub ngasilake informasi wewenang sing dibutuhake lan bali menyang Dex
Dex ngirim informasi sing ditampa menyang dex-k8s-authenticator
Pangguna nampa token OIDC saka GitHub
dex-k8s-authenticator nambah token kanggo kubeconfig
kubectl ngirim token menyang KubeAPIServer
KubeAPIServer ngasilake akses menyang kubectl adhedhasar token liwati
Pangguna entuk akses saka kubectl
Kegiatan Nyiapkeun
Mesthi wae, kita wis nginstal kluster Kubernetes (k8s.example.com), lan uga dilengkapi HELM sing wis diinstal. Kita uga duwe organisasi ing GitHub (super-org).
Yen sampeyan ora duwe HELM, pasang prasaja banget.
Pisanan kita kudu nyiyapake GitHub.
Pindhah menyang kaca setelan organisasi, (https://github.com/organizations/super-org/settings/applications) lan gawe aplikasi anyar (Aplikasi OAuth sing sah):
URL panggilan balik wewenang: https://dex.k8s.example.com/callback
Ati-ati karo pranala, penting ora ilang garis miring.
Nanggepi formulir sing wis rampung, GitHub bakal ngasilake Client ID ΠΈ Client secret, simpen ing papan sing aman, bakal migunani kanggo kita (contone, kita nggunakake Wikipedia kanggo nyimpen rahasia):
Pindhah menyang kaca mlebu (https://login.k8s.example.com) lan mlebu nganggo akun GitHub sampeyan:
kaca mlebu
Kaca mlebu dialihake menyang GitHub
Tindakake pandhuan sing digawe kanggo entuk akses
Sawise nyalin-tempel saka kaca web, kita bisa nggunakake kubectl kanggo ngatur sumber daya kluster:
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"
Lan kerjane, kabeh pangguna GitHub ing organisasi kita bisa ndeleng sumber daya lan mlebu menyang pods, nanging ora duwe hak kanggo ngganti.