เด เดฒเตเดเดจเด เดเดคเดฟเดจเดเด เดตเดฟเดชเตเดฒเตเดเดฐเดฟเดเตเดเตเด เดเดจเตเดจ เดฒเดเตเดทเตเดฏเดคเตเดคเตเดเตเดฏเดพเดฃเต เดเดดเตเดคเดฟเดฏเดคเต
เดเดเตเดเดจเต เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเดพเดฎเตเดจเตเดจเตเด เดเตเตบเดซเดฟเดเตผ เดเตเดฏเตเดฏเดพเดฎเตเดจเตเดจเตเด เด เดฒเตเดเดจเดคเตเดคเดฟเตฝ เดเดพเตป เดจเดฟเดเตเดเดณเตเดเต เดชเดฑเดฏเตเด:
- เดเตเดเตเดฒเตเดเตเดเต เดเดฐเต เดเดชเตเดชเตบ เดธเตเดดเตเดธเต เดชเตเดฐเตเดเดเตเดเดพเดฃเต. เดเดคเต เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดเตพเดเตเดเต เดเดฐเตเดฑเตเดฑ เดเตปเดเตเดฐเดฟ เดชเตเดฏเดฟเดจเตเดฑเต เดจเตฝเดเตเดจเตเดจเต. เดเดเตเดเตพเดเตเดเต เดคเดพเตฝเดชเตเดชเดฐเตเดฏเดฎเตเดณเตเดณ LDAP, OpenID เดเดจเตเดจเดฟเดตเดฏเตเตพเดชเตเดชเตเดเต เดจเดฟเดฐเดตเดงเดฟ เดชเตเดฐเตเดเตเดเตเดเตเดเตเดณเตเดเตพเดเตเดเตเดชเตเดชเด เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเต.
- เดเตเดเตเดฒเตเดเตเดเต เดเตเดฑเตเดฑเตเดเตเดชเตเดชเตผ - เดเตเดเตเดฒเตเดเตเดเต เดตเดดเดฟ เด เดเดเตเดเดพเดฐเด เดธเดฎเดจเตเดตเดฏเดฟเดชเตเดชเดฟเดเตเดเดพเตป เดจเดฟเดเตเดเดณเต เด เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจ เดเดฐเต เดฑเดฟเดตเตเดดเตเดธเต เดชเตเดฐเตเดเตเดธเดฟ เดเดชเตเดฒเดฟเดเตเดเตเดทเตป.
- เดเดพเดเดเตโเดตเต - kubectl-เดจเดพเดฏเดฟ เดเดฐเต เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจ เดเดฐเต เดเดชเตเดฒเดฟเดเตเดเตเดทเตป, เด เดคเดฟเดฒเตเดเต เดจเดฟเดเตเดเตพเดเตเดเต OpenID เดตเดดเดฟ เดฒเตเดเดฟเตป เดเตเดฏเตเดฏเดพเดจเตเด Kubernetes API-เดฒเตเดเตเดเต เดเดฃเดเตเดฑเตเดฑเตเดเตเดฏเตเดฏเดพเดจเตเด เดเดดเดฟเดฏเตเด.
Kubernetes-เตฝ เด เดจเตเดฎเดคเดฟเดเตพ เดเดเตเดเดจเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเต.
เดเตผโเดฌเดฟโเดเดธเดฟ เดเดชเดฏเตเดเดฟเดเตเดเต เดเดเตเดเตพเดเตเดเต เดเดชเดฏเตเดเตเดคเต/เดเตเดฐเตเดชเตเดชเต เด เดตเดเดพเดถเดเตเดเตพ เดเตเดเดพเดฐเตเดฏเด เดเตเดฏเตเดฏเดพเตป เดเดดเดฟเดฏเตเด, เดเดคเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเต เดเดฐเต เดเตเดเตเดเด เดฒเตเดเดจเดเตเดเตพ เดเดคเดฟเดจเดเด เดธเตเดทเตเดเดฟเดเตเดเดฟเดเตเดเตเดฃเตเดเต, เดเดพเตป เดเดคเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเต เดตเดฟเดถเดฆเดฎเดพเดฏเดฟ เดธเดเดธเดพเดฐเดฟเดเตเดเดฟเดฒเตเดฒ. เดเดชเดฏเตเดเตเดคเต เด เดตเดเดพเดถเดเตเดเตพ เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเดเตเดเดพเตป เดจเดฟเดเตเดเตพเดเตเดเต RBAC เดเดชเดฏเตเดเดฟเดเตเดเดพเดฎเตเดจเตเดจเดคเดพเดฃเต เดชเตเดฐเดถเตเดจเด, เดเดจเตเดจเดพเตฝ Kubernetes-เดจเต เดเดชเดฏเตเดเตเดคเดพเดเตเดเดณเต เดเตเดฑเดฟเดเตเดเต เดเดจเตเดจเตเด เด เดฑเดฟเดฏเดฟเดฒเตเดฒ. เดเตเดฌเตผเดจเตเดฑเตเดฑเดธเดฟเตฝ เดเดเตเดเตพเดเตเดเต เดเดฐเต เดเดชเดฏเตเดเตเดคเต เดกเตเดฒเดฟเดตเดฑเดฟ เดธเดเดตเดฟเดงเดพเดจเด เดเดตเดถเตเดฏเดฎเดพเดฃเตเดจเตเดจเต เดเดคเต เดฎเดพเดฑเตเดจเตเดจเต. เดเดคเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เดเดเตเดเตพ Kuberntes OpenID-เดฒเตเดเตเดเต เดเดฐเต เดฆเดพเดคเดพเดตเดฟเดจเต เดเตเตผเดเตเดเตเด, เดเดคเต เด เดคเตเดคเดฐเดฎเตเดฐเต เดเดชเดฏเตเดเตเดคเดพเดตเต เดฏเดฅเดพเตผเดคเตเดฅเดคเตเดคเดฟเตฝ เดเดฃเตเดเตเดจเตเดจเต เดธเตเดเดฟเดชเตเดชเดฟเดเตเดเตเด, เดเตเดเดพเดคเต Kubernetes เดคเดจเตเดจเต เด เดฆเตเดฆเตเดนเดคเตเดคเดฟเดจเต เด เดตเดเดพเดถเดเตเดเตพ เดจเตฝเดเตเด.
เดคเดฏเตเดฏเดพเดฑเดพเดเตเดเตฝ
- เดจเดฟเดเตเดเตพเดเตเดเต เดเดฐเต เดเตเดฌเตผเดจเตเดฑเตเดฑเดธเต เดเตเดฒเดธเตเดฑเตเดฑเดฑเต เดฎเดฟเดจเดฟเดเตเดฏเตเดฌเต เดเดตเดถเตเดฏเดฎเดพเดฃเต
- เดเดเตเดเตเดตเต เดกเดฏเดฑเดเตเดเดฑเดฟ
- เดกเตเดฎเตเดฏเตโเดจเตเดเตพ:
keycloak.example.org
kubernetes-dashboard.example.org
gangway.example.org - เดกเตเดฎเตเดฏเตโเดจเตเดเตพเดเตเดเตเดณเตเดณ เดธเตผเดเตเดเดฟเดซเดฟเดเตเดเดฑเตเดฑเต เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดธเตเดตเดฏเด เดเดชเตเดชเดฟเดเตเด เดธเตผเดเตเดเดฟเดซเดฟเดเตเดเดฑเตเดฑเต
เดธเตเดตเดฏเด เดเดชเตเดชเดฟเดเตเด เดธเตผเดเตเดเดฟเดซเดฟเดเตเดเดฑเตเดฑเต เดเดเตเดเดจเต เดธเตเดทเตโเดเดฟเดเตเดเดพเด เดเดจเตเดจเดคเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเต เดเดพเตป เดตเดฟเดถเดฆเดฎเดพเดฏเดฟ เดชเดฑเดฏเตเดจเตเดจเดฟเดฒเตเดฒ; เดจเดฟเดเตเดเตพ 2 เดธเตผเดเตเดเดฟเดซเดฟเดเตเดเดฑเตเดฑเตเดเตพ เดธเตเดทเตโเดเดฟเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต, เดเดคเดพเดฃเต *.example.org เดกเตเดฎเตเดฏเตโเดจเดฟเดจเดพเดฏเตเดณเตเดณ เดฑเตเดเตเดเตเด (เดธเตผเดเตเดเดฟเดซเดฟเดเตเดเตเดทเตป เด เดคเตเดฑเดฟเดฑเตเดฑเดฟ) เดเตเดฒเดฏเดจเตเดฑเต เดตเตเตฝเดกเตโเดเดพเตผเดกเตเด
เดจเดฟเดเตเดเตพ เดธเตผเดเตเดเดฟเดซเดฟเดเตเดเดฑเตเดฑเตเดเตพ เดธเตเดตเตเดเดฐเดฟเดเตเดเดคเดฟเดจเต เดถเตเดทเด/เดเดดเตเดคเตเดฎเตเดชเตเตพ, เดจเดฟเดเตเดเตพ เดเตเดฒเดฏเดจเตเดฑเต เดธเตผเดเตเดเดฟเดซเดฟเดเตเดเดฑเตเดฑเต เดเตเดฌเตผเดจเตเดฑเตเดฑเดฟเดฒเตเดเตเดเต เดเตเตผเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต; เดเดคเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เด เดคเดฟเดจเดพเดฏเดฟ เดเดฐเต เดฐเดนเดธเตเดฏเด เดธเตเดทเตเดเดฟเดเตเดเตเด:
kubectl create secret tls tls-keycloak --cert=example.org.crt --key=example.org.pem
เด เดเตเดคเตเดคเดคเดพเดฏเดฟ เดเดเตเดเตพ เดเดคเต เดเดเตเดเดณเตเดเต เดเตปเดเตเดฐเตเดธเต เดเตบเดเตเดฐเตเดณเดฑเดฟเดจเดพเดฏเดฟ เดเดชเดฏเตเดเดฟเดเตเดเตเด
เดเตเดเตเดฒเตเดเตเดเต เดเตปเดธเตเดฑเตเดฑเดพเดณเตเดทเตป
เดเดคเดฟเดจเตเดณเตเดณ เดฑเตเดกเดฟเดฎเตเดฏเตเดกเต เดธเตเดฒเตเดฏเตเดทเดจเตเดเตพ, เด เดคเดพเดฏเดคเต เดนเตเตฝเด เดเดพเตผเดเตเดเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเดพเดฃเต เดเดณเตเดชเตเดชเดตเดดเดฟเดฏเตเดจเตเดจเต เดเดพเตป เดคเตเดฐเตเดฎเดพเดจเดฟเดเตเดเต.
เดถเตเดเดฐเด เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดคเต เด เดชเตเดกเตเดฑเตเดฑเต เดเตเดฏเตเดฏเตเด:
helm repo add codecentric https://codecentric.github.io/helm-charts
helm repo update
เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดเดณเตเดณเดเดเตเดเดฎเตเดณเตเดณ เดเดฐเต keycloak.yml เดซเดฏเตฝ เดธเตเดทเตเดเดฟเดเตเดเตเด:
keycloak.yml
keycloak:
# ะะผั ะฐะดะผะธะฝะธัััะฐัะพัะฐ
username: "test_admin"
# ะะฐัะพะปั ะฐะดะผะธะฝะธัััะฐัะพั
password: "admin"
# ะญัะธ ัะปะฐะณะธ ะฝัะถะฝั ััะพ ะฑั ะฟะพะทะฒะพะปะธัั ะทะฐะณััะถะฐัั ะฒ Keycloak ัะบัะธะฟัั ะฟััะผะพ ัะตัะตะท web ะผะพัะดั. ะญัะพ ะฝะฐะผ
ะฟะพะฝะฐะดะพะฑะธัััั ััะพ ะฑั ะฟะพัะธะฝะธัั ะพะดะธะฝ ะฑะฐะณ, ะพ ะบะพัะพัะพะผ ะฝะธะถะต.
extraArgs: "-Dkeycloak.profile.feature.script=enabled -Dkeycloak.profile.feature.upload_scripts=enabled"
# ะะบะปััะฐะตะผ ingress, ัะบะฐะทัะฒะฐะตะผ ะธะผั ั
ะพััะฐ ะธ ัะตััะธัะธะบะฐั ะบะพัะพััะน ะผั ะฟัะตะดะฒะฐัะธัะตะปัะฝะพ ัะพั
ัะฐะฝะธะปะธ ะฒ secrets
ingress:
enabled: true
path: /
annotations:
kubernetes.io/ingress.class: nginx
ingress.kubernetes.io/affinity: cookie
hosts:
- keycloak.example.org
tls:
- hosts:
- keycloak.example.org
secretName: tls-keycloak
# Keycloak ะดะปั ัะฒะพะตะน ัะฐะฑะพัั ััะตะฑัะตั ะฑะฐะทั ะดะฐะฝะฝัั
, ะฒ ัะตััะพะฒัั
ัะตะปัั
ั ัะฐะทะฒะพัะฐัะธะฒะฐั Postgresql ะฟััะผะพ ะฒ Kuberntes, ะฒ ะฟัะพะดะฐะบัะตะฝะต ัะฐะบ ะปัััะต ะฝะต ะดะตะปะฐัั!
persistence:
deployPostgres: true
dbVendor: postgres
postgresql:
postgresUser: keycloak
postgresPassword: ""
postgresDatabase: keycloak
persistence:
enabled: true
เดซเตเดกเดฑเตเดทเตป เดเตเดฐเดฎเตเดเดฐเดฃเด
เด
เดเตเดคเตเดคเดคเดพเดฏเดฟ, เดตเตเดฌเต เดเดจเตเดฑเตผเดซเตเดธเดฟเดฒเตเดเตเดเต เดชเตเดเตเด
เดเดเดคเต เดฎเตเดฒเดฏเดฟเตฝ เดเตเดฒเดฟเดเตเดเต เดเตเดฏเตเดฏเตเด เดฎเดฃเตเดกเดฒเด เดเตเตผเดเตเดเตเด
เดเต
เดตเดฟเดฒ
เดชเตเดฐเต
เดเตเดฌเตเตผเดจเตเดฑเตเดฑเตเดธเต
เดชเตเดฐเดฆเตผเดถเดจ เดจเดพเดฎเด
เดเตเดฌเตเตผเดจเตเดฑเตเดฑเต
เดเดชเดฏเตเดเตเดคเต เดเดฎเตเดฏเดฟเตฝ เดธเตเดฅเดฟเดฐเตเดเดฐเดฃ เดชเดฐเดฟเดถเตเดงเดจ เดชเตเดฐเดตเตผเดคเตเดคเดจเดฐเดนเดฟเดคเดฎเดพเดเตเดเตเด:
เดเตเดฒเดฏเดจเตเดฑเต เดธเตเดเตเดชเตเดชเตเดเตพ โ> เดเดฎเตเดฏเดฟเตฝ โ> เดฎเดพเดชเตเดชเตผเดฎเดพเตผ โ> เดเดฎเตเดฏเดฟเตฝ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดฑเดชเตเดชเดฟเดเตเดเต (เดเดฒเตเดฒเดพเดคเดพเดเตเดเตเด)
ActiveDirectory-เตฝ เดจเดฟเดจเตเดจเต เดเดชเดฏเตเดเตเดคเดพเดเตเดเดณเต เดเดฑเดเตเดเตเดฎเดคเดฟ เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ เดเดเตเดเตพ เดเดฐเต เดซเตเดกเดฑเตเดทเตป เดธเดเตเดเตเดเดฐเดฟเดเตเดเตเดเดฏเดพเดฃเต, เดเดพเตป เดธเตเดเตเดฐเตเตปเดทเตเดเตเดเตเดเตพ เดคเดพเดดเต เดเดเดพเด, เด เดคเต เดเตเดเตเดคเตฝ เดตเตเดฏเดเตเดคเดฎเดพเดเตเดฎเตเดจเตเดจเต เดเดพเตป เดเดฐเตเดคเตเดจเตเดจเต.
เดฏเตเดธเตผ เดซเตเดกเดฑเตเดทเตป โ> เดฆเดพเดคเดพเดตเดฟเดจเต เดเตเตผเดเตเดเตเดโฆ โ> ldap
เดซเตเดกเดฑเตเดทเตป เดเตเดฐเดฎเตเดเดฐเดฃเด
เดเดฒเตเดฒเดพเด เดถเดฐเดฟเดฏเดพเดฃเตเดเตเดเดฟเตฝ, เดฌเดเตเดเตบ เด
เดฎเตผเดคเตเดคเดฟเดฏเดพเตฝ เดเดฒเตเดฒเดพ เดเดชเดฏเตเดเตเดคเดพเดเตเดเดณเตเดฏเตเด เดธเดฎเดจเตเดตเดฏเดฟเดชเตเดชเดฟเดเตเดเตเด เดเดชเดฏเตเดเตเดคเดพเดเตเดเดณเตเดเต เดตเดฟเดเดฏเดเดฐเดฎเดพเดฏ เดเดฑเดเตเดเตเดฎเดคเดฟ เดธเตเดเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจ เดเดฐเต เดธเดจเตเดฆเตเดถเด เดจเดฟเดเตเดเตพ เดเดพเดฃเตเด.
เด เดเตเดคเตเดคเดคเดพเดฏเดฟ เดจเดฎเตเดฎเตเดเต เดเตเดฐเตเดชเตเดชเตเดเดณเต เดฎเดพเดชเตเดชเต เดเตเดฏเตเดฏเดฃเด
เดเดชเดฏเตเดเตเดคเต เดซเตเดกเดฑเตเดทเตป -> ldap_localhost -> เดฎเดพเดชเตเดชเดฑเตเดเตพ -> เดธเตเดทเตเดเดฟเดเตเดเตเด
เดเดฐเต เดฎเดพเดชเตเดชเตผ เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเต
เดเตเดฒเดฏเดจเตเดฑเต เดธเดเตเดเตเดเดฐเดฃเด
เดจเดฟเดเตเดเตพ เดเดฐเต เดเตเดฒเดฏเดจเตเดฑเต เดธเตเดทเตโเดเดฟเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต, เดเตเดเตเดฒเตเดเตเดเดฟเดจเตเดฑเต เด เดเดฟเดธเตเดฅเดพเดจเดคเตเดคเดฟเตฝ เดเดคเต เด เดเดเตเดเดฐเดฟเดเตเดเดชเตเดชเตเดเตเดจเตเดจ เดเดฐเต เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเดพเดฃเต. เดธเตเดเตเดฐเตเตปเดทเตเดเตเดเดฟเดฒเต เดชเตเดฐเดงเดพเดจ เดชเตเดฏเดฟเดจเตเดฑเตเดเตพ เดเดพเตป เดเตเดตเดชเตเดชเดฟเตฝ เดนเตเดฒเตเดฑเตเดฑเต เดเตเดฏเตเดฏเตเด.
เดเตเดฒเดฏเดจเตเดฑเตเดเตพ -> เดธเตเดทเตเดเดฟเดเตเดเตเด
เดเตเดฒเดฏเดจเตเดฑเต เดธเดเตเดเตเดเดฐเดฃเด
เดเตเดฐเตเดชเตเดชเตเดเตพเดเตเดเดพเดฏเดฟ เดจเดฎเตเดเตเดเต เดเดฐเต เดธเตเดเตเดชเตเดชเต เดธเตเดทเตเดเดฟเดเตเดเดพเด:
เดเตเดฒเดฏเดจเตเดฑเต เดธเตเดเตเดชเตเดชเตเดเตพ -> เดธเตเดทเตเดเดฟเดเตเดเตเด
เดเดฐเต เดธเตเดเตเดชเตเดชเต เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเต
เด
เดตเตผเดเตเดเดพเดฏเดฟ เดเดฐเต เดฎเดพเดชเตเดชเตผ เดธเดเตเดเดฎเดพเดเตเดเตเด:
เดเตเดฒเดฏเดจเตเดฑเต เดธเตเดเตเดชเตเดชเตเดเตพ -> เดเตเดฐเตเดชเตเดชเตเดเตพ -> เดฎเดพเดชเตเดชเดฑเตเดเตพ -> เดธเตเดทเตเดเดฟเดเตเดเตเด
เดฎเดพเดชเตเดชเตผ
เดกเดฟเดซเตเตพเดเตเดเต เดเตเดฒเดฏเดจเตเดฑเต เดธเตเดเตเดชเตเดชเตเดเดณเดฟเดฒเตเดเตเดเต เดเดเตเดเดณเตเดเต เดเตเดฐเตเดชเตเดชเตเดเดณเตเดเต เดฎเดพเดชเตเดชเดฟเดเดเต เดเดเตเดเตพ เดเตเตผเดเตเดเตเดจเตเดจเต:
เดเตเดฒเดฏเดจเตเดฑเตเดเตพ -> kubernetes -> เดเตเดฒเดฏเดจเตเดฑเต เดธเตเดเตเดชเตเดชเตเดเตพ -> เดกเดฟเดซเตเตพเดเตเดเต เดเตเดฒเดฏเดจเตเดฑเต เดธเตเดเตเดชเตเดชเตเดเตพ
เดคเดฟเดฐเดเตเดเตเดเตเดเตเดเตเด เดเตเดฐเตเดชเตเดชเตเดเตพ ะฒ เดฒเดญเตเดฏเดฎเดพเดฏ เดเตเดฒเดฏเดจเตเดฑเต เดธเตเดเตเดชเตเดชเตเดเตพเดเตเดฒเดฟเดเตเดเตเดเตเดฏเตเดฏเตเด เดคเดฟเดฐเดเตเดเตเดเตเดคเตเดคเดคเต เดเตเตผเดเตเดเตเด
เดเตเดเตเดฒเตเดเตเดเดฟเตฝ เด เดเดเตเดเดพเดฐเดคเตเดคเดฟเดจเดพเดฏเดฟ เดเดเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจ เดฐเดนเดธเตเดฏเด (เด เดคเต เดเดตเดฟเดเตเดฏเตเดเตเดเดฟเดฒเตเด เดเดดเตเดคเตเด) เดเดเตเดเตพเดเตเดเต เดฒเดญเดฟเดเตเดเตเด:
เดเตเดฒเดฏเดจเตเดฑเตเดเตพ -> kubernetes -> เดเตเดฐเตเดกเตปเดทเตเดฏเดฒเตเดเตพ -> เดฐเดนเดธเตเดฏเด
เดเดคเต เดธเดเตเดเตเดเดฐเดฃเด เดชเตเตผเดคเตเดคเดฟเดฏเดพเดเตเดเตเดจเตเดจเต, เดเดจเตเดจเดพเตฝ เดตเดฟเดเดฏเดเดฐเดฎเดพเดฏ เด
เดเดเตเดเดพเดฐเดคเตเดคเดฟเดจเต เดถเตเดทเด เดเดจเดฟเดเตเดเต 403 เดชเดฟเดถเดเต เดฒเดญเดฟเดเตเดเดชเตเดชเตเตพ เดเดจเดฟเดเตเดเต เดเดฐเต เดชเดฟเดถเดเต เดธเดเดญเดตเดฟเดเตเดเต.
เดชเดฐเดฟเดนเดฐเดฟเดเตเดเตเด:
เดเตเดฒเดฏเดจเตเดฑเต เดธเตเดเตเดชเตเดชเตเดเตพ -> เดฑเตเดณเตเดเตพ -> เดฎเดพเดชเตเดชเตผเดฎเดพเตผ -> เดธเตเดทเตเดเดฟเดเตเดเตเด
เดฎเดพเดชเตเดชเตผ
เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดเตเดกเต
// add current client-id to token audience
token.addAudience(token.getIssuedFor());
// return token issuer as dummy result assigned to iss again
token.getIssuer();
เดเตเดฌเตผเดจเตเดฑเตเดฑเดธเต เดเตเตบเดซเดฟเดเตผ เดเตเดฏเตเดฏเตเดจเตเดจเต
เดธเตเดฑเตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดเดเตเดเดณเตเดเต เดฑเตเดเตเดเต เดธเตผเดเตเดเดฟเดซเดฟเดเตเดเดฑเตเดฑเต เดเดตเดฟเดเตเดฏเดพเดฃเตเดจเตเดจเตเด OIDC เดฆเดพเดคเดพเดตเต เดเดตเดฟเดเตเดฏเดพเดฃเตเดจเตเดจเตเด เดธเตเดเดฟเดชเตเดชเดฟเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต.
เดเดคเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, /etc/kubernetes/manifests/kube-apiserver.yaml เดซเดฏเตฝ เดเดกเดฟเดฑเตเดฑเต เดเตเดฏเตเดฏเตเด
kube-apiserver.yaml
...
spec:
containers:
- command:
- kube-apiserver
...
- --oidc-ca-file=/var/lib/minikube/certs/My_Root.crt
- --oidc-client-id=kubernetes
- --oidc-groups-claim=groups
- --oidc-issuer-url=https://keycloak.example.org/auth/realms/kubernetes
- --oidc-username-claim=email
...
เดเตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดฒเต kubeadm เดเตเตบเดซเดฟเดเดฑเตเดทเตป เด เดชเตเดกเตเดฑเตเดฑเต เดเตเดฏเตเดฏเตเด:
kubeadm config
kubectl edit -n kube-system configmaps kubeadm-config
...
data:
ClusterConfiguration: |
apiServer:
extraArgs:
oidc-ca-file: /var/lib/minikube/certs/My_Root.crt
oidc-client-id: kubernetes
oidc-groups-claim: groups
oidc-issuer-url: https://keycloak.example.org/auth/realms/kubernetes
oidc-username-claim: email
...
auth-proxy เดธเดเตเดเตเดเดฐเดฟเดเตเดเตเดจเตเดจเต
เดจเดฟเดเตเดเดณเตเดเต เดตเตเดฌเต เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดชเดฐเดฟเดฐเดเตเดทเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต, เดจเดฟเดเตเดเตพเดเตเดเต เดเตเดเตเดฒเตเดเตเดเต เดเตเดฑเตเดฑเตเดเตเดชเตเดชเตผ เดเดชเดฏเตเดเดฟเดเตเดเดพเด. เดชเตเดเต เดเดพเดฃเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต เด เดฑเดฟเดตเตเดดเตเดธเต เดชเตเดฐเตเดเตเดธเดฟ เดเดชเดฏเตเดเตเดคเดพเดตเดฟเดจเต เด เดเดเตเดเดพเดฐเด เดจเตฝเดเตเด เดเดจเตเดจเดคเดฟเดจเต เดชเตเดฑเดฎเต, เดนเตเดกเดฑเตเดเดณเดฟเตฝ เดจเดฟเดเตเดเดณเตเดเตเดเตเดฑเดฟเดเตเดเตเดณเตเดณ เดตเดฟเดตเดฐเดเตเดเตพ เดเตปเดกเต เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเดฟเดฒเตเดเตเดเต เดเตเดฎเดพเดฑเตเดเดฏเตเด เดเตเดฏเตเดฏเตเด. เด เดคเดฟเดจเดพเตฝ, เดจเดฟเดเตเดเดณเตเดเต เดเดชเตเดฒเดฟเดเตเดเตเดทเตป OpenID เดชเดฟเดจเตเดคเตเดฃเดฏเตเดเตเดเตเดจเตเดจเตเดตเตเดเตเดเดฟเตฝ, เดเดชเดฏเตเดเตเดคเดพเดตเดฟเดจเต เดเดเดจเดเดฟ เด เดเดเตเดเดพเดฐเด เดฒเดญเดฟเดเตเดเตเด. เดเตเดฌเตผเดจเตเดฑเตเดฑเดธเต เดกเดพเดทเตโเดฌเตเตผเดกเดฟเดจเตเดฑเต เดเดฆเดพเดนเดฐเดฃเด เดจเตเดเตเดเดพเด
Kubernetes เดกเดพเดทเตโเดฌเตเตผเดกเต เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเตเดจเตเดจเต
helm install stable/kubernetes-dashboard --name dashboard -f values_dashboard.yaml
values_dashboard.yaml
enableInsecureLogin: true
service:
externalPort: 80
rbac:
clusterAdminRole: true
create: true
serviceAccount:
create: true
name: 'dashboard-test'
เดเดเตเดธเดธเต เด เดตเดเดพเดถเดเตเดเตพ เดเตเดฐเดฎเตเดเดฐเดฟเดเตเดเตเดจเตเดจเต:
DataOPS เดเตเดฐเตเดชเตเดชเดฟเดฒเต เดเดชเดฏเตเดเตเดคเดพเดเตเดเตพเดเตเดเต เดเตเดฒเดธเตเดฑเตเดฑเตผ เด เดกเตเดฎเดฟเตป เด เดตเดเดพเดถเดเตเดเตพ (เดธเตเดฑเตเดฑเดพเตปเดกเตเตผเดกเต ClusterRole เดเตเดฒเดธเตเดฑเตเดฑเตผ-เด เดกเตเดฎเดฟเตป) เดจเตฝเดเตเดจเตเดจ เดเดฐเต ClusterRoleBinding เดจเดฎเตเดเตเดเต เดธเตเดทเตเดเดฟเดเตเดเดพเด.
kubectl apply -f rbac.yaml
rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: dataops_group
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: Group
name: DataOPS
เดเตเดเตเดฒเตเดเตเดเต เดเตเดฑเตเดฑเตเดเตเดชเตเดชเตผ เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเตเดจเตเดจเต:
helm repo add gabibbo97 https://gabibbo97.github.io/charts/
helm repo update
helm install gabibbo97/keycloak-gatekeeper --version 2.1.0 --name keycloak-gatekeeper -f values_proxy.yaml
values_proxy.yaml
# ะะบะปััะฐะตะผ ingress
ingress:
enabled: true
annotations:
kubernetes.io/ingress.class: nginx
path: /
hosts:
- kubernetes-dashboard.example.org
tls:
- secretName: tls-keycloak
hosts:
- kubernetes-dashboard.example.org
# ะะพะฒะพัะธะผ ะณะดะต ะผั ะฑัะดะตะผ ะฐะฒัะพัะธะทะพะฒัะฒะฐัััั ั OIDC ะฟัะพะฒะฐะนะดะตัะฐ
discoveryURL: "https://keycloak.example.org/auth/realms/kubernetes"
# ะะผั ะบะปะธะตะฝัะฐ ะบะพัะพัะพะณะพ ะผั ัะพะทะดะฐะปะธ ะฒ Keycloak
ClientID: "kubernetes"
# Secret ะบะพัะพััะน ั ะฟัะพัะธะป ะทะฐะฟะธัะฐัั
ClientSecret: "c6ec03b8-d0b8-4cb6-97a0-03becba1d727"
# ะัะดะฐ ะฟะตัะตะฝะฐะฟัะฐะฒะธัั ะฒ ัะปััะฐะต ััะฟะตัะฝะพะน ะฐะฒัะพัะธะทะฐัะธะธ. ะคะพัะผะฐั <SCHEMA>://<SERVICE_NAME>.><NAMESAPCE>.<CLUSTER_NAME>
upstreamURL: "http://dashboard-kubernetes-dashboard.default.svc.cluster.local"
# ะัะพะฟััะบะฐะตะผ ะฟัะพะฒะตัะบั ัะตััะธัะธะบะฐัะฐ, ะตัะปะธ ั ะฝะฐั ัะฐะผะพะฟะพะดะฟะธัะฐะฝะฝัะน
skipOpenidProviderTlsVerify: true
# ะะฐัััะพะนะบะฐ ะฟัะฐะฒ ะดะพัััะฟะฐ, ะฟััะบะฐะตะผ ะฝะฐ ะฒัะต path ะตัะปะธ ะผั ะฒ ะณััะฟะฟะต DataOPS
rules:
- "uri=/*|groups=DataOPS"
เด
เดคเดฟเดจเตเดถเตเดทเด, เดจเดฟเดเตเดเตพ เดฒเตเดเดฟเตป เดเตเดฏเตเดฏเดพเตป เดถเตเดฐเดฎเดฟเดเตเดเตเดฎเตเดชเตเตพ
เดเดพเดเดเตโเดตเต เดเตปเดธเตเดฑเตเดฑเดพเดณเตเดทเตป
เดธเตเดเดฐเตเดฏเดพเตผเดคเตเดฅเด, เดจเดฟเดเตเดเตพเดเตเดเต kubectl-เดจเดพเดฏเดฟ เดเดฐเต เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดซเดฏเตฝ เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจ เดเดฐเต เดเดพเดเดเตโเดตเต เดเตเตผเดเตเดเดพเตป เดเดดเดฟเดฏเตเด, เด เดคเดฟเดจเตเดฑเต เดธเดนเดพเดฏเดคเตเดคเตเดเต เดเดเตเดเตพ เดเดเตเดเดณเตเดเต เดเดชเดฏเตเดเตเดคเดพเดตเดฟเดจเต เดเตเดดเดฟเตฝ Kubernetes-เตฝ เดชเตเดฐเดตเตเดถเดฟเดเตเดเตเด.
helm install --name gangway stable/gangway -f values_gangway.yaml
values_gangway.yaml
gangway:
# ะัะพะธะทะฒะพะปัะฝะพะต ะธะผั ะบะปะฐััะตัะฐ
clusterName: "my-k8s"
# ะะดะต ั ะฝะฐั OIDC ะฟัะพะฒะฐะนะดะตั
authorizeURL: "https://keycloak.example.org/auth/realms/kubernetes/protocol/openid-connect/auth"
tokenURL: "https://keycloak.example.org/auth/realms/kubernetes/protocol/openid-connect/token"
audience: "https://keycloak.example.org/auth/realms/kubernetes/protocol/openid-connect/userinfo"
# ะขะตะพัะธัะธัะตัะบะธ ััะดะฐ ะผะพะถะฝะพ ะดะพะฑะฐะฒะธัั groups ะบะพัะพััะต ะผั ะทะฐะผะฐะฟะธะปะธ
scopes: ["openid", "profile", "email", "offline_access"]
redirectURL: "https://gangway.example.org/callback"
# ะะผั ะบะปะธะตะฝัะฐ
clientID: "kubernetes"
# ะกะตะบัะตั
clientSecret: "c6ec03b8-d0b8-4cb6-97a0-03becba1d727"
# ะัะปะธ ะพััะฐะฒะธัั ะดะตัะพะปัะฝะพะต ะทะฝะฐัะฝะธะต, ัะพ ะทะฐ ะธะผั ะฟะพะปัะทะพะฒะฐัะตะปั ะฑัะดะตั ะฑัะฐััั <b>Frist name</b> <b>Second name</b>, ะฐ ะฟัะธ "sub" ะตะณะพ ะปะพะณะธะฝ
usernameClaim: "sub"
# ะะพะผะตะฝะฝะพะต ะธะผั ะธะปะธ IP ะฐะดัะตัั API ัะตัะฒะตัะฐ
apiServerURL: "https://192.168.99.111:8443"
# ะะบะปััะฐะตะผ Ingress
ingress:
enabled: true
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/proxy-buffer-size: "64k"
path: /
hosts:
- gangway.example.org
tls:
- secretName: tls-keycloak
hosts:
- gangway.example.org
# ะัะปะธ ะธัะฟะพะปัะทัะตะผ ัะฐะผะพะฟะพะดะฟะธัะฐะฝะฝัะน ัะตััะธัะธะบะฐั, ัะพ ะตะณะพ(ะพัะบััััะน ะบะพัะฝะตะฒะพะน ัะตััะธัะธะบะฐั) ะฝะฐะดะพ ัะบะฐะทะฐัั.
trustedCACert: |-
-----BEGIN CERTIFICATE-----
MIIDVzCCAj+gAwIBAgIBATANBgkqhkiG9w0BAQsFADA1MQswCQYDVQQGEwJVUzEQMA4GA1UEChMHRGF0YU9QUzEUMBIGA1UEAxMLbXkgcm9vdCBrZXkwHhcNMjAwMjE0MDkxODAwWhcNMzAwMjE0MDkxODAwWjA1MQswCQYDVQQGEwJVUzEQMA4GA1UEChMHRGF0YU9QUzEUMBIGA1UEAxMLbXkgcm9vdCBrZXkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDyP749PqqIRwNSqaK6qr0Zsi03G4PTCUlgaYTPZuMrwUVPK8xX2dWWs9MPRMOdXpgr8aSTZnVfmelIlVz4D7o2vK5rfmAe9GPcK0WbwKwXyhFU0flS9sU/g46ogHFrk03SZxQAeJhMLfEmAJm8LF5HghtGDs3t4uwGsB95o+lqPLiBvxRB8ZS3jSpYpvPgXAuZWKdZUQ3UUZf0X3hGLp7uIcIwJ7i4MduOGaQEO4cePeEJy9aDAO6qV78YmHbyh9kaW+1DL/Sgq8NmTgHGV6UOnAPKHTnMKXl6KkyUz8uLBGIdVhPxrlzG1EzXresJbJenSZ+FZqm3oLqZbw54Yp5hAgMBAAGjcjBwMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFHISTOU/6BQqqnOZj+1xJfxpjiG0MAsGA1UdDwQEAwIBBjARBglghkgBhvhCAQEEBAMCAAcwHgYJYIZIAYb4QgENBBEWD3hjYSBjZXJ0aWZpY2F0ZTANBgkqhkiG9w0BAQsFAAOCAQEAj7HC8ObibwOLT4ZYmISJZwub9lcE0AZ5cWkPW39j/syhdbbqjK/6jy2D3WUEbR+s1Vson5Ov7JhN5In2yfZ/ByDvBnoj7CP8Q/ZMjTJgwN7j0rgmEb3CTZvnDPAz8Ijw3FP0cjxfoZ1Z0V2F44Ry7gtLJWr06+MztXVyto3aIz1/XbMQnXYlzc3c3B5yUQIy44Ce5aLRVsAjmXNqVRmDJ2QPNLicvrhnUJsO0zFWI+zZ2hc4Ge1RotCrjfOc9hQY63jZJ17myCZ6QCD7yzMzAob4vrgmkD4q7tpGrhPY/gDcE+lUNhC7DO3l0oPy2wsnT2TEn87eyWmDiTFG9zWDew==
-----END CERTIFICATE-----
เดเดคเต เดเดคเตเดชเตเดฒเต เดคเตเดจเตเดจเตเดจเตเดจเต. เดเดฐเต เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดซเดฏเตฝ เดเดเดจเดเดฟ เดกเตเตบเดฒเตเดกเต เดเตเดฏเตเดฏเดพเดจเตเด เดเดฐเต เดเตเดเตเดเด เดเดฎเดพเตปเดกเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเต เด เดคเต เดเดจเดฑเตเดฑเตเดฑเต เดเตเดฏเตเดฏเดพเดจเตเด เดจเดฟเดเตเดเดณเต เด เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเต:
เด
เดตเดฒเดเดฌเด: www.habr.com