உங்கள் LDAP சேவையகத்துடன் Kubernetes ஐ இணைப்பதற்கும் பயனர்கள் மற்றும் குழுக்களின் இறக்குமதியை அமைப்பதற்கும் Keycloak ஐ எவ்வாறு பயன்படுத்துவது என்பது பற்றிய ஒரு சிறிய பயிற்சி. இது உங்கள் பயனர்களுக்கு RBAC ஐ அமைக்கவும், Kubernetes Dashboard மற்றும் தங்களை எவ்வாறு அங்கீகரிப்பது என்று தெரியாத பிற பயன்பாடுகளைப் பாதுகாக்க auth-proxy ஐப் பயன்படுத்தவும் உங்களை அனுமதிக்கும்.
கீக்ளோக் நிறுவல்
உங்களிடம் ஏற்கனவே LDAP சர்வர் உள்ளது என்று வைத்துக்கொள்வோம். அது ஆக்டிவ் டைரக்டரி, ஃப்ரீஐபிஏ, ஓபன்எல்டிஏபி அல்லது எதுவாக இருந்தாலும் இருக்கலாம். உங்களிடம் LDAP சேவையகம் இல்லையென்றால், கொள்கையளவில் நீங்கள் Keycloak இடைமுகத்தில் நேரடியாக பயனர்களை உருவாக்கலாம் அல்லது பொது oidc வழங்குநர்களைப் பயன்படுத்தலாம் (Google, Github, Gitlab), விளைவு கிட்டத்தட்ட ஒரே மாதிரியாக இருக்கும்.
முதலில், Keycloak ஐ நிறுவுவோம், நிறுவலை தனித்தனியாக அல்லது நேரடியாக Kubernetes கிளஸ்டருக்குச் செய்யலாம், ஒரு விதியாக, உங்களிடம் பல Kubernetes கிளஸ்டர்கள் இருந்தால், அதை தனித்தனியாக நிறுவுவது எளிதாக இருக்கும். மறுபுறம், நீங்கள் எப்போதும் பயன்படுத்தலாம்
Keycloak தரவைச் சேமிக்க, உங்களுக்கு ஒரு தரவுத்தளம் தேவைப்படும். இயல்புநிலை ஆகும் h2
(அனைத்து தரவும் உள்ளூரில் சேமிக்கப்படுகிறது), ஆனால் அதைப் பயன்படுத்தவும் முடியும் postgres
, mysql
அல்லது mariadb
.
நீங்கள் இன்னும் Keycloak ஐ தனித்தனியாக நிறுவ முடிவு செய்தால், நீங்கள் இன்னும் விரிவான வழிமுறைகளைக் காணலாம்
கூட்டமைப்பு அமைப்பு
முதலில், ஒரு புதிய சாம்ராஜ்யத்தை உருவாக்குவோம். சாம்ராஜ்யம் என்பது எங்கள் பயன்பாட்டின் இடம். ஒவ்வொரு பயன்பாடும் வெவ்வேறு பயனர்கள் மற்றும் அங்கீகார அமைப்புகளுடன் அதன் சொந்த மண்டலத்தைக் கொண்டிருக்கலாம். முதன்மை சாம்ராஜ்யம் கீக்ளோக்கால் பயன்படுத்தப்படுகிறது மற்றும் அதை வேறு எதற்கும் பயன்படுத்துவது தவறானது.
செய்தியாளர் சாம்ராஜ்யத்தைச் சேர்க்கவும்
விருப்பத்தை
மதிப்பு
பெயர்
kubernetes
காட்சி பெயர்
Kubernetes
HTML காட்சி பெயர்
<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
டிஎன் பைண்ட்
uid=keycloak-svc,cn=users,cn=accounts,dc=example,dc=org
நற்சான்றிதழை பிணைக்கவும்
<password>
Kerberos அங்கீகாரத்தை அனுமதி:
on
கெர்பரோஸ் சாம்ராஜ்யம்:
EXAMPLE.ORG
சேவையக முதன்மை:
HTTP/[email protected]
முக்கிய தாவல்:
/etc/krb5.keytab
பயனர் keycloak-svc
எங்கள் LDAP சேவையகத்தில் முன்கூட்டியே உருவாக்கப்பட வேண்டும்.
செயலில் உள்ள கோப்பகத்தின் விஷயத்தில், வெறுமனே தேர்ந்தெடுக்கவும் விற்பனையாளர்: செயலில் உள்ள அடைவு மற்றும் தேவையான அமைப்புகள் தானாகவே படிவத்தில் செருகப்படும்.
செய்தியாளர் சேமி
இப்போது தொடரலாம்:
பயனர் கூட்டமைப்பு -> 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
இது கூட்டமைப்பு அமைப்பை நிறைவு செய்கிறது, கிளையண்டை அமைப்பதற்கு செல்லலாம்.
கிளையண்ட் அமைப்பு
புதிய கிளையண்டை உருவாக்குவோம் (கீக்ளோக்கிலிருந்து பயனர்களைப் பெறும் பயன்பாடு). போகலாம்:
வாடிக்கையாளர்கள் -> உருவாக்கு
விருப்பத்தை
மதிப்பு
வாடிக்கையாளர் ஐடி
kubernetes
அணுகல் வகை
confidenrial
ரூட் URL
http://kubernetes.example.org/
சரியான வழிமாற்று URIகள்
http://kubernetes.example.org/*
நிர்வாக URL
http://kubernetes.example.org/
குழுக்களுக்கான நோக்கத்தையும் நாங்கள் உருவாக்குவோம்:
வாடிக்கையாளர் நோக்கங்கள் -> உருவாக்கு
விருப்பத்தை
மதிப்பு
டெம்ப்ளேட்
No template
பெயர்
groups
முழு குழு பாதை
false
அவர்களுக்காக ஒரு வரைபடத்தை அமைக்கவும்:
வாடிக்கையாளர் நோக்கங்கள் -> குழுக்கள் -> வரைபடங்கள் -> உருவாக்கு
விருப்பத்தை
மதிப்பு
பெயர்
groups
மேப்பர் வகை
Group membership
டோக்கன் உரிமைகோரல் பெயர்
groups
இப்போது எங்கள் கிளையன்ட் ஸ்கோப்பில் குழு மேப்பிங்கை இயக்க வேண்டும்:
வாடிக்கையாளர்கள் -> குபர்னெட்ஸ் -> வாடிக்கையாளர் நோக்கங்கள் -> இயல்புநிலை கிளையன்ட் ஸ்கோப்கள்
நாம் தேர்வு செய்கிறோம் குழுக்கள் в கிடைக்கும் கிளையண்ட் ஸ்கோப்கள், அச்சகம் தேர்ந்தெடுக்கப்பட்டதைச் சேர்க்கவும்
இப்போது எங்கள் பயன்பாட்டின் அங்கீகாரத்தை அமைப்போம், இதற்குச் செல்லவும்:
வாடிக்கையாளர்கள் -> குபர்னெட்ஸ்
விருப்பத்தை
மதிப்பு
அங்கீகாரம் இயக்கப்பட்டது
ON
தள்ளுவோம் காப்பாற்ற இது கிளையன்ட் அமைப்பை நிறைவு செய்கிறது, இப்போது தாவலில் உள்ளது
வாடிக்கையாளர்கள் -> குபர்னெட்ஸ் -> சான்றுகளை
நீங்கள் பெற முடியும் இரகசிய நாங்கள் பின்னர் பயன்படுத்துவோம்.
குபெர்னெட்ஸை உள்ளமைக்கிறது
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
...
இது குபெர்னெட்ஸ் அமைப்பை நிறைவு செய்கிறது. உங்கள் அனைத்து குபெர்னெட்ஸ் கிளஸ்டர்களிலும் இந்தப் படிகளை மீண்டும் செய்யலாம்.
ஆரம்ப அங்கீகாரம்
இந்தப் படிகளுக்குப் பிறகு, 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 டோக்கனில்) மற்றும் ஒரு குழு பயனர்களுக்கு (புலம் 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 க்கான கூடுதல் எடுத்துக்காட்டுகளைக் காணலாம்
அங்கீகார ப்ராக்ஸியை அமைத்தல்
ஒரு அற்புதமான திட்டம் உள்ளது
dashboard-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