เจเจน เจฒเฉเจ เจชเจนเจฟเจฒเจพเจ เจนเฉ 'เจคเฉ เจตเจฟเจธเจฅเจพเจฐ เจเจฐเจจ เจฒเจ เจฒเจฟเจเจฟเจ เจเจฟเจ เจนเฉ
เจเจธ เจฒเฉเจ เจตเจฟเฉฑเจ เจฎเฉเจ เจคเฉเจนเจพเจจเฉเฉฐ เจฆเฉฑเจธเจพเจเจเจพ เจเจฟ เจเจธเจจเฉเฉฐ เจเจฟเจตเฉเจ เจธเจฅเจพเจชเจฟเจค เจ เจคเฉ เจธเฉฐเจฐเจเจฟเจค เจเจฐเจจเจพ เจนเฉ:
- เจเฉเจเจฒเฉเจ เจเฉฑเจ เจเจชเจจ เจธเฉเจฐเจธ เจชเฉเจฐเฉเจเฉเจเจ เจนเฉเฅค เจเฉ เจเจชเจฒเฉเจเฉเจธเจผเจจเจพเจ เจฒเจ เจเฉฑเจ เจธเจฟเฉฐเจเจฒ เจชเฉเจเจเฉฐเจ เจเจซ เจเจเจเจฐเฉ เจชเฉเจฐเจฆเจพเจจ เจเจฐเจฆเจพ เจนเฉเฅค LDAP เจ เจคเฉ OpenID เจธเจฎเฉเจค เจฌเจนเฉเจค เจธเจพเจฐเฉ เจชเฉเจฐเฉเจเฉเจเฉเจฒเจพเจ เจจเจพเจฒ เจเฉฐเจฎ เจเจฐเจฆเจพ เจนเฉ เจเจฟเจธ เจตเจฟเฉฑเจ เจธเจพเจกเฉ เจฆเจฟเจฒเจเจธเจชเฉ เจนเฉเฅค
- เจเฉเจเจฒเฉเจ เจเฉเจเจเฉเจชเจฐ - เจฐเจฟเจตเจฐเจธ เจชเฉเจฐเฉเจเจธเฉ เจเจชเจฒเฉเจเฉเจธเจผเจจ เจเฉ เจคเฉเจนเจพเจจเฉเฉฐ เจเฉเจเจฒเฉเจ เจฆเฉเจเจฐเจพ เจ เจงเจฟเจเจพเจฐ เจจเฉเฉฐ เจเจเฉเจเฉเจฐเจฟเจค เจเจฐเจจ เจฆเฉ เจเจเจฟเจ เจฆเจฟเฉฐเจฆเฉ เจนเฉเฅค
- เจเฉเจเจเจตเฉเจ - เจเฉฑเจ เจเจชเจฒเฉเจเฉเจธเจผเจจ เจเฉ kubectl เจฒเจ เจเฉฑเจ เจธเฉฐเจฐเจเจจเจพ เจคเจฟเจเจฐ เจเจฐเจฆเฉ เจนเฉ เจเจฟเจธ เจจเจพเจฒ เจคเฉเจธเฉเจ เจเจชเจจเจเจเจกเฉ เจฆเฉเจเจฐเจพ เจเฉเจฌเจฐเจจเฉเจเจธ API เจจเจพเจฒ เจฒเฉเจเจเจจ เจเจฐ เจธเจเจฆเฉ เจนเฉ เจ เจคเฉ เจเจจเฉเจเจ เจเจฐ เจธเจเจฆเฉ เจนเฉเฅค
เจเฉเจฌเจฐเจจเฉเจเจธ เจตเจฟเฉฑเจ เจเจเจพเจเจผเจคเจพเจ เจเจฟเจตเฉเจ เจเฉฐเจฎ เจเจฐเจฆเฉเจเจ เจนเจจเฅค
เจ เจธเฉเจ RBAC เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจเจชเจญเฉเจเจคเจพ / เจธเจฎเฉเจน เจ เจงเจฟเจเจพเจฐเจพเจ เจฆเจพ เจชเฉเจฐเจฌเฉฐเจงเจจ เจเจฐ เจธเจเจฆเฉ เจนเจพเจ, เจเจธ เจฌเจพเจฐเฉ เจฒเฉเจเจพเจ เจฆเจพ เจเฉฑเจ เจธเจฎเฉเจน เจชเจนเจฟเจฒเจพเจ เจนเฉ เจฌเจฃเจพเจเจ เจเจพ เจเฉเฉฑเจเจพ เจนเฉ, เจฎเฉเจ เจเจธ เจฌเจพเจฐเฉ เจตเจฟเจธเจฅเจพเจฐ เจตเจฟเฉฑเจ เจจเจนเฉเจ เจธเฉเจเจพเจเจเจพเฅค เจธเจฎเฉฑเจธเจฟเจ เจเจน เจนเฉ เจเจฟ เจคเฉเจธเฉเจ เจเจชเจญเฉเจเจคเจพ เจ เจงเจฟเจเจพเจฐเจพเจ เจจเฉเฉฐ เจธเฉเจฎเจค เจเจฐเจจ เจฒเจ RBAC เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐ เจธเจเจฆเฉ เจนเฉ, เจชเจฐ เจเฉเจฌเจฐเจจเฉเจเจธ เจเจชเจญเฉเจเจคเจพเจตเจพเจ เจฌเจพเจฐเฉ เจเฉเจ เจจเจนเฉเจ เจเจพเจฃเจฆเจพ เจนเฉเฅค เจเจน เจชเจคเจพ เจเจฒเจฆเจพ เจนเฉ เจเจฟ เจธเจพเจจเฉเฉฐ เจเฉเจฌเจฐเจจเฉเจเจธ เจตเจฟเฉฑเจ เจเฉฑเจ เจเจชเจญเฉเจเจคเจพ เจกเจฟเจฒเฉเจตเจฐเฉ เจตเจฟเจงเฉ เจฆเฉ เจฒเฉเฉ เจนเฉเฅค เจ เจเจฟเจนเจพ เจเจฐเจจ เจฒเจ, เจ เจธเฉเจ เจเฉเจฌเจฐเจจเฉเจเจธ เจเจชเจจเจเจเจกเฉ เจตเจฟเฉฑเจ เจเฉฑเจ เจชเฉเจฐเจฆเจพเจคเจพ เจเฉเฉเจพเจเจเฉ, เจเฉ เจเจนเฉเจเจพ เจเจฟ เจ เจเจฟเจนเจพ เจเจชเจญเฉเจเจคเจพ เจ เจธเจฒ เจตเจฟเฉฑเจ เจฎเฉเจเฉเจฆ เจนเฉ, เจ เจคเฉ เจเฉเจฌเจฐเจจเฉเจเจธ เจเฉเจฆ เจเจธเจจเฉเฉฐ เจ เจงเจฟเจเจพเจฐ เจฆเฉเจตเฉเจเจพเฅค
เจธเจฟเจเจฒเจพเจ
- เจคเฉเจนเจพเจจเฉเฉฐ เจเฉเจฌเจฐเจจเฉเจเจธ เจเจฒเฉฑเจธเจเจฐ เจเจพเจ เจฎเจฟเจจเฉเจเจฟเจเจฌ เจฆเฉ เจฒเฉเฉ เจนเฉเจตเฉเจเฉ
- เจเจเจเจฟเจต เจกเจพเจเจฐเฉเจเจเจฐเฉ
- เจกเฉเจฎเฉเจจ:
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 โ> เจชเฉเจฐเจฎเจพเจฃ เจชเฉฑเจคเจฐ โ> เจเฉเจชเจค
เจเจน เจธเฉเจเจ
เจช เจจเฉเฉฐ เจชเฉเจฐเจพ เจเจฐเจฆเจพ เจนเฉ, เจชเจฐ เจฎเฉเจฐเฉ เจเฉเจฒ เจเฉฑเจ เจคเจฐเฉเฉฑเจเฉ เจธเฉ เจเจฆเฉเจ, เจธเจซเจฒ เจชเฉเจฐเจฎเจพเจฃเจฟเจเจคเจพ เจคเฉเจ เจฌเจพเจ
เจฆ, เจฎเฉเจจเฉเฉฐ เจเฉฑเจ เจเจฒเจคเฉ 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 เจธเฉฐเจฐเจเจจเจพ เจจเฉเฉฐ เจ เฉฑเจชเจกเฉเจ เจเจฐเฉ:
kubeadmconfig
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
...
เจชเฉเจฐเจฎเจพเจฃ-เจชเฉเจฐเจพเจเจธเฉ เจธเฉเฉฑเจ เจเจฐ เจฐเจฟเจนเจพ เจนเฉ
เจคเฉเจธเฉเจ เจเจชเจฃเฉ เจตเฉเจฌ เจเจชเจฒเฉเจเฉเจธเจผเจจ เจฆเฉ เจธเฉเจฐเฉฑเจเจฟเจ เจฒเจ เจเฉเจเจฒเฉเจ เจเฉเจเจเฉเจชเจฐ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐ เจธเจเจฆเฉ เจนเฉเฅค เจเจธ เจคเฉฑเจฅ เจคเฉเจ เจเจฒเจพเจตเจพ เจเจฟ เจเจน เจฐเจฟเจตเจฐเจธ เจชเฉเจฐเฉเจเจธเฉ เจชเฉฐเจจเฉ เจจเฉเฉฐ เจฆเจฟเจเจพเจเจฃ เจคเฉเจ เจชเจนเจฟเจฒเจพเจ เจเจชเจญเฉเจเจคเจพ เจจเฉเฉฐ เจ เจงเจฟเจเจพเจฐเจค เจเจฐเฉเจเฉ, เจเจน เจธเจฟเจฐเจฒเฉเจเจพเจ เจตเจฟเฉฑเจ เจ เฉฐเจคเจฎ เจเจชเจฒเฉเจเฉเจธเจผเจจ เจจเฉเฉฐ เจคเฉเจนเจพเจกเฉ เจฌเจพเจฐเฉ เจเจพเจฃเจเจพเจฐเฉ เจตเฉ เจญเฉเจ เจฆเฉเจตเฉเจเฉเฅค เจเจธ เจคเจฐเฉเจนเจพเจ, เจเฉเจเจฐ เจคเฉเจนเจพเจกเฉ เจเจชเจฒเฉเจเฉเจธเจผเจจ OpenID เจฆเจพ เจธเจฎเจฐเจฅเจจ เจเจฐเจฆเฉ เจนเฉ, เจคเจพเจ เจเจชเจญเฉเจเจคเจพ เจจเฉเฉฐ เจคเฉเจฐเฉฐเจค เจ เจงเจฟเจเจพเจฐเจค เจเฉเจคเจพ เจเจพเจเจฆเจพ เจนเฉเฅค เจเฉเจฌเจฐเจจเฉเจเจธ เจกเฉเจธเจผเจฌเฉเจฐเจก เจฆเฉ เจเจฆเจพเจนเจฐเจจ 'เจคเฉ เจเฉเจฐ เจเจฐเฉ
เจเฉเจฌเจฐเจจเฉเจเจธ เจกเฉเจธเจผเจฌเฉเจฐเจก เจธเจฅเจพเจชเจค เจเจฐเจจเจพ
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'
เจชเจนเฉเฉฐเจ เจ เจงเจฟเจเจพเจฐ เจธเฉเฉฑเจ เจเจฐเจจเจพ:
เจเจฒเฉ เจเฉฑเจ ClusterRoleBinding เจฌเจฃเจพเจเจ เจเฉ DataOPS เจธเจฎเฉเจน เจตเจฟเฉฑเจ เจเจชเจญเฉเจเจคเจพเจตเจพเจ เจฒเจ เจเจฒเฉฑเจธเจเจฐ เจเจกเจฎเจฟเจจ เจ เจงเจฟเจเจพเจฐ (เจธเจเฉเจเจกเจฐเจก เจเจฒเฉฑเจธเจเจฐเจฐเฉเจฒ เจเจฒเฉฑเจธเจเจฐ-เจเจกเจฎเจฟเจจ) เจฆเฉเจตเฉเจเจพเฅค
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 เจฒเจ เจเฉฑเจ เจธเฉฐเจฐเจเจจเจพ เจซเจพเจเจฒ เจคเจฟเจเจฐ เจเจฐเฉเจเจพ, เจเจฟเจธเจฆเฉ เจฎเจฆเจฆ เจจเจพเจฒ เจ เจธเฉเจ เจเจชเจฃเฉ เจเจชเจญเฉเจเจคเจพ เจฆเฉ เจ เจงเฉเจจ เจเฉเจฌเจฐเจจเฉเจเจธ เจตเจฟเฉฑเจ เจเจพเจตเจพเจเจเฉเฅค
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