āĻ†āĻŽāĻ°āĻž Kubernetes āĻ LDAP āĻ…āĻ¨ā§āĻŽā§‹āĻĻāĻ¨ āĻŦā§‡āĻāĻ§ā§‡ āĻĻāĻŋāĻ‡

āĻ†āĻŽāĻ°āĻž Kubernetes āĻ LDAP āĻ…āĻ¨ā§āĻŽā§‹āĻĻāĻ¨ āĻŦā§‡āĻāĻ§ā§‡ āĻĻāĻŋāĻ‡

āĻ†āĻĒāĻ¨āĻžāĻ° LDAP āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ Kubernetes āĻ¸āĻ‚āĻ¯ā§‹āĻ— āĻ•āĻ°āĻ¤ā§‡ āĻāĻŦāĻ‚ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€ āĻāĻŦāĻ‚ āĻ—ā§‹āĻˇā§āĻ ā§€āĻ° āĻ†āĻŽāĻĻāĻžāĻ¨āĻŋ āĻ¸ā§‡āĻŸ āĻ†āĻĒ āĻ•āĻ°āĻ¤ā§‡ āĻ•ā§€āĻ•ā§āĻ˛ā§‹āĻ• āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻšāĻ¯āĻŧ āĻ¤āĻžāĻ° āĻāĻ•āĻŸāĻŋ āĻ›ā§‹āĻŸ āĻŸāĻŋāĻ‰āĻŸā§‹āĻ°āĻŋāĻ¯āĻŧāĻžāĻ˛āĨ¤ āĻāĻŸāĻŋ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ†āĻĒāĻ¨āĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻĻā§‡āĻ° āĻœāĻ¨ā§āĻ¯ RBAC āĻ¸ā§‡āĻŸ āĻ†āĻĒ āĻ•āĻ°āĻ¤ā§‡ āĻāĻŦāĻ‚ Kubernetes āĻĄā§āĻ¯āĻžāĻļāĻŦā§‹āĻ°ā§āĻĄ āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨āĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ¸ā§āĻ°āĻ•ā§āĻˇāĻŋāĻ¤ āĻ•āĻ°āĻ¤ā§‡ auth-proxy āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻ…āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§‡āĻŦā§‡ āĻ¯ā§‡āĻ—ā§āĻ˛āĻŋ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻ¨āĻŋāĻœā§‡āĻĻā§‡āĻ° āĻ…āĻ¨ā§āĻŽā§‹āĻĻāĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻœāĻžāĻ¨ā§‡ āĻ¨āĻžā§ˇ

āĻ•ā§€āĻ•ā§āĻ˛ā§‹āĻ• āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ā§‡āĻļāĻ¨

āĻ§āĻ°ā§āĻ¨ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ•āĻžāĻ›ā§‡ āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡āĻ‡ āĻāĻ•āĻŸāĻŋ LDAP āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻ†āĻ›ā§‡āĨ¤ āĻāĻŸāĻŋ āĻ…ā§āĻ¯āĻžāĻ•ā§āĻŸāĻŋāĻ­ āĻĄāĻŋāĻ°ā§‡āĻ•ā§āĻŸāĻ°āĻŋ, āĻĢā§āĻ°āĻŋāĻ†āĻ‡āĻĒāĻŋāĻ, āĻ“āĻĒā§‡āĻ¨āĻāĻ˛āĻĄāĻŋāĻāĻĒāĻŋ āĻŦāĻž āĻ¯ā§‡ āĻ•ā§‹āĻ¨āĻ“ āĻ•āĻŋāĻ›ā§ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ¯āĻĻāĻŋ LDAP āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻ¨āĻž āĻĨāĻžāĻ•ā§‡, āĻ¤āĻŦā§‡ āĻ¨ā§€āĻ¤āĻŋāĻ—āĻ¤āĻ­āĻžāĻŦā§‡ āĻ†āĻĒāĻ¨āĻŋ āĻ•ā§€āĻ•ā§āĻ˛ā§‹āĻ• āĻ‡āĻ¨ā§āĻŸāĻžāĻ°āĻĢā§‡āĻ¸ā§‡ āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨, āĻŦāĻž āĻ¸āĻ°ā§āĻŦāĻœāĻ¨ā§€āĻ¨ ODC āĻĒā§āĻ°āĻĻāĻžāĻ¨āĻ•āĻžāĻ°ā§€ (Google, Github, Gitlab) āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨, āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻĒā§āĻ°āĻžāĻ¯āĻŧ āĻāĻ•āĻ‡ āĻšāĻŦā§‡āĨ¤

