Ek bied aan u aandag 'n handleiding vir die generering van toegang tot 'n Kubernetes-kluster met behulp van Dex, dex-k8s-authenticator en GitHub.
Plaaslike meme van die Russiestalige Kubernetes gesels in telegram
Inleiding
Ons gebruik Kubernetes om dinamiese omgewings vir die ontwikkelingspan en QA te skep. Ons wil hulle dus toegang gee tot die groepering vir beide die dashboard en kubectl. Anders as dieselfde OpenShift, het vanilla Kubernetes nie inheemse verifikasie nie, daarom gebruik ons derdeparty-nutsgoed hiervoor.
GitHub - bloot omdat ons GitHub in ons maatskappy gebruik
Ons het probeer om Google OIDC te gebruik, maar ons het ongelukkig misluk om hulle met groepe te begin, so die integrasie met GitHub het ons goed gepas. Sonder groepkartering sal dit nie moontlik wees om groepgebaseerde RBAC-beleide te skep nie.
Dus, hoe werk ons Kubernetes-magtigingsproses in 'n visuele voorstelling:
Magtigingsproses
'n Bietjie meer detail en punt vir punt:
Gebruiker meld aan by dex-k8s-authenticator (login.k8s.example.com)
dex-k8s-authenticator herlei die versoek na Dex (dex.k8s.example.com)
Dex herlei na GitHub-aanmeldbladsy
GitHub genereer die vereiste magtigingsinligting en stuur dit terug na Dex
Dex gee die ontvangde inligting deur aan dex-k8s-authenticator
Gebruiker kry OIDC-token van GitHub
dex-k8s-authenticator voeg token by kubeconfig
kubectl gee token aan KubeAPIServer
KubeAPIServer gebaseer op die geslaagde token gee toegang tot kubectl terug
Gebruikerstoegang vanaf kubectl
Voorbereidende aksies
Ons het natuurlik reeds 'n Kubernetes-kluster geïnstalleer (k8s.example.com), sowel as HELM vooraf geïnstalleer. Ons het ook 'n organisasie op GitHub (super-org).
As jy nie HELM het nie, installeer dit baie eenvoudige.
Eerstens moet ons GitHub opstel.
Gaan na die organisasie-instellingsbladsy, (https://github.com/organizations/super-org/settings/applications) en skep 'n nuwe toepassing (gemagtigde OAuth-toepassing):
Skep 'n nuwe toepassing op GitHub
Vul die velde in met die vereiste URL's, byvoorbeeld:
Wees versigtig met skakels, dit is belangrik om nie deeltekens te verloor nie.
In reaksie op die voltooide vorm, sal GitHub genereer Client ID и Client secret, stoor hulle op 'n veilige plek, hulle sal vir ons nuttig wees (ons gebruik byvoorbeeld kluis om geheime te bewaar):
Gaan na die aanmeldbladsyhttps://login.k8s.example.com) en meld aan met 'n GitHub-rekening:
Magtigingsbladsy
Magtigingbladsy herlei na GitHub
Volg die gegenereerde instruksies om toegang te verkry
Nadat ons van die webblad af gekopieer het, kan ons kubectl gebruik om ons groephulpbronne te bestuur:
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"
En dit werk, alle GitHub-gebruikers in ons organisasie kan hulpbronne sien en by peule aanmeld, maar hulle het nie toestemming om dit te verander nie.