Kubernetes-todennus GitHub OAuthin ja Dexin avulla
Esitän huomioillesi opetusohjelman, jolla luodaan pääsy Kubernetes-klusteriin Dexin, dex-k8s-authenticatorin ja GitHubin avulla.
Paikallinen meem venäjänkielisestä Kubernetesista chattailee Telegram
Esittely
Käytämme Kubernetesia dynaamisten ympäristöjen luomiseen kehitystiimille ja laadunvarmistukselle. Joten haluamme antaa heille pääsyn klusteriin sekä kojelaudalle että kubectlille. Toisin kuin samassa OpenShiftissä, vanilla Kubernetesilla ei ole alkuperäistä todennusta, joten käytämme tähän kolmannen osapuolen työkaluja.
GitHub – yksinkertaisesti siksi, että käytämme GitHubia yrityksessämme
Yritimme käyttää Google OIDC:tä, mutta valitettavasti yritimme epäonnistui aloittaa ne ryhmillä, joten integraatio GitHubin kanssa sopi meille mainiosti. Ilman ryhmäkartoitusta ei ole mahdollista luoda ryhmäpohjaisia RBAC-käytäntöjä.
Joten miten Kubernetes-valtuutusprosessimme toimii visuaalisessa esityksessä:
Valtuutusprosessi
Hieman tarkemmin ja kohta kohdalta:
Käyttäjä kirjautuu sisään dex-k8s-authenticatoriin (login.k8s.example.com)
GitHub luo tarvittavat valtuutustiedot ja palauttaa ne Dexille
Dex välittää vastaanotetut tiedot dex-k8s-authenticatorille
Käyttäjä saa OIDC-tunnuksen GitHubista
dex-k8s-authenticator lisää tunnuksen kubeconfigiin
kubectl välittää tunnuksen KubeAPIServerille
Välitettyyn tunnukseen perustuva KubeAPIServer palauttaa pääsyn kubectliin
Käyttäjät pääsevät kubectl
Valmistelutoimet
Tietenkin meillä on jo asennettu Kubernetes-klusteri (k8s.example.com), sekä esiasennettu HELM. Meillä on myös organisaatio GitHubissa (super-org).
Jos sinulla ei ole HELMiä, asenna se hyvin yksinkertainen.
Ensin meidän on määritettävä GitHub.
Siirry organisaation asetussivulle, (https://github.com/organizations/super-org/settings/applications) ja luo uusi sovellus (valtuutettu OAuth-sovellus):
Ole varovainen linkkien kanssa, on tärkeää, ettet menetä vinoviivoja.
Vastauksena täytettyyn lomakkeeseen GitHub luo Client ID и Client secret, tallenna ne turvalliseen paikkaan, niistä on meille hyötyä (käytämme esimerkiksi Holvi salaisuuksien säilyttämiseksi):
Siirry kirjautumissivullehttps://login.k8s.example.com) ja kirjaudu sisään GitHub-tilillä:
Valtuutussivu
Valtuutussivu uudelleenohjattiin GitHubille
Noudata luotuja ohjeita päästäksesi sisään
Kun kopioimme ja liitämme verkkosivulta, voimme käyttää kubectlia klusteriresurssien hallintaan:
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 se toimii, kaikki organisaatiomme GitHub-käyttäjät voivat nähdä resurssit ja kirjautua podeihin, mutta heillä ei ole oikeutta muuttaa niitä.