рд╣рдо рдПрд▓рдбреАрдПрдкреА рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЛ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдЙрдкрд╡рд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ


Kubernetes рдХреЛ рдЕрдкрдиреЗ LDAP рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Kubernetes рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдФрд░ Keycloak рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдФрд░ рд╕рдореВрд╣реЛрдВ рдХреЗ рдЖрдпрд╛рдд рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВред рдпрд╣ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП RBAC рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдФрд░ Kubernetes рдбреИрд╢рдмреЛрд░реНрдб рдФрд░ рд╕реНрд╡рдпрдВ рдХреЛ рдЕрдзрд┐рдХреГрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреНрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░реЙрдХреНрд╕реА-рдкреНрд░реЙрдХреНрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред


Keycloak рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ


рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА LDAP рд╕рд░реНрд╡рд░ рд╣реИред рдпрд╣ рд╕рдХреНрд░рд┐рдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛, FreeIPA, OpenLDAP рдпрд╛ рдХреБрдЫ рдФрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ LDAP рд╕рд░реНрд╡рд░ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рдЖрдк рд╕реАрдзреЗ Keycloak рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ oidc рдкреНрд░рджрд╛рддрд╛рдУрдВ (Google, Github, Gitlab) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдкрд░рд┐рдгрд╛рдо рд▓рдЧрднрдЧ рд╕рдорд╛рди рд╣реЛрдЧрд╛ред


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдЦреБрдж рдХреАрдХреНрд▓реЛрдХ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВрдЧреЗ, рд╕реНрдерд╛рдкрдирд╛ рдХреЛ рдЕрд▓рдЧ рд╕реЗ рдпрд╛ рддреБрд░рдВрдд рдПрдХ рдХреБрдмреЗрд░рдиреЗрдЯ рд╕рдореВрд╣ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрдИ рдХреБрдмреЗрд░рдиреЗрдЯ рдХреНрд▓рд╕реНрдЯрд░ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ рдЕрд▓рдЧ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ред рджреВрд╕рд░реА рдУрд░, рдЖрдк рд╣рдореЗрд╢рд╛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╣реЗрд▓рдо рдЪрд╛рд░реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд╕реАрдзреЗ рдЕрдкрдиреЗ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


Keycloak рдбреЗрдЯрд╛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдЪрд╛рд╣рд┐рдПред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, h2 рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рд╕рднреА рдбреЗрдЯрд╛ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ), рд▓реЗрдХрд┐рди postgres , mariadb рдпрд╛ mariadb рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рднреА рд╕рдВрднрд╡ рд╣реИред
рдпрджрд┐ рдЖрдк рдЕрднреА рднреА Keycloak рдХреЛ рдЕрд▓рдЧ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рдирд┐рд░реНрджреЗрд╢ рдорд┐рд▓реЗрдВрдЧреЗред


рдлреЗрдбрд░реЗрд╢рди рд╕реЗрдЯрдЕрдк


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рдирдпрд╛ рдХреНрд╖реЗрддреНрд░ рдмрдирд╛рдПрдБред рджрд╛рдпрд░реЗ рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХрд╛ рд╕реНрдерд╛рди рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдФрд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдХреНрд╖реЗрддреНрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдорд╛рд╕реНрдЯрд░ рджрд╛рдпрд░реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреАрд▓рдХрд▓реЛрдХ рджреНрд╡рд╛рд░рд╛ рд╣реА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдХрд┐рд╕реА рдФрд░ рдЪреАрдЬ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рд╣реА рдирд╣реАрдВ рд╣реИред


Add рджрд╛рдпрд░реЗ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ


рд╡рд┐рдХрд▓реНрдкрдореВрд▓реНрдп
рдирд╛рдоkubernetes
рдирд╛рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВKubernetes
HTML рдкреНрд░рджрд░реНрд╢рди рдирд╛рдо<img src="https://kubernetes.io/images/nav_logo.svg" width="400" \>

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдЬрд╛рдВрдЪрддрд╛ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрд╛рд╕ рдИрдореЗрд▓ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдЪреВрдВрдХрд┐ рд╣рдо рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ LDAP рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЬрд╛рдБрдЪ рд▓рдЧрднрдЧ рд╣рдореЗрд╢рд╛ false ред рдЖрдЗрдП рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЛ рдмрдВрдж рдХрд░реЗрдВ:


