Ég kynni þér kennsluleiðbeiningar til að búa til aðgang að Kubernetes klasa með Dex, dex-k8s-authenticator og GitHub.
Staðbundið meme frá rússnesku Kubernetes spjalla inn Telegram
Inngangur
Við notum Kubernetes til að búa til kraftmikið umhverfi fyrir þróunar- og QA teymið. Þannig að við viljum veita þeim aðgang að þyrpingunni fyrir bæði mælaborðið og kubectl. Ólíkt OpenShift er vanilla Kubernetes ekki með innbyggða auðkenningu, þannig að við notum verkfæri þriðja aðila fyrir þetta.
GitHub - einfaldlega vegna þess að við notum GitHub í fyrirtækinu okkar
Við reyndum að nota Google OIDC, en því miður mistókst að koma þeim af stað með hópa, þannig að samþættingin við GitHub hentaði okkur nokkuð vel. Án hópkortlagningar verður ekki hægt að búa til RBAC stefnur byggðar á hópum.
Svo, hvernig virkar Kubernetes heimildarferlið okkar í sjónrænni framsetningu:
Heimildarferli
Smá smáatriði og lið fyrir lið:
Notandi skráir sig inn á dex-k8s-authenticator (login.k8s.example.com)
dex-k8s-authenticator framsendir beiðnina til Dex (dex.k8s.example.com)
Dex vísar á GitHub innskráningarsíðuna
GitHub býr til nauðsynlegar heimildarupplýsingar og skilar þeim til Dex
Dex sendir mótteknar upplýsingar til dex-k8s-authenticator
Notandinn fær OIDC tákn frá GitHub
dex-k8s-authenticator bætir tákni við kubeconfig
kubectl sendir táknið til KubeAPIServer
KubeAPIServer skilar aðgangi að kubectl byggt á samþykktu tákninu
Notandinn fær aðgang frá kubectl
Undirbúningsstarfsemi
Auðvitað erum við nú þegar með Kubernetes þyrping uppsettan (k8s.example.com), og kemur einnig með HELM foruppsett. Við erum líka með stofnun á GitHub (super-org).
Ef þú ert ekki með HELM skaltu setja það upp mjög einfalt.
Fyrst þurfum við að setja upp GitHub.
Farðu á stillingasíðu fyrirtækisins, (https://github.com/organizations/super-org/settings/applications) og búðu til nýtt forrit (Authorized OAuth App):
Að búa til nýtt forrit á GitHub
Fylltu út reitina með nauðsynlegum vefslóðum, til dæmis:
Farðu varlega með tengla, það er mikilvægt að missa ekki skástrik.
Sem svar við útfylltu eyðublaði mun GitHub búa til Client ID и Client secret, geymdu þau á öruggum stað, þau munu nýtast okkur (til dæmis notum við Vault til að geyma leyndarmál):
Farðu á innskráningarsíðuna (https://login.k8s.example.com) og skráðu þig inn með GitHub reikningnum þínum:
Innskráningarsíða
Innskráningarsíðu vísað á GitHub
Fylgdu útbúnum leiðbeiningum til að fá aðgang
Eftir að hafa afritað límt af vefsíðunni getum við notað kubectl til að stjórna klasaauðlindum okkar:
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"
Og það virkar, allir GitHub notendur í fyrirtækinu okkar geta séð tilföng og skráð sig inn í belg, en þeir hafa ekki réttindi til að breyta þeim.