Hitelesítés a Kubernetesben a GitHub OAuth és Dex használatával
Egy oktatóanyagot mutatok be a Kubernetes-fürthöz való hozzáférés létrehozásához a Dex, a dex-k8s-authenticator és a GitHub használatával.
Helyi mém az orosz nyelvű Kubernetesből chat-be Telegram
Bevezetés
A Kubernetes segítségével dinamikus környezeteket hozunk létre a fejlesztési és minőségbiztosítási csapat számára. Tehát hozzáférést szeretnénk biztosítani számukra a fürthöz mind az irányítópult, mind a kubectl számára. Az OpenShifttel ellentétben a vanilla Kubernetes nem rendelkezik natív hitelesítéssel, ezért ehhez harmadik féltől származó eszközöket használunk.
Ebben a konfigurációban a következőket használjuk:
GitHub – egyszerűen azért, mert cégünkben GitHubot használunk
Próbáltuk használni a Google OIDC-t, de sajnos sikerült sikertelen csoportokkal indítani őket, így a GitHubbal való integráció elég jól megfelelt nekünk. Csoportleképezés nélkül nem lehet csoportokon alapuló RBAC-házirendeket létrehozni.
Tehát hogyan működik a Kubernetes engedélyezési folyamatunk vizuális megjelenítésben:
Engedélyezési folyamat
Kicsit részletesebben és pontról pontra:
A felhasználó bejelentkezik a dex-k8s-authenticator (login.k8s.example.com)
A dex-k8s-authenticator továbbítja a kérést Dexnek (dex.k8s.example.com)
A Dex átirányítja a GitHub bejelentkezési oldalára
A GitHub előállítja a szükséges engedélyezési információkat, és visszaküldi a Dexnek
A Dex átadja a kapott információkat a dex-k8s-authenticatornak
A felhasználó OIDC tokent kap a GitHubtól
A dex-k8s-authenticator tokent ad hozzá a kubeconfighoz
A kubectl átadja a tokent a KubeAPIServernek
A KubeAPIServer az átadott token alapján ad vissza hozzáférést a kubectl-hez
A felhasználó a kubectl-től kap hozzáférést
Előkészítő intézkedések
Természetesen már telepítve van egy Kubernetes-fürt (k8s.example.com), és előtelepített HELM-mel is érkezik. Van egy szervezetünk is a GitHubon (super-org).
Ha nincs HELM, telepítse Nagyon egyszerű.
Először be kell állítanunk a GitHubot.
Lépjen a szervezeti beállítások oldalára, (https://github.com/organizations/super-org/settings/applications), és hozzon létre egy új alkalmazást (engedélyezett OAuth alkalmazás):
Új alkalmazás létrehozása a GitHubon
Töltse ki a mezőket a szükséges URL-ekkel, például:
Legyen óvatos a linkekkel, fontos, hogy ne veszítse el a perjeleket.
A kitöltött űrlapra válaszul a GitHub generál Client ID и Client secret, tartsa biztonságos helyen, hasznosak lesznek számunkra (például használjuk Boltozat titkok tárolására):
Menj a bejelentkezési oldalra (https://login.k8s.example.com), és jelentkezzen be GitHub-fiókjával:
Bejelentkezési oldal
A bejelentkezési oldal átirányítva a GitHubba
Kövesse a generált utasításokat a hozzáféréshez
A weboldal másolása és beillesztése után a kubectl segítségével kezelhetjük fürt erőforrásainkat:
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"
És működik, a szervezetünkben minden GitHub-felhasználó láthatja az erőforrásokat, és bejelentkezhet a pod-okba, de nincs joguk megváltoztatni azokat.