ඔබගේ LDAP සේවාදායකයට Kubernetes සම්බන්ධ කිරීමට සහ පරිශීලකයින් සහ කණ්ඩායම් ආනයනය කිරීමට Keycloak භාවිතා කරන්නේ කෙසේද යන්න පිළිබඳ කුඩා නිබන්ධනයක්. මෙය ඔබට ඔබගේ පරිශීලකයින් සඳහා RBAC පිහිටුවීමට සහ Kubernetes උපකරණ පුවරුව සහ තමන් විසින්ම බලය පවරන්නේ කෙසේදැයි නොදන්නා අනෙකුත් යෙදුම් ආරක්ෂා කිරීමට auth-proxy භාවිතා කිරීමට ඉඩ සලසයි.
යතුරු ආවරණ ස්ථාපනය
ඔබට දැනටමත් LDAP සේවාදායකයක් ඇතැයි උපකල්පනය කරමු. එය Active Directory, FreeIPA, OpenLDAP හෝ ඕනෑම දෙයක් විය හැකිය. ඔබට LDAP සේවාදායකයක් නොමැති නම්, ප්රතිපත්තිමය වශයෙන් ඔබට Keycloak අතුරුමුහුණත තුළ සෘජුවම පරිශීලකයින් නිර්මාණය කළ හැකිය, නැතහොත් පොදු oidc සපයන්නන් (Google, Github, Gitlab) භාවිතා කළ හැකිය, ප්රතිඵලය බොහෝ දුරට සමාන වනු ඇත.
පළමුවෙන්ම, අපි Keycloak ස්ථාපනය කරමු, ස්ථාපනය වෙන වෙනම හෝ කෙලින්ම Kubernetes පොකුරට සිදු කළ හැකිය, රීතියක් ලෙස, ඔබට Kubernetes පොකුරු කිහිපයක් තිබේ නම්, එය වෙන වෙනම ස්ථාපනය කිරීම පහසු වනු ඇත. අනෙක් අතට, ඔබට සැමවිටම භාවිතා කළ හැකිය
Keycloak දත්ත ගබඩා කිරීම සඳහා, ඔබට දත්ත සමුදායක් අවශ්ය වනු ඇත. පෙරනිමිය වේ h2
(සියලු දත්ත දේශීයව ගබඩා කර ඇත), නමුත් එය භාවිතා කිරීමටද හැකිය postgres
, mysql
හෝ mariadb
.
ඔබ තවමත් Keycloak වෙන වෙනම ස්ථාපනය කිරීමට තීරණය කරන්නේ නම්, ඔබට වඩාත් සවිස්තරාත්මක උපදෙස් සොයාගත හැකිය
සම්මේලනය පිහිටුවීම
ඔක්කොටම කලින් අපි අලුත් රාජධානියක් හදමු. Realm යනු අපගේ යෙදුමේ අවකාශයයි. සෑම යෙදුමකටම විවිධ පරිශීලකයින් සහ අවසර සැකසීම් සමඟ තමන්ගේම ක්ෂේත්රයක් තිබිය හැකිය. ප්රධාන රාජධානිය Keycloak විසින්ම භාවිතා කරන අතර එය වෙනත් ඕනෑම දෙයක් සඳහා භාවිතා කිරීම වැරදියි.
තල්ලු කරන්න රාජධානිය එක් කරන්න
විකල්පය
වටිනාකම
නම
kubernetes
ප්රදර්ශන නාමය
Kubernetes
HTML සංදර්ශක නම
<img src="https://kubernetes.io/images/nav_logo.svg" width="400" >
Kubernetes පෙරනිමියෙන් පරිශීලකයාගේ විද්යුත් තැපෑල තහවුරු කර තිබේද නැද්ද යන්න පරීක්ෂා කරයි. අපි අපගේම LDAP සේවාදායකයක් භාවිතා කරන බැවින්, මෙම චෙක්පත සෑම විටම පාහේ නැවත පැමිණේ false
. අපි Kubernetes හි මෙම සැකසීමේ නිරූපණය අක්රිය කරමු:
පාරිභෝගික විෂය පථයන් -> විද්යුත් තැපෑල -> සිතියම්කරුවන් -> විද්යුත් තැපෑල සත්යාපනය කර ඇත (මකන්න)
දැන් අපි සම්මේලනය පිහිටුවන්න, මේ සඳහා අපි යන්නේ:
පරිශීලක සම්මේලනය -> සපයන්නා එක් කරන්න... -> ldap
FreeIPA සඳහා උදාහරණ සැකසුම මෙන්න:
විකල්පය
වටිනාකම
කොන්සෝල සංදර්ශක නම
freeipa.example.org
වෙළෙන්දා
Red Hat Directory Server
UUID LDAP ගුණාංගය
ipauniqueid
සම්බන්ධතා URL
ldaps://freeipa.example.org
පරිශීලක DN
cn=users,cn=accounts,dc=example,dc=org
ඩීඑන් බන්ධනය කරන්න
uid=keycloak-svc,cn=users,cn=accounts,dc=example,dc=org
අක්තපත්ර බැඳන්න
<password>
Kerberos සත්යාපනයට ඉඩ දෙන්න:
on
Kerberos Realm:
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
LDAP කණ්ඩායම් DN
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/*
පරිපාලක URL
http://kubernetes.example.org/
අපි කණ්ඩායම් සඳහා විෂය පථයක් ද සාදන්නෙමු:
පාරිභෝගික විෂය පථයන් -> නිර්මාණය
විකල්පය
වටිනාකම
සැකිල්ල
No template
නම
groups
සම්පූර්ණ කණ්ඩායම් මාර්ගය
false
ඔවුන් සඳහා සිතියම්කරුවෙකු සකසන්න:
පාරිභෝගික විෂය පථයන් -> කණ්ඩායම් -> සිතියම්කරුවන් -> නිර්මාණය
විකල්පය
වටිනාකම
නම
groups
සිතියම් වර්ගය
Group membership
ටෝකන හිමිකම් නාමය
groups
දැන් අපට අපගේ සේවාදායක විෂය පථය තුළ කණ්ඩායම් සිතියම්කරණය සක්රීය කළ යුතුය:
සේවාලාභීන් -> කුබර්නෙට්ස් -> පාරිභෝගික විෂය පථයන් -> පෙරනිමි සේවාදායක විෂය පථයන්
තෝරන්න කණ්ඩායම් в පවතින සේවාදායක විෂය පථයන්, ඔබන්න තෝරාගත් එකතු කරන්න
දැන් අපි අපගේ යෙදුමේ සත්යාපනය සකසමු, වෙත යන්න:
සේවාලාභීන් -> කුබර්නෙට්ස්
විකල්පය
වටිනාකම
අවසරය සබල කර ඇත
ON
අපි තල්ලු කරමු ඉතිරිකර ගන්න සහ මෙය දැන් පටිත්තෙහි, සේවාදායක සැකසුම සම්පූර්ණ කරයි
සේවාලාභීන් -> කුබර්නෙට්ස් -> අක්තපත්ර
ඔබට ලබා ගත හැක රහස් අපි පසුව භාවිතා කරනු ඇත.
Kubernetes වින්යාස කිරීම
OIDC අවසරය සඳහා Kubernetes පිහිටුවීම ඉතා සුළු දෙයක් වන අතර ඉතා සංකීර්ණ දෙයක් නොවේ. ඔබ කළ යුත්තේ ඔබේ 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 අවසරය වින්යාස කර ඇති Kubernetes පොකුරක් ඔබට දැනටමත් ඇත. එකම කරුණ නම් ඔබේ පරිශීලකයින්ට තවමත් සේවාලාභියෙකු වින්යාස කර නොමැති අතර ඔවුන්ගේම 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 ටෝකනය තුළ) සහ පරිශීලකයින් පිරිසක් සඳහා (ක්ෂේත්ර groups
jwt ටෝකනය තුළ). කණ්ඩායමක් සඳහා අවසර සැකසීමේ උදාහරණයක් මෙන්න kubernetes-default-namespace-admins
:
kubernetes-default-namespace-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 සඳහා තවත් උදාහරණ සොයා ගත හැක
auth-proxy සැකසීම
අපූරු ව්යාපෘතියක් තිබේ
උපකරණ පුවරුව-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
මූලාශ්රය: www.habr.com