Oténtikasi dina Kubernetes nganggo GitHub OAuth sareng Dex
Kuring nampilkeun ka perhatian Anjeun tutorial pikeun generating aksés ka klaster Kubernetes maké Dex, dex-k8s-authenticator na GitHub.
Meme lokal tina obrolan Kubernetes basa Rusia di telegram
perkenalan
Kami nganggo Kubernetes pikeun nyiptakeun lingkungan dinamis pikeun pamekaran sareng tim QA. Janten urang hoyong masihan aranjeunna aksés kana klaster pikeun dasbor sareng kubectl. Beda sareng OpenShift, vanili Kubernetes henteu gaduh auténtikasi asli, janten kami nganggo alat pihak katilu pikeun ieu.
GitHub - ngan kusabab kami nganggo GitHub di perusahaan kami
Urang diusahakeun make Google OIDC, tapi hanjakalna urang gagal pikeun ngamimitian aranjeunna sareng grup, janten integrasi sareng GitHub cocog sareng kami. Tanpa pemetaan grup, moal mungkin nyieun kawijakan RBAC dumasar kana grup.
Janten, kumaha prosés otorisasina Kubernetes urang tiasa dianggo dina perwakilan visual:
Prosés otorisasina
Sakedik langkung rinci sareng titik-demi titik:
Pamaké asup kana dex-k8s-authenticator (login.k8s.example.com)
dex-k8s-authenticator neraskeun pamundut ka Dex (dex.k8s.example.com)
Dex alihan ka kaca login GitHub
GitHub ngahasilkeun inpormasi otorisasi anu diperyogikeun sareng uih deui ka Dex
Dex ngirimkeun inpormasi anu ditampi ka dex-k8s-authenticator
Pamaké nampi token OIDC ti GitHub
dex-k8s-authenticator nambihan token kana kubeconfig
kubectl ngalirkeun token ka KubeAPIServer
KubeAPIServer mulangkeun aksés ka kubectl dumasar kana token anu diliwatan
Pamaké meunang aksés ti kubectl
Laku préparasi
Tangtosna, urang parantos dipasang klaster Kubernetes (k8s.example.com), sarta ogé hadir kalawan HELM tos dipasang. Urang ogé boga organisasi dina GitHub (super-org).
Upami anjeun teu gaduh HELM, pasang basajan pisan.
Mimiti urang kedah nyetél GitHub.
Buka kaca setelan organisasi, (https://github.com/organizations/super-org/settings/applications) jeung nyieun aplikasi anyar (Otorisasi OAuth App):
Nyieun aplikasi anyar dina GitHub
Eusian kolom sareng URL anu diperyogikeun, contona:
URL halaman utama: https://dex.k8s.example.com
URL panggero balik otorisasi: https://dex.k8s.example.com/callback
Kudu ati kalawan tumbu, hal anu penting teu leungit slashes.
Dina respon kana formulir réngsé, GitHub bakal ngahasilkeun Client ID и Client secret, Simpen di tempat anu aman, aranjeunna bakal mangpaat pikeun urang (contona, urang nganggo lomari wesi pikeun nyimpen Rahasia):
Pindah ka halaman login (https://login.k8s.example.com) sareng lebet nganggo akun GitHub anjeun:
Kaca login
Kaca login dialihkeun ka GitHub
Turutan parentah dihasilkeun pikeun meunangkeun aksés
Saatos nyalin-témpél tina halaman wéb, urang tiasa nganggo kubectl pikeun ngatur sumber kluster urang:
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"
Sareng tiasa dianggo, sadaya pangguna GitHub dina organisasi urang tiasa ningali sumber sareng asup kana pods, tapi aranjeunna henteu ngagaduhan hak pikeun ngarobihana.