Utilitzem Kubernetes per crear entorns dinàmics per a l'equip de desenvolupament i control de qualitat. Per tant, volem donar-los accés al clúster tant per al tauler com per a kubectl. A diferència d'OpenShift, vanilla Kubernetes no té autenticació nativa, de manera que utilitzem eines de tercers per a això.
GitHub: simplement perquè utilitzem GitHub a la nostra empresa
Hem intentat utilitzar Google OIDC, però malauradament va fallar començar-los amb grups, així que la integració amb GitHub ens va anar força bé. Sense mapes de grups, no serà possible crear polítiques RBAC basades en grups.
Aleshores, com funciona el nostre procés d'autorització de Kubernetes en una representació visual:
Procés d'autorització
Una mica més de detall i punt per punt:
L'usuari inicia sessió a dex-k8s-authenticator (login.k8s.example.com)
dex-k8s-authenticator reenvia la sol·licitud a Dex (dex.k8s.example.com)
Dex redirigeix a la pàgina d'inici de sessió de GitHub
GitHub genera la informació d'autorització necessària i la torna a Dex
Dex passa la informació rebuda a dex-k8s-authenticator
L'usuari rep un testimoni OIDC de GitHub
dex-k8s-authenticator afegeix un testimoni a kubeconfig
kubectl passa el testimoni a KubeAPIServer
KubeAPIServer retorna els accessos a kubectl en funció del testimoni passat
L'usuari té accés des de kubectl
Accions preparatòries
Per descomptat, ja tenim instal·lat un clúster de Kubernetes (k8s.example.com), i també ve amb HELM preinstal·lat. També tenim una organització a GitHub (super-org).
Si no teniu HELM, instal·leu-lo molt simple.
Primer hem de configurar GitHub.
Aneu a la pàgina de configuració de l'organització, (https://github.com/organizations/super-org/settings/applications) i creeu una aplicació nova (aplicació OAuth autoritzada):
Creació d'una nova aplicació a GitHub
Ompliu els camps amb els URL necessaris, per exemple:
URL de la pàgina d'inici: https://dex.k8s.example.com
URL de devolució de trucada d'autorització: https://dex.k8s.example.com/callback
Aneu amb compte amb els enllaços, és important no perdre barres.
En resposta a un formulari emplenat, es generarà GitHub Client ID и Client secret, guarda-los en un lloc segur, ens seran útils (per exemple, fem servir Volta per emmagatzemar secrets):
Aneu a la pàgina d'inici de sessió (https://login.k8s.example.com) i inicieu la sessió amb el vostre compte de GitHub:
Pàgina d'inici de sessió
Pàgina d'inici de sessió redirigida a GitHub
Seguiu les instruccions generades per accedir-hi
Després de copiar i enganxar des de la pàgina web, podem utilitzar kubectl per gestionar els recursos del nostre clúster:
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"
I funciona, tots els usuaris de GitHub de la nostra organització poden veure recursos i iniciar sessió als pods, però no tenen drets per canviar-los.