เช เชฒเซเช เชชเชนเซเชฒเซเชฅเซ เช เชตเชฟเชธเซเชคเซเชค เชเชฐเชตเชพ เชฎเชพเชเซ เชฒเชเชตเชพเชฎเชพเช เชเชตเซเชฏเซ เชเซ
เช เชฒเซเชเชฎเชพเช เชนเซเช เชคเชฎเชจเซ เชเชนเซเชถ เชเซ เชเซเชตเซ เชฐเซเชคเซ เชเชจเซเชธเซเชเซเชฒ เชเชฐเชตเซเช เช เชจเซ เชเซเช เชตเชตเซเช:
- เชเซเชเซเชฒเซเช เชเชชเชจ เชธเซเชฐเซเชธ เชชเซเชฐเซเชเซเชเซเช เชเซ. เชเซ เช เชฐเชเซเช เชฎเชพเชเซ เชธเชฟเชเชเชฒ เชชเซเชเชจเซเช เชเชซ เชเชจเซเชเซเชฐเซ เชชเซเชฐเชฆเชพเชจ เชเชฐเซ เชเซ. LDAP เช เชจเซ OpenID เชธเชนเชฟเชค เชเชฃเชพ เชชเซเชฐเซเชเซเชเซเชฒเซเชธ เชธเชพเชฅเซ เชเชพเชฎ เชเชฐเซ เชเซ เชเซเชฎเชพเช เช เชฎเชจเซ เชฐเชธ เชเซ.
- เชเซเชเซเชฒเซเช เชเซเชเชเซเชชเชฐ - เชฐเชฟเชตเชฐเซเชธ เชชเซเชฐเซเชเซเชธเซ เชเชชเซเชฒเชฟเชเซเชถเชจ เชเซ เชคเชฎเชจเซ เชเซเชเซเชฒเซเช เชฆเซเชตเชพเชฐเชพ เช เชงเชฟเชเซเชคเชคเชพ เชธเชเชเชฒเชฟเชค เชเชฐเชตเชพเชจเซ เชฎเชเชเซเชฐเซ เชเชชเซ เชเซ.
- เชเซเชเชเชตเซ - เชเช เชเชชเซเชฒเชฟเชเซเชถเชจ เชเซ เชเซ kubectl เชฎเชพเชเซ เชเช เชฐเซเชชเชฐเซเชเชพ เชเชจเชฐเซเช เชเชฐเซ เชเซ เชเซเชจเซ เชธเชพเชฅเซ เชคเชฎเซ เชฒเซเช เชเชจ เชเชฐเซ เชถเชเซ เชเซ เช เชจเซ OpenID เชฆเซเชตเชพเชฐเชพ Kubernetes API เชธเชพเชฅเซ เชเชจเซเชเซเช เชเชฐเซ เชถเชเซ เชเซ.
เชเซเชฌเชฐเชจเซเชเซเชธเชฎเชพเช เชชเชฐเชตเชพเชจเชเซเช เชเซเชตเซ เชฐเซเชคเซ เชเชพเชฐเซเชฏ เชเชฐเซ เชเซ.
เช เชฎเซ RBAC เชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพ / เชเซเชฅ เช เชงเชฟเชเชพเชฐเซเชจเซเช เชธเชเชเชพเชฒเชจ เชเชฐเซ เชถเชเซเช เชเซเช, เช เชตเชฟเชถเซ เชฒเซเชเซเชจเซ เชธเชฎเซเชน เชชเชนเซเชฒเซเชฅเซ เช เชฌเชจเชพเชตเชตเชพเชฎเชพเช เชเชตเซเชฏเซ เชเซ, เชนเซเช เชเชจเชพ เชชเชฐ เชตเชฟเชเชคเชตเชพเชฐ เชงเซเชฏเชพเชจ เชเชชเซเชถ เชจเชนเซเช. เชธเชฎเชธเซเชฏเชพ เช เชเซ เชเซ เชคเชฎเซ เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพ เช เชงเชฟเชเชพเชฐเซเชจเซ เชชเซเชฐเชคเชฟเชฌเชเชงเชฟเชค เชเชฐเชตเชพ เชฎเชพเชเซ RBAC เชจเซ เชเชชเชฏเซเช เชเชฐเซ เชถเชเซ เชเซ, เชชเชฐเชเชคเซ Kubernetes เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพเช เชตเชฟเชถเซ เชเชเชเชชเชฃ เชเชพเชฃเชคเชพ เชจเชฅเซ. เชคเซ เชคเชพเชฐเชฃ เชเชชเซ เชเซ เชเซ เช เชฎเชจเซ เชเซเชฌเชฐเชจเซเชเซเชธเชฎเชพเช เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพ เชกเชฟเชฒเชฟเชตเชฐเซ เชฎเชฟเชเซเชจเชฟเชเชฎเชจเซ เชเชฐเซเชฐ เชเซ. เช เชเชฐเชตเชพ เชฎเชพเชเซ, เช เชฎเซ Kuberntes OpenID เชฎเชพเช เชเช เชชเซเชฐเชฆเชพเชคเชพ เชเชฎเซเชฐเซเชถเซเช, เชเซ เชเชนเซเชถเซ เชเซ เชเชตเชพ เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพ เชเชฐเซเชเชฐ เช เชธเซเชคเชฟเชคเซเชตเชฎเชพเช เชเซ, เช เชจเซ เชเซเชฌเชฐเชจเซเชเซเชธ เชชเซเชคเซ เช เชคเซเชจเซ เช เชงเชฟเชเชพเชฐเซ เชเชชเชถเซ.
เชคเชพเชฒเซเชฎ
- เชคเชฎเชพเชฐเซ เชเซเชฌเชฐเชจเซเชเซเชธ เชเซเชฒเชธเซเชเชฐ เช เชฅเชตเชพ เชฎเชฟเชจเซเชเซเชฏเซเชฌเชจเซ เชเชฐเซเชฐ เชชเชกเชถเซ
- เชธเชเซเชฐเชฟเชฏ เชฎเชพเชฐเซเชเชฆเชฐเซเชถเชจ
- เชกเซเชฎเซเชจเซเชธ:
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();
Kubernetes เชฐเซเชชเชฐเซเชเชพเชเชเชฟเชค เชเชฐเซ เชฐเชนเซเชฏเชพ เชเซเช
เชธเชพเชเช เชชเชฐเชฅเซ เช
เชฎเชพเชฐเซเช เชฐเซเช เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐ เชเซเชฏเชพเช เชเชตเซเชฒเซเช เชเซ เช
เชจเซ 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