ኩበርኔትስን ከኤልዲኤፒ አገልጋይዎ ጋር ለማገናኘት እና የተጠቃሚዎችን እና ቡድኖችን ማስመጣትን ለማዋቀር ኪክሎክን እንዴት መጠቀም እንደሚችሉ ላይ ትንሽ አጋዥ ስልጠና። ይህ RBACን ለተጠቃሚዎችዎ እንዲያዘጋጁ እና የኩበርኔትስ ዳሽቦርድን እና ሌሎች እንዴት እራሳቸውን እንደፈቀዱ የማያውቁ አፕሊኬሽኖችን ለመጠበቅ auth-proxyን እንዲጠቀሙ ይፈቅድልዎታል።
የቁልፍ ካባ መጫኛ
ቀደም ሲል የኤልዲኤፒ አገልጋይ እንዳለህ እናስብ። እሱ አክቲቭ ማውጫ፣ ፍሪIPA፣ OpenLDAP ወይም ሌላ ሊሆን ይችላል። የኤልዲኤፒ አገልጋይ ከሌልዎት በመርህ ደረጃ ተጠቃሚዎችን በቀጥታ በ Keycloak በይነገጽ ውስጥ መፍጠር ወይም የህዝብ ኦዲክ አቅራቢዎችን (Google ፣ Github ፣ Gitlab) መጠቀም ይችላሉ ውጤቱ ከሞላ ጎደል ተመሳሳይ ይሆናል።
በመጀመሪያ ደረጃ, Keycloak ን እራሱ እንጭነው, መጫኑ በተናጥል ሊከናወን ይችላል, ወይም በቀጥታ ወደ Kubernetes ክላስተር, እንደ አንድ ደንብ, ብዙ የኩበርኔትስ ስብስቦች ካሉዎት, በተናጥል ለመጫን ቀላል ይሆናል. በሌላ በኩል, ሁልጊዜም መጠቀም ይችላሉ
የ Keycloak ውሂብን ለማከማቸት, የውሂብ ጎታ ያስፈልግዎታል. ነባሪው ነው። h2
(ሁሉም መረጃዎች በአገር ውስጥ ይከማቻሉ), ግን መጠቀምም ይቻላል postgres
, mysql
ወይም mariadb
.
አሁንም የ Keycloak ን በተናጠል ለመጫን ከወሰኑ በ ውስጥ የበለጠ ዝርዝር መመሪያዎችን ማግኘት ይችላሉ።
ፌዴሬሽን ማዋቀር
መጀመሪያ አዲስ ግዛት እንፍጠር። ግዛት የመተግበሪያችን ቦታ ነው። እያንዳንዱ መተግበሪያ ከተለያዩ ተጠቃሚዎች እና የፍቃድ ቅንብሮች ጋር የራሱ ግዛት ሊኖረው ይችላል። ዋናው ግዛት በ Keycloak በራሱ ጥቅም ላይ ይውላል እና ለሌላ ነገር መጠቀም ስህተት ነው.
ግፋ ግዛት ጨምር
አማራጭ
ዋጋ
ስም
kubernetes
መጠሪያው ስም
Kubernetes
የኤችቲኤምኤል ማሳያ ስም
<img src="https://kubernetes.io/images/nav_logo.svg" width="400" >
Kubernetes በነባሪ የተጠቃሚው ኢሜይል መረጋገጡን ወይም አለመረጋገጡን ያረጋግጣል። የራሳችንን LDAP አገልጋይ እየተጠቀምን ስለሆነ ይህ ቼክ ሁልጊዜ ማለት ይቻላል ይመለሳል false
. የዚህን ቅንብር ውክልና በኩበርኔትስ እናስወግድ፡-
የደንበኛ ወሰኖች -> ኢሜል -> ካርታዎች -> ኢሜል ተረጋግጧል (ሰርዝ)
አሁን ፌዴሬሽኑን እናቋቁማለን፣ ለዚህም እንሄዳለን፡-
የተጠቃሚ ፌዴሬሽን -> አቅራቢ አክል… -> ldap
ለFreeIPA ማዋቀር ምሳሌ እዚህ አለ፡-
አማራጭ
ዋጋ
የኮንሶል ማሳያ ስም
freeipa.example.org
ሻጭ
Red Hat Directory Server
UUID LDAP ባህሪ
ipauniqueid
የግንኙነት URL
ldaps://freeipa.example.org
የተጠቃሚ ዲ.ኤን
cn=users,cn=accounts,dc=example,dc=org
አስረው DN
uid=keycloak-svc,cn=users,cn=accounts,dc=example,dc=org
የቢንድ ምስክርነት
<password>
የከርቤሮስን ማረጋገጥ ፍቀድ፡
on
የከርቤሮስ ግዛት፡
EXAMPLE.ORG
የአገልጋይ ዋና፡
HTTP/[email protected]
ቁልፍ ትር፡
/etc/krb5.keytab
ተጠቃሚው keycloak-svc
በእኛ LDAP አገልጋይ ላይ አስቀድሞ መፈጠር አለበት።
በActive Directory ጉዳይ ላይ በቀላሉ ይምረጡ ሻጭ፡ ንቁ ማውጫ እና አስፈላጊዎቹ መቼቶች በቅጹ ውስጥ በራስ-ሰር እንዲገቡ ይደረጋል.
ግፋ አስቀምጥ
አሁን እንቀጥል፡-
የተጠቃሚ ፌዴሬሽን -> freeipa.example.org -> ካርታዎች -> የመጀመሪያ ስም
አማራጭ
ዋጋ
Ldap ባህሪያት
givenName
አሁን የቡድን ካርታ ስራን አንቃ፡-
የተጠቃሚ ፌዴሬሽን -> freeipa.example.org -> ካርታዎች -> ፈጠረ
አማራጭ
ዋጋ
ስም
groups
የካርታ አይነት
group-ldap-mapper
የኤልዲኤፒ ቡድኖች ዲኤን
cn=groups,cn=accounts,dc=example,dc=org
የተጠቃሚ ቡድን ሰርስሮ ማውጣት ስትራቴጂ
GET_GROUPS_FROM_USER_MEMBEROF_ATTRIBUTE
ይህ የፌዴሬሽኑን አደረጃጀት ያጠናቅቃል፣ ደንበኛን ወደ ማዋቀር እንቀጥል።
የደንበኛ ማዋቀር
አዲስ ደንበኛ እንፍጠር (ተጠቃሚዎችን ከKeycloak የሚቀበል መተግበሪያ)። እንሂድ:
ደንበኞች -> ፈጠረ
አማራጭ
ዋጋ
የደንበኛ መታወቂያ
kubernetes
የመዳረሻ ዓይነት
confidenrial
ስርወ URL
http://kubernetes.example.org/
ትክክለኛ የማዘዋወር URIs
http://kubernetes.example.org/*
አስተዳዳሪ ዩአርኤል
http://kubernetes.example.org/
ለቡድኖች ወሰን እንፈጥራለን፡-
የደንበኛ ወሰኖች -> ፈጠረ
አማራጭ
ዋጋ
አብነት
No template
ስም
groups
ሙሉ የቡድን መንገድ
false
እና ካርታ አዘጋጅላቸው፡-
የደንበኛ ወሰኖች -> ቡድኖች -> ካርታዎች -> ፈጠረ
አማራጭ
ዋጋ
ስም
groups
የካርታ አይነት
Group membership
ማስመሰያ የይገባኛል ጥያቄ ስም
groups
አሁን የቡድን ካርታ በደንበኛ ወሰን ውስጥ ማንቃት አለብን፡-
ደንበኞች -> kubernetes -> የደንበኛ ወሰኖች -> ነባሪ የደንበኛ ወሰን
እንመርጣለን ቡድኖች в የሚገኙ የደንበኛ ወሰን, ይጫኑ የተመረጠውን ያክሉ
አሁን የእኛን መተግበሪያ ማረጋገጫ እናዋቅር፣ ወደሚከተለው ይሂዱ፡-
ደንበኞች -> kubernetes
አማራጭ
ዋጋ
ፍቃድ ነቅቷል።
ON
እንገፋ ማስቀመጥ እና ይሄ የደንበኛ ቅንብርን ያጠናቅቃል, አሁን በትሩ ላይ
ደንበኞች -> kubernetes -> ምስክርነቶች
ማግኘት ትችላለህ ምሥጢራዊ በኋላ የምንጠቀመው.
Kubernetes በማዋቀር ላይ
Kubernetes ለ OIDC ፍቃድ ማዋቀር በጣም ቀላል እና በጣም የተወሳሰበ ነገር አይደለም። የሚያስፈልግህ የOIDC አገልጋይህን የCA ሰርተፍኬት ማስገባት ብቻ ነው። /etc/kubernetes/pki/oidc-ca.pem
እና ለ kube-apiserver አስፈላጊ አማራጮችን ያክሉ.
ይህንን ለማድረግ, ያዘምኑ /etc/kubernetes/manifests/kube-apiserver.yaml
በሁሉም ጌቶቻችሁ ላይ
...
spec:
containers:
- command:
- kube-apiserver
...
- --oidc-ca-file=/etc/kubernetes/pki/oidc-ca.pem
- --oidc-client-id=kubernetes
- --oidc-groups-claim=groups
- --oidc-issuer-url=https://keycloak.example.org/auth/realms/kubernetes
- --oidc-username-claim=email
...
እና በዝማኔው ጊዜ እነዚህን ቅንብሮች ላለማጣት የ kubeadm ውቅረትን በክላስተር ውስጥ ያዘምኑ።
kubectl edit -n kube-system configmaps kubeadm-config
...
data:
ClusterConfiguration: |
apiServer:
extraArgs:
oidc-ca-file: /etc/kubernetes/pki/oidc-ca.pem
oidc-client-id: kubernetes
oidc-groups-claim: groups
oidc-issuer-url: https://keycloak.example.org/auth/realms/kubernetes
oidc-username-claim: email
...
ይህ የ Kubernetes ማዋቀርን ያጠናቅቃል። እነዚህን እርምጃዎች በሁሉም የ Kubernetes ዘለላዎችዎ ላይ መድገም ይችላሉ።
የመጀመሪያ ፍቃድ
ከነዚህ እርምጃዎች በኋላ የOIDC ፍቃድ የተዋቀረ የኩበርኔትስ ክላስተር ይኖረዎታል። ብቸኛው ነጥብ የእርስዎ ተጠቃሚዎች ገና የተዋቀረ ደንበኛ የላቸውም፣ እንዲሁም የራሳቸው kubeconfig። ይህንን ችግር ለመፍታት ከተሳካ ፍቃድ በኋላ የ kubeconfig ን በራስ ሰር ለተጠቃሚዎች ማዋቀር ያስፈልግዎታል።
ይህንን ለማድረግ ተጠቃሚውን እንዲያረጋግጡ እና የተጠናቀቀውን kubeconfig እንዲያወርዱ የሚያስችልዎትን ልዩ የድር መተግበሪያዎችን መጠቀም ይችላሉ። በጣም ምቹ ከሆኑት አንዱ ነው
Kuberos ን ለማዋቀር የ kubeconfig አብነት መግለጽ በቂ ነው እና ከሚከተሉት መለኪያዎች ጋር ያሂዱት።
kuberos https://keycloak.example.org/auth/realms/kubernetes kubernetes /cfg/secret /cfg/template
ለተጨማሪ ዝርዝሮች ይመልከቱ
መጠቀምም ይቻላል
የተገኘው kubeconfig በጣቢያው ላይ ሊረጋገጥ ይችላል users[].user.auth-provider.config.id-token
ከእርስዎ kubeconfig ወደ ጣቢያው ቅፅ እና ግልባጩን ወዲያውኑ ያግኙ።
RBAC ማዋቀር
RBAC ን ሲያዋቅሩ ሁለቱንም የተጠቃሚ ስም (መስክ name
በjwt token) እና ለተጠቃሚዎች ቡድን (መስክ groups
በjwt token)። ለቡድን ፈቃዶችን የማዘጋጀት ምሳሌ እዚህ አለ። kubernetes-default-namespace-admins
:
kubernetes-ነባሪ-ስም ቦታ-admins.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: default-admins
namespace: default
rules:
- apiGroups:
- '*'
resources:
- '*'
verbs:
- '*'
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: kubernetes-default-namespace-admins
namespace: default
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: default-admins
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: Group
name: kubernetes-default-namespace-admins
ለ RBAC ተጨማሪ ምሳሌዎች በ ውስጥ ይገኛሉ
ኦውዝ-ተኪን በማዘጋጀት ላይ
ድንቅ ፕሮጀክት አለ።
ዳሽቦርድ-proxy.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: kubernetes-dashboard-proxy
spec:
replicas: 1
template:
metadata:
labels:
app: kubernetes-dashboard-proxy
spec:
containers:
- args:
- --listen=0.0.0.0:80
- --discovery-url=https://keycloak.example.org/auth/realms/kubernetes
- --client-id=kubernetes
- --client-secret=<your-client-secret-here>
- --redirection-url=https://kubernetes-dashboard.example.org
- --enable-refresh-tokens=true
- --encryption-key=ooTh6Chei1eefooyovai5ohwienuquoh
- --upstream-url=https://kubernetes-dashboard.kube-system
- --resources=uri=/*
image: keycloak/keycloak-gatekeeper
name: kubernetes-dashboard-proxy
ports:
- containerPort: 80
livenessProbe:
httpGet:
path: /oauth/health
port: 80
initialDelaySeconds: 3
timeoutSeconds: 2
readinessProbe:
httpGet:
path: /oauth/health
port: 80
initialDelaySeconds: 3
timeoutSeconds: 2
---
apiVersion: v1
kind: Service
metadata:
name: kubernetes-dashboard-proxy
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: kubernetes-dashboard-proxy
type: ClusterIP
ምንጭ: hab.com