Esitan teie tähelepanu õpetuse, kuidas luua juurdepääs Kubernetese klastrile Dexi, dex-k8s-autentiaatori ja GitHubi abil.
Kohalik meem venekeelsest Kubernetesest vestleb Telegramm
Sissejuhatus
Kasutame Kubernetesi arendusmeeskonna ja kvaliteedikontrolli jaoks dünaamiliste keskkondade loomiseks. Seega tahame anda neile juurdepääsu klastrile nii armatuurlaua kui ka kubectli jaoks. Erinevalt samast OpenShiftist pole vanilje Kubernetesil natiivset autentimist, seega kasutame selleks kolmanda osapoole tööriistu.
GitHub – lihtsalt sellepärast, et kasutame oma ettevõttes GitHubi
Proovisime kasutada Google OIDC-d, kuid kahjuks kasutasime ebaõnnestus et neid rühmadega alustada, nii et GitHubiga integreerimine sobis meile suurepäraselt. Ilma rühma vastendamiseta ei ole võimalik luua rühmapõhiseid RBAC-poliitikaid.
Niisiis, kuidas meie Kubernetese autoriseerimisprotsess töötab visuaalses esituses:
Autoriseerimisprotsess
Natuke täpsemalt ja punkt-punktilt:
Kasutaja logib sisse dex-k8s-authenticatori (login.k8s.example.com)
GitHub genereerib vajaliku autoriseerimise teabe ja tagastab selle Dexile
Dex edastab saadud teabe dex-k8s-authenticatorile
Kasutaja saab GitHubilt OIDC-märgi
dex-k8s-authenticator lisab kubeconfigile märgi
kubectl edastab loa KubeAPIServerile
Edastatud märgil põhinev KubeAPIServer tagastab juurdepääsu kubectlile
Kasutajate juurdepääsud saidilt kubectl
Ettevalmistavad toimingud
Muidugi on meil juba installitud Kubernetese klaster (k8s.example.com), samuti eelinstallitud HELM. Meil on ka organisatsioon GitHubis (super-org).
Kui teil pole HELM-i, installige see väga lihtne.
Kõigepealt peame seadistama GitHubi.
Minge organisatsiooni seadete lehele (https://github.com/organizations/super-org/settings/applications) ja looge uus rakendus (volitatud OAuthi rakendus):
Olge linkidega ettevaatlik, oluline on mitte kaotada kaldkriipse.
Vastuseks täidetud vormile loob GitHub Client ID и Client secret, salvestage need kindlasse kohta, on need meile kasulikud (näiteks kasutame võlvkelder saladuste hoidmiseks):
Mine sisselogimislehelehttps://login.k8s.example.com) ja logige sisse GitHubi kontoga:
Autoriseerimisleht
Autoriseerimisleht suunati GitHubi
Juurdepääsu saamiseks järgige loodud juhiseid
Pärast veebilehelt kopeerimist ja kleepimist saame kasutada kubectli oma klastri ressursside haldamiseks:
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"
Ja see töötab, kõik meie organisatsiooni GitHubi kasutajad näevad ressursse ja logivad sisse, kuid neil pole luba neid muuta.