āĻĒā§āĻ°āĻĨāĻŽāĻ¤, āĻ†āĻ¸ā§āĻ¨ āĻ•ā§€āĻ•ā§āĻ˛ā§‹āĻ• āĻ¨āĻŋāĻœā§‡āĻ‡ āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻ•āĻ°āĻŋ, āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ā§‡āĻļāĻ¨āĻŸāĻŋ āĻ†āĻ˛āĻžāĻĻāĻžāĻ­āĻžāĻŦā§‡ āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡, āĻŦāĻž āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻ•ā§āĻŦāĻžāĻ°āĻ¨ā§‡āĻŸāĻ¸ āĻ•ā§āĻ˛āĻžāĻ¸ā§āĻŸāĻžāĻ°ā§‡, āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ¯āĻŧāĻŽ āĻšāĻŋāĻ¸āĻžāĻŦā§‡, āĻ†āĻĒāĻ¨āĻžāĻ° āĻ¯āĻĻāĻŋ āĻŦā§‡āĻļ āĻ•āĻ¯āĻŧā§‡āĻ•āĻŸāĻŋ āĻ•ā§āĻŦāĻžāĻ°āĻ¨ā§‡āĻŸāĻ¸ āĻ•ā§āĻ˛āĻžāĻ¸ā§āĻŸāĻžāĻ° āĻĨāĻžāĻ•ā§‡ āĻ¤āĻŦā§‡ āĻāĻŸāĻŋ āĻ†āĻ˛āĻžāĻĻāĻžāĻ­āĻžāĻŦā§‡ āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻ•āĻ°āĻž āĻ¸āĻšāĻœ āĻšāĻŦā§‡āĨ¤ āĻ…āĻ¨ā§āĻ¯āĻĻāĻŋāĻ•ā§‡, āĻ†āĻĒāĻ¨āĻŋ āĻ¸āĻ°ā§āĻŦāĻĻāĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ āĻ…āĻĢāĻŋāĻ¸āĻŋāĻ¯āĻŧāĻžāĻ˛ āĻšā§‡āĻ˛āĻŽ āĻšāĻžāĻ°ā§āĻŸ āĻāĻŦāĻ‚ āĻāĻŸāĻŋ āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ•ā§āĻ˛āĻžāĻ¸ā§āĻŸāĻžāĻ°ā§‡ āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻ•āĻ°ā§āĻ¨āĨ¤

āĻ•ā§€āĻ•ā§āĻ˛ā§‹āĻ• āĻĄā§‡āĻŸāĻž āĻ¸āĻžā§āĻšāĻ¯āĻŧ āĻ•āĻ°āĻ¤ā§‡ āĻ†āĻĒāĻ¨āĻžāĻ° āĻāĻ•āĻŸāĻŋ āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻšāĻŦā§‡āĨ¤ āĻĄāĻŋāĻĢāĻ˛ā§āĻŸ āĻšāĻ¯āĻŧ h2 (āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĄā§‡āĻŸāĻž āĻ¸ā§āĻĨāĻžāĻ¨ā§€āĻ¯āĻŧāĻ­āĻžāĻŦā§‡ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ), āĻ¤āĻŦā§‡ āĻāĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ“ āĻ¸āĻŽā§āĻ­āĻŦ postgres, mysql āĻŦāĻž mariadb.
āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻāĻ–āĻ¨āĻ“ āĻ†āĻ˛āĻžāĻĻāĻžāĻ­āĻžāĻŦā§‡ āĻ•ā§€āĻ•ā§āĻ˛ā§‹āĻ• āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨ā§‡āĻ¨, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻ†āĻĒāĻ¨āĻŋ āĻ†āĻ°āĻ“ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤ āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļāĻžāĻŦāĻ˛ā§€ āĻĒā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ āĻ…āĻĢāĻŋāĻ¸āĻŋāĻ¯āĻŧāĻžāĻ˛ āĻĄāĻ•ā§āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāĻ¨.

āĻĢā§‡āĻĄāĻžāĻ°ā§‡āĻļāĻ¨ āĻ¸ā§‡āĻŸāĻ†āĻĒ