рдЧреНрд░рд╛рд╣рдХ рд╕реНрдХреЛрдк -> рдИрдореЗрд▓ -> рдореИрдкрд░ -> рдИрдореЗрд▓ рд╕рддреНрдпрд╛рдкрд┐рдд (рд╣рдЯрд╛рдПрдВ)


рдЕрдм рдорд╣рд╛рд╕рдВрдШ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо рдпрд╣рд╛рдВ рдЬрд╛рдПрдВрдЧреЗ:


рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдорд╣рд╛рд╕рдВрдШ -> рдкреНрд░рджрд╛рддрд╛ рдЬреЛрдбрд╝реЗрдВ ... -> ldap


рдпрд╣рд╛рдБ FreeIPA рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╕реЗрдЯрдЕрдк рд╣реИ:


рд╡рд┐рдХрд▓реНрдкрдореВрд▓реНрдп
рдХрдВрд╕реЛрд▓ рдбрд┐рд╕реНрдкреНрд▓реЗ рдирд╛рдоfreeipa.example.org
рд╡рд┐рдХреНрд░реЗрддрд╛Red Hat Directory Server
UUID LDAP рд╡рд┐рд╢реЗрд╖рддрд╛ipauniqueid
рдХрдиреЗрдХреНрд╢рди URLldaps://freeipa.example.org
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреА.рдПрди.cn=users,cn=accounts,dc=example,dc=org
рдмрд╛рдБрдз dnuid=keycloak-svc,cn=users,cn=accounts,dc=example,dc=org
рдмрд╛рдБрдз рд╕рд╛рдЦ<password>
Kerberos рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ:on
рдХреЗрд░реНрдмрд░реЛрд╕ рджрд╛рдпрд░реЗ:EXAMPLE.ORG
рд╕рд░реНрд╡рд░ рдкреНрд░рд┐рдВрд╕рд┐рдкрд▓:HTTP/freeipa.example.org@EXAMPLE.ORG
keyTab:/etc/krb5.keytab

keycloak-svc рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╣рдорд╛рд░реЗ LDAP рд╕рд░реНрд╡рд░ рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред


рд╕рдХреНрд░рд┐рдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдмрд╕ рд╡рд┐рдХреНрд░реЗрддрд╛ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ : рд╕рдХреНрд░рд┐рдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдФрд░ рдЖрд╡рд╢реНрдпрдХ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдлрд╝реЙрд░реНрдо рдореЗрдВ рдкреЙрдкреБрд▓реЗрдЯ рд╣реЛ рдЬрд╛рддреА рд╣реИрдВред


рд╕рд╣реЗрдЬреЗрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ


рдЕрдм рдЪрд▓рддреЗ рд╣реИрдВ:


рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдлреЗрдбрд░реЗрд╢рди -> freeipa.example.org -> рдореИрдкрд░ -> рдкрд╣рд▓рд╛ рдирд╛рдо


рд╡рд┐рдХрд▓реНрдкрдореВрд▓реНрдп
рд▓рджрдк рдЕрдЪрд░рдЬgivenName

рдЕрдм рдЧреНрд░реБрдк рдореИрдкрд┐рдВрдЧ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ:


рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдлреЗрдбрд░реЗрд╢рди -> freeipa.example.org -> рдореИрдкрд░ -> рдмрдирд╛рдПрдБ


рд╡рд┐рдХрд▓реНрдкрдореВрд▓реНрдп
рдирд╛рдоgroups
рдореИрдкрд░ рдкреНрд░рдХрд╛рд░group-ldap-mapper
LDAP рдЧреНрд░реБрдк рдбреА.рдПрди.cn=groups,cn=accounts,dc=example,dc=org
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдореВрд╣ рд░рдгрдиреАрддрд┐ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВGET_GROUPS_FROM_USER_MEMBEROF_ATTRIBUTE

рдпрд╣ рдорд╣рд╛рд╕рдВрдШ рдХреЗ рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ, рдЪрд▓реЛ рдЧреНрд░рд╛рд╣рдХ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред


рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗрдЯрдЕрдк


рдПрдХ рдирдпрд╛ рдХреНрд▓рд╛рдЗрдВрдЯ (рдПрдХ рдРрд╕рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдПрдВ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ Keycloak рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛)ред рд╣рдо рдкрд╛рд╕:


рдЧреНрд░рд╛рд╣рдХ -> рдмрдирд╛рдПрдБ


рд╡рд┐рдХрд▓реНрдкрдореВрд▓реНрдп
рдЧреНрд░рд╛рд╣рдХ рдЖрдИрдбреАkubernetes
рдкрд╣реБрдВрдЪ рдкреНрд░рдХрд╛рд░confidenrial
рд░реВрдЯ URLhttp://kubernetes.example.org/
рдорд╛рдиреНрдп рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдпреВ.рдЖрд░.рдЖрдИ.http://kubernetes.example.org/*
рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ URLhttp://kubernetes.example.org/

рд╕рдореВрд╣реЛрдВ рдХреЗ рд▓рд┐рдП рднреА рдЧреБрдВрдЬрд╛рдЗрд╢ рдмрдирд╛рдПрдБ:


рдЧреНрд░рд╛рд╣рдХ рд╕реНрдХреЛрдк -> рдмрдирд╛рдПрдБ


рд╡рд┐рдХрд▓реНрдкрдореВрд▓реНрдп
рдЦрд╛рдХрд╛No template
рдирд╛рдоgroups
рдкреВрд░реНрдг рд╕рдореВрд╣ рдкрдеfalse

рдФрд░ рдЙрдирдХреЗ рд▓рд┐рдП рдореИрдкрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ:


рдЧреНрд░рд╛рд╣рдХ рд╕реНрдХреЛрдк -> рд╕рдореВрд╣ -> рдореИрдкрд░ -> рдмрдирд╛рдПрдБ


рд╡рд┐рдХрд▓реНрдкрдореВрд▓реНрдп
рдирд╛рдоgroups
рдореИрдкрд░ рдкреНрд░рдХрд╛рд░Group membership
рдЯреЛрдХрди рдХреНрд▓реЗрдо рдирд╛рдоgroups

рдЕрдм рд╣рдореЗрдВ рдЕрдкрдиреЗ рдЧреНрд░рд╛рд╣рдХ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдорд╛рдирдЪрд┐рддреНрд░рдг рд╕рдореВрд╣ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:


рдЧреНрд░рд╛рд╣рдХ -> рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ -> рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реНрдХреЛрдкреНрд╕ -> рдбрд┐рдлреЙрд▓реНрдЯ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реНрдХреЛрдкреНрд╕


рдЙрдкрд▓рдмреНрдз рдЧреНрд░рд╛рд╣рдХ рд╕реНрдХреЛрдк рдореЗрдВ рд╕рдореВрд╣реЛрдВ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ, рдЪрдпрдирд┐рдд рдЬреЛрдбрд╝реЗрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ


рдЕрдм рд╣рдорд╛рд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ, рдпрд╣рд╛рдВ рдЬрд╛рдПрдВ:


рдЧреНрд░рд╛рд╣рдХ -> рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕


рд╡рд┐рдХрд▓реНрдкрдореВрд▓реНрдп
рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ рдЧрдпрд╛ON

рд╕рд╣реЗрдЬреЗрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдпрд╣ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗрдЯрдЕрдк рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ, рдЕрдм рдЯреИрдм рдкрд░


рдЧреНрд░рд╛рд╣рдХ -> рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ -> рд╕рд╛рдЦ


рдЖрдк рдЧреБрдкреНрдд рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдо рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдХрд░реЗрдВрдЧреЗред


рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ


