Ik presintearje jo oandacht in tutorial foar it generearjen fan tagong ta in Kubernetes-kluster mei Dex, dex-k8s-authenticator en GitHub.
Lokale meme fan 'e Russysktalige Kubernetes chat yn Telegram
Ynlieding
Wy brûke Kubernetes om dynamyske omjouwings te meitsjen foar it ûntwikkeling- en QA-team. Dat wy wolle har tagong jaan ta it kluster foar sawol it dashboard as kubectl. Oars as OpenShift hat vanilla Kubernetes gjin native autentikaasje, dus wy brûke hjirfoar ark fan tredden.
GitHub - gewoan om't wy GitHub brûke yn ús bedriuw
Wy besochten Google OIDC te brûken, mar spitigernôch wy mislearre om se mei groepen te begjinnen, dus de yntegraasje mei GitHub paste ús aardich goed. Sûnder groepmapping sil it net mooglik wêze om RBAC-belied te meitsjen basearre op groepen.
Dus, hoe wurket ús Kubernetes-autorisaasjeproses yn in fisuele foarstelling:
Autorisaasjeproses
In bytsje mear detail en punt foar punt:
Brûker logt yn by dex-k8s-authenticator (login.k8s.example.com)
dex-k8s-authenticator stjoert it fersyk troch nei Dex (dex.k8s.example.com)
Dex ferwiist nei de GitHub-oanmeldside
GitHub genereart de nedige autorisaasjeynformaasje en jout it werom nei Dex
Dex jout de ûntfongen ynformaasje troch oan dex-k8s-authenticator
De brûker krijt in OIDC-token fan GitHub
dex-k8s-authenticator foeget token ta oan kubeconfig
kubectl jout it token troch oan KubeAPIServer
KubeAPIServer jout tagongen werom nei kubectl basearre op it trochjûn token
De brûker krijt tagong fan kubectl
Tariedende aksjes
Fansels hawwe wy al in Kubernetes-kluster ynstalleare (k8s.example.com), en komt ek mei HELM foarôf ynstalleare. Wy hawwe ek in organisaasje op GitHub (super-org).
As jo gjin HELM hawwe, ynstallearje it dan hiel simpel.
Earst moatte wy GitHub ynstelle.
Gean nei de organisaasje ynstellings side, (https://github.com/organizations/super-org/settings/applications) en meitsje in nije applikaasje (Authorized OAuth App):
In nije applikaasje oanmeitsje op GitHub
Folje de fjilden yn mei de nedige URL's, bygelyks:
Wês foarsichtich mei keppelings, it is wichtich om slashes net te ferliezen.
As antwurd op in ynfold formulier sil GitHub generearje Client ID и Client secret, hâld se op in feilich plak, se sille nuttich wêze foar ús (wy brûke bygelyks Vault foar it opslaan fan geheimen):
Gean nei de ynlogside (https://login.k8s.example.com) en oanmelde mei jo GitHub-akkount:
Oanmelde side
Oanmelde side omlaat nei GitHub
Folgje de oanmakke ynstruksjes om tagong te krijen
Nei it kopiearjen-plakken fan 'e webside kinne wy kubectl brûke om ús klusterboarnen te behearjen:
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 it wurket, alle GitHub-brûkers yn ús organisaasje kinne boarnen sjen en oanmelde by pods, mar se hawwe gjin rjochten om se te feroarjen.