āĻĒā§āĻ°āĻĨāĻŽāĻ¤, āĻ†āĻ¸ā§āĻ¨ āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ°āĻžāĻœā§āĻ¯ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻŋāĨ¤ āĻ°āĻžāĻœā§āĻ¯ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ†āĻŦā§‡āĻĻāĻ¨ā§‡āĻ° āĻ¸ā§āĻĨāĻžāĻ¨āĨ¤ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€ āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āĻŽā§‹āĻĻāĻ¨ āĻ¸ā§‡āĻŸāĻŋāĻ‚āĻ¸ āĻ¸āĻš āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ā§‡āĻ° āĻ¨āĻŋāĻœāĻ¸ā§āĻŦ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ° āĻĨāĻžāĻ•āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤ āĻŽā§‚āĻ˛ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°āĻŸāĻŋ āĻ•ā§€āĻ•ā§āĻ˛ā§‹āĻ• āĻ¨āĻŋāĻœā§‡āĻ‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āĻ¯ āĻ•āĻŋāĻ›ā§āĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ­ā§āĻ˛āĨ¤

āĻ§āĻžāĻ•ā§āĻ•āĻž āĻ°āĻžāĻœāĻ¤ā§āĻŦ āĻ¯ā§‹āĻ— āĻ•āĻ°ā§āĻ¨

āĻĒāĻ›āĻ¨ā§āĻĻ
āĻŽā§‚āĻ˛ā§āĻ¯

āĻ¨āĻžāĻŽ
kubernetes

āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻ¨ āĻ¨āĻžāĻŽ
Kubernetes

HTML āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻ¨ā§‡āĻ° āĻ¨āĻžāĻŽ
<img src="https://kubernetes.io/images/nav_logo.svg" width="400" >

āĻ•ā§āĻŦāĻžāĻ°āĻ¨ā§‡āĻŸāĻ¸ āĻĄāĻŋāĻĢāĻ˛ā§āĻŸāĻ°ā§‚āĻĒā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ° āĻ‡āĻŽā§‡āĻ˛ āĻ¨āĻŋāĻļā§āĻšāĻŋāĻ¤ āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ āĻ•āĻŋāĻ¨āĻž āĻ¤āĻž āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ•āĻ°ā§‡āĨ¤ āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻ†āĻŽāĻ°āĻž āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ¨āĻŋāĻœāĻ¸ā§āĻŦ LDAP āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ›āĻŋ, āĻāĻ‡ āĻšā§‡āĻ•āĻŸāĻŋ āĻĒā§āĻ°āĻžāĻ¯āĻŧ āĻ¸āĻŦāĻ¸āĻŽāĻ¯āĻŧāĻ‡ āĻĢāĻŋāĻ°ā§‡ āĻ†āĻ¸āĻŦā§‡ false. āĻ†āĻ¸ā§āĻ¨ Kubernetes-āĻ āĻāĻ‡ āĻ¸ā§‡āĻŸāĻŋāĻ‚āĻŸāĻŋāĻ° āĻ‰āĻĒāĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻž āĻ…āĻ•ā§āĻˇāĻŽ āĻ•āĻ°āĻŋ:

āĻ•ā§āĻ˛āĻžāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ āĻ¸ā§āĻ•ā§‹āĻĒ -> āĻ‡-āĻŽā§‡āĻ‡āĻ˛ -> āĻŽā§āĻ¯āĻžāĻĒāĻžāĻ°āĻ¸ -> āĻ‡āĻŽā§‡āĻ‡āĻ˛ āĻ¯āĻžāĻšāĻžāĻ‡ (āĻŽā§āĻ›ā§‡ āĻĢā§‡āĻ˛āĻž)

āĻāĻ–āĻ¨ āĻĢā§‡āĻĄāĻžāĻ°ā§‡āĻļāĻ¨ āĻ¸ā§‡āĻŸ āĻ†āĻĒ āĻ•āĻ°āĻž āĻ¯āĻžāĻ•, āĻāĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻŽāĻ°āĻž āĻ¯āĻžāĻ‡:

āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€ āĻĢā§‡āĻĄāĻžāĻ°ā§‡āĻļāĻ¨ -> āĻĒā§āĻ°āĻĻāĻžāĻ¨āĻ•āĻžāĻ°ā§€ āĻ¯ā§‹āĻ— āĻ•āĻ°ā§āĻ¨... -> 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/*

āĻ…ā§āĻ¯āĻžāĻĄāĻŽāĻŋāĻ¨ āĻ‡āĻ‰āĻ†āĻ°āĻāĻ˛
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
...

āĻāĻŸāĻŋ Kubernetes āĻ¸ā§‡āĻŸāĻ†āĻĒ āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻ•āĻ°ā§‡āĨ¤ āĻ†āĻĒāĻ¨āĻŋ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ Kubernetes āĻ•ā§āĻ˛āĻžāĻ¸ā§āĻŸāĻžāĻ° āĻœā§āĻĄāĻŧā§‡ āĻāĻ‡ āĻĒāĻĻāĻ•ā§āĻˇā§‡āĻĒāĻ—ā§āĻ˛āĻŋ āĻĒā§āĻ¨āĻ°āĻžāĻŦā§ƒāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨āĨ¤

āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻ• āĻ…āĻ¨ā§āĻŽā§‹āĻĻāĻ¨

āĻāĻ‡ āĻĒāĻĻāĻ•ā§āĻˇā§‡āĻĒāĻ—ā§āĻ˛āĻŋāĻ° āĻĒāĻ°ā§‡, āĻ†āĻĒāĻ¨āĻžāĻ° āĻ•āĻžāĻ›ā§‡ āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡āĻ‡ OIDC āĻ…āĻ¨ā§āĻŽā§‹āĻĻāĻ¨ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻāĻ•āĻŸāĻŋ Kubernetes āĻ•ā§āĻ˛āĻžāĻ¸ā§āĻŸāĻžāĻ° āĻĨāĻžāĻ•āĻŦā§‡āĨ¤ āĻāĻ•āĻŽāĻžāĻ¤ā§āĻ° āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ āĻšāĻ˛ āĻ¯ā§‡ āĻ†āĻĒāĻ¨āĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻĻā§‡āĻ° āĻāĻ–āĻ¨āĻ“ āĻāĻ•āĻŸāĻŋ āĻ•ā§āĻ˛āĻžāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ° āĻ•āĻ°āĻž āĻ¨ā§‡āĻ‡, āĻ¸ā§‡āĻ‡āĻ¸āĻžāĻĨā§‡ āĻ¤āĻžāĻĻā§‡āĻ° āĻ¨āĻŋāĻœāĻ¸ā§āĻŦ kubeconfigāĨ¤ āĻāĻ‡ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻŸāĻŋ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯, āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ¸āĻĢāĻ˛ āĻ…āĻ¨ā§āĻŽā§‹āĻĻāĻ¨ā§‡āĻ° āĻĒāĻ°ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻĻā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸ā§āĻŦāĻ¯āĻŧāĻ‚āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻ­āĻžāĻŦā§‡ kubeconfig āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤

āĻāĻŸāĻŋ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯, āĻ†āĻĒāĻ¨āĻŋ āĻŦāĻŋāĻļā§‡āĻˇ āĻ“āĻ¯āĻŧā§‡āĻŦ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨āĻ—ā§āĻ˛āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ āĻ¯āĻž āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ•ā§‡ āĻĒā§āĻ°āĻŽāĻžāĻŖā§€āĻ•āĻ°āĻŖ āĻ•āĻ°āĻ¤ā§‡ āĻāĻŦāĻ‚ āĻ¤āĻžāĻ°āĻĒāĻ° āĻ¸āĻŽāĻžāĻĒā§āĻ¤ kubeconfig āĻĄāĻžāĻ‰āĻ¨āĻ˛ā§‹āĻĄ āĻ•āĻ°āĻ¤ā§‡ āĻĻā§‡āĻ¯āĻŧāĨ¤ āĻ¸āĻŦāĻšā§‡āĻ¯āĻŧā§‡ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻœāĻ¨āĻ• āĻāĻ• āĻ•ā§āĻŦā§‡āĻ°ā§‹āĻ¸, āĻāĻŸāĻŋ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ°ā§‡āĻļāĻ¨ā§‡ āĻ¸āĻŽāĻ¸ā§āĻ¤ Kubernetes āĻ•ā§āĻ˛āĻžāĻ¸ā§āĻŸāĻžāĻ° āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻ•āĻ°āĻ¤ā§‡ āĻāĻŦāĻ‚ āĻ¸āĻšāĻœā§‡āĻ‡ āĻ¤āĻžāĻĻā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ¸ā§āĻ¯ā§āĻ‡āĻš āĻ•āĻ°āĻ¤ā§‡ āĻĻā§‡āĻ¯āĻŧāĨ¤

āĻ•ā§āĻŦā§‡āĻ°ā§‹āĻ¸ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯, kubeconfig āĻāĻ° āĻœāĻ¨ā§āĻ¯ āĻŸā§‡āĻŽāĻĒā§āĻ˛ā§‡āĻŸ āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻ•āĻ°āĻž āĻāĻŦāĻ‚ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻ–āĻŋāĻ¤ āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋāĻ—ā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§‡ āĻāĻŸāĻŋ āĻšāĻžāĻ˛āĻžāĻ¨ā§‹ āĻ¯āĻĨā§‡āĻˇā§āĻŸ:

kuberos https://keycloak.example.org/auth/realms/kubernetes kubernetes /cfg/secret /cfg/template

āĻ†āĻ°ā§‹ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤ āĻœāĻžāĻ¨āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĻā§‡āĻ–ā§āĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ—āĻŋāĻĨā§āĻŦā§‡āĨ¤

āĻāĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ“ āĻ¸āĻŽā§āĻ­āĻŦ āĻ•ā§āĻŦā§‡āĻ˛āĻ—āĻ‡āĻ¨ āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ° āĻ•āĻŽā§āĻĒāĻŋāĻ‰āĻŸāĻžāĻ°ā§‡ āĻ…āĻ¨ā§āĻŽā§‹āĻĻāĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ¨āĨ¤ āĻāĻ‡ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡, āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€ āĻ˛ā§‹āĻ•āĻžāĻ˛āĻšā§‹āĻ¸ā§āĻŸā§‡ āĻāĻ•āĻŸāĻŋ āĻ…āĻ¨ā§āĻŽā§‹āĻĻāĻ¨ āĻĢāĻ°ā§āĻŽ āĻ¸āĻš āĻāĻ•āĻŸāĻŋ āĻŦā§āĻ°āĻžāĻ‰āĻœāĻžāĻ° āĻ–ā§āĻ˛āĻŦā§‡āĨ¤

āĻĢāĻ˛ā§‡ kubeconfig āĻ¸āĻžāĻ‡āĻŸā§‡ āĻšā§‡āĻ• āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ jwt.io. āĻļā§āĻ§ā§ āĻŽāĻžāĻ¨ āĻ•āĻĒāĻŋ 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-āĻāĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻ°āĻ“ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻĒāĻžāĻ“āĻ¯āĻŧāĻž āĻ¯āĻžāĻŦā§‡ āĻ…āĻĢāĻŋāĻ¸āĻŋāĻ¯āĻŧāĻžāĻ˛ āĻ•ā§āĻŦāĻžāĻ°āĻ¨ā§‡āĻŸāĻ¸ āĻĄāĻ•ā§āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāĻ¨

āĻĒā§āĻ°āĻŽāĻžāĻŖ-āĻĒā§āĻ°āĻ•ā§āĻ¸āĻŋ āĻ¸ā§‡āĻŸ āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡

āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻ¸ā§āĻŽāĻ¯āĻŧāĻ•āĻ° āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ āĻ†āĻ›ā§‡ āĻ•ā§€āĻ•ā§āĻ˛ā§‹āĻ•-āĻĻāĻžāĻ°ā§‹āĻ¯āĻŧāĻžāĻ¨, āĻ¯āĻž āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ•ā§‡ OIDC āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°ā§‡ āĻĒā§āĻ°āĻŽāĻžāĻŖā§€āĻ•āĻ°āĻŖ āĻ•āĻ°āĻžāĻ° āĻ…āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻāĻŋāĻ¯āĻŧā§‡ āĻ¯ā§‡āĻ•ā§‹āĻ¨ā§‹ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ āĻ¸ā§āĻ°āĻ•ā§āĻˇāĻŋāĻ¤ āĻ•āĻ°āĻ¤ā§‡ āĻĻā§‡āĻ¯āĻŧāĨ¤ āĻ†āĻŽāĻŋ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻĻā§‡āĻ–āĻžāĻŦ āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻ†āĻĒāĻ¨āĻŋ āĻ•ā§āĻŦāĻžāĻ°āĻ¨ā§‡āĻŸāĻ¸ āĻĄā§āĻ¯āĻžāĻļāĻŦā§‹āĻ°ā§āĻĄ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻāĻ•āĻŸāĻŋ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻāĻŸāĻŋ āĻ¸ā§‡āĻŸ āĻ†āĻĒ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨:

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

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