OIDC рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рд▓рд┐рдП Kubernetes рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рдХрд╛рдлреА рддреБрдЪреНрдЫ рд╣реИ рдФрд░ рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИред рдЖрдкрдХреЛ рдмрд╕ рдЕрдкрдиреЗ /etc/kubernetes/pki/oidc-ca.pem рд╕рд░реНрд╡рд░ рдХрд╛ CA рдкреНрд░рдорд╛рдгрдкрддреНрд░ /etc/kubernetes/pki/oidc-ca.pem рдореЗрдВ /etc/kubernetes/pki/oidc-ca.pem рдФрд░ рдХреНрдпреВрдм-рдЕрдкреАрдЬрд╝рд░ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рдХрд▓реНрдк рдЬреЛрдбрд╝рдирд╛ рд╣реИред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдкрдиреЗ рд╕рднреА рд╡рд┐рдЬрд╝рд╛рд░реНрдбреНрд╕ рдкрд░ /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 рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддрд╛ рд╣реИред рд╕рдмрд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдореЗрдВ рд╕реЗ рдПрдХ рдХреБрдмреЗрд░реЛрд╕ рд╣реИ , рдЬреЛ рдЖрдкрдХреЛ рдПрдХ рд╡рд┐рдиреНрдпрд╛рд╕ рдореЗрдВ рд╕рднреА рдХреБрдмреЗрд░рдиреЗрдЯ рд╕рдореВрд╣реЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдЙрдирдХреЗ рдмреАрдЪ рд╕реНрд╡рд┐рдЪ рдХрд░рддрд╛ рд╣реИред


рдХреБрдмреЗрд░реЛрд╕ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рдХреБрдмреЗрдХреЙрдиреНрдлрд┐рдЧ рдХреЗ рд▓рд┐рдП рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдЪрд▓реЗрдВ:


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

рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП Github рдкрд░ рдЙрдкрдпреЛрдЧ рджреЗрдЦреЗрдВред


рдпрджрд┐ рдЖрдк рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рд╕реАрдзреЗ рдЕрдзрд┐рдХреГрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдХреБрдмреЗрд▓реЛрдЧрд┐рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рдкрд░ рдПрдХ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдлреЙрд░реНрдо рдХреЗ рд╕рд╛рде рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЦреЛрд▓рддрд╛ рд╣реИред


рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк kubeconfig рдХреЛ jwt.io рдкрд░ рдЪреЗрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред users[].user.auth-provider.config.id-token рдХреЗ рдореВрд▓реНрдп рдХреЛ рдХреЙрдкреА рдХрд░реЗрдВ users[].user.auth-provider.config.id-token рдХреЛ рдЕрдкрдиреЗ kubeconfig рд╕реЗ рдлрд╝реЙрд░реНрдо рдкрд░ рд╕рд╛рдЗрдЯ рдкрд░ рдлрд╝реЙрд░реНрдо рдХрд░реЗрдВ рдФрд░ рддреБрд░рдВрдд рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред


RBAC рд╕реЗрдЯрдЕрдк


RBAC рд╕реЗрдЯ рдХрд░рддреЗ рд╕рдордп, рдЖрдк рджреЛрдиреЛрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо (jwt рдЯреЛрдХрди рдореЗрдВ name рдлрд╝реАрд▓реНрдб) рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдореВрд╣ (jwt рдЯреЛрдХрди рдореЗрдВ groups рдлрд╝реАрд▓реНрдб) рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣рд╛рдБ kubernetes-default-namespace-admins рд╕рдореВрд╣ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорддрд┐рдпрд╛рдБ рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:


Kubernetes-default-рдирд╛рдо рд╕реНрдерд╛рди-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 

рдЖрд░рдмреАрдПрд╕реА рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдЙрджрд╛рд╣рд░рдг рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ рдкрд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ ред


рдХреЙрдиреНрдЯреНрд░реИрдХреНрдЯ рдХреЛ рдкреНрд░реЙрдХреНрд╕реА рдХрд░реЗрдВ


рдПрдХ рдЕрджреНрднреБрдд рдХреАрдХреНрд▓реЙрдХ-рдЧреЗрдЯрдХреАрдкрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдУрдЖрдИрдбреАрд╕реА рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдорд┐рд▓рддреА рд╣реИред рдореИрдВ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдХрд┐ рдЖрдк рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдбреИрд╢рдмреЛрд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдХреИрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


рдбреИрд╢рдмреЛрд░реНрдб-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 

Source: https://habr.com/ru/post/hi441112/


All Articles