рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рдПрдмреАрд╕реА: рдкреНрд░рдорд╛рдгреАрдХрд░рдг, рдкреНрд░рд╛рдзрд┐рдХрд░рдг, рд▓реЗрдЦрд╛ рдкрд░реАрдХреНрд╖рд╛



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

рдкреНрд░рдорд╛рдгреАрдХрд░рдг


рдХреБрдмреЗрд░рдиреЗрдЯ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рджреЛ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ:

  • рд╕реЗрд╡рд╛ рдЦрд╛рддреЗ - рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдПрдкреАрдЖрдИ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдмрдВрдзрд┐рдд рдЦрд╛рддреЗ;
  • рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ - "рд╕рд╛рдорд╛рдиреНрдп" рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрд╛рд╣рд░реА, рд╕реНрд╡рддрдВрддреНрд░ рд╕реЗрд╡рд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рд╣реЛрддреЗ рд╣реИрдВред

рдЗрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдмреАрдЪ рдореБрдЦреНрдп рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рд╕реЗрд╡рд╛ рдЦрд╛рддреЛрдВ рдХреЗ рд▓рд┐рдП Kubernetes API рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИрдВ (рдЙрдиреНрд╣реЗрдВ ServiceAccounts рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ) рдЬреЛ рдЯрд╛рдЗрдк рд╕реАрдХреНрд░реЗрдЯ рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдиреЗрдорд╕реНрдкреЗрд╕ рдФрд░ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдбреЗрдЯрд╛ рдХреЗ рд╕реЗрдЯ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реЛрддреЗ рд╣реИрдВред рдРрд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ (рд╕реЗрд╡рд╛ рдЦрд╛рддреЗ) рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдЪрд▓ рд░рд╣реЗ рдХреБрдмреЗрд░рдиреЗрдЯ рдПрдкреАрдЖрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдЕрднрд┐рдЧрдо рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рд╣реИрдВред

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

рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рд╕реЗрд╡рд╛ рдЦрд╛рддреЗ, рдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рд╣реИ, рдпрд╛ рдЕрдирд╛рдо рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдбреЗрдЯрд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

  • рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо (рдорд╛рдорд▓рд╛ рд╕рдВрд╡реЗрджрдирд╢реАрд▓!);
  • рдпреВрдЖрдИрдбреА рдПрдХ рдорд╢реАрди-рдкрдврд╝рдиреЗ рдпреЛрдЧреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд╣рдЪрд╛рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИ рдЬреЛ "рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╕реБрд╕рдВрдЧрдд рдФрд░ рдЕрджреНрд╡рд┐рддреАрдп рд╣реИ";
  • рд╕рдореВрд╣ - рдЙрди рд╕рдореВрд╣реЛрдВ рдХреА рд╕реВрдЪреА, рдЬрд┐рдирд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ;
  • рдЕрддрд┐рд░рд┐рдХреНрдд - рдЕрддрд┐рд░рд┐рдХреНрдд рдлрд╝реАрд▓реНрдб рдЬрд┐рдиреНрд╣реЗрдВ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рддрдВрддреНрд░ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

Kubernetes рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: X509 рдкреНрд░рдорд╛рдгрдкрддреНрд░, рдмрд┐рдпрд░рд░ рдЯреЛрдХрди, рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдкреНрд░реЙрдХреНрд╕реА, HTTP рдмреЗрд╕рд┐рдХ рдкреНрд░рд╛рдорд╛рдгрд┐рдХред рдЗрди рддрдВрддреНрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдкрд╛рд╕рд╡рд░реНрдб рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдерд┐рд░ рдлрд╝рд╛рдЗрд▓ рд╕реЗ OpenID OAuth2 рддрдХред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдХрдИ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдпреЛрдЬрдирд╛рдУрдВ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдХреНрд▓рд╕реНрдЯрд░ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ:

  • рд╕реЗрд╡рд╛ рдЦрд╛рддрд╛ рдЯреЛрдХрди - рд╕реЗрд╡рд╛ рдЦрд╛рддреЛрдВ рдХреЗ рд▓рд┐рдП;
  • X509 - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдПред

ServiceAccounts рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╡рд╛рд▓ рдЗрд╕ рд▓реЗрдЦ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдкрд░реЗ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкреНрд░рд▓реЗрдЦрди рдкреГрд╖реНрда рд╕реЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред рд╣рдо X509 рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХреЗ рдХрд╛рдо рдХреЗ рдореБрджреНрджреЗ рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рдорд╛рдг рдкрддреНрд░ (X.509)


рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдХреНрд▓рд╛рд╕рд┐рдХ рддрд░реАрдХрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ:

  • рдореБрдЦреНрдп рдкреАрдврд╝реА:

     mkdir -p ~/mynewuser/.certs/ openssl genrsa -out ~/.certs/mynewuser.key 2048 
  • рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЕрдиреБрд░реЛрдз рдкреАрдврд╝реА:

     openssl req -new -key ~/.certs/mynewuser.key -out ~/.certs/mynewuser.csr -subj "/CN=mynewuser/O=company" 
  • Kubernetes рдХреНрд▓рд╕реНрдЯрд░ CA рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЕрдиреБрд░реЛрдз рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛, рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ (рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХреБрдмреЗрд░рдиреЗрдЯ рдХреНрд▓рд╕реНрдЯрд░ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдкреНрд░рд╛рдзрд┐рдХрд╛рд░реА рдХреБрдВрдЬреА рддрдХ рдкрд╣реБрдВрдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ /etc/kubernetes/pki/ca.key рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИ):

     openssl x509 -req -in ~/.certs/mynewuser.csr -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial -out ~/.certs/mynewuser.crt -days 500 
  • рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдирд╛:
    • рдХреНрд▓рд╕реНрдЯрд░ рд╡рд┐рд╡рд░рдг (рд╡рд┐рд╢реЗрд╖ рдХреНрд▓рд╕реНрдЯрд░ рд╕реНрдерд╛рдкрдирд╛ рдХрд╛ CA рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкрддрд╛ рдФрд░ рд╕реНрдерд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ):

       kubectl config set-cluster kubernetes --certificate-authority=/etc/kubernetes/pki/ca.crt --server=https://192.168.100.200:6443 
    • рдпрд╛ - рдпрджрд┐ рдЕрдиреБрд╢рдВрд╕рд┐рдд рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИ - рдЖрдк рд░реВрдЯ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЛ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ (рддрдм рдХреБрдмреЗрдХреЗрд▓ рдПрдкрд┐-рд╕рд░реНрд╡рд░ рдХреНрд▓рд╕реНрдЯрд░ рдХреА рд╢реБрджреНрдзрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛):

       kubectl config set-cluster kubernetes --insecure-skip-tls-verify=true --server=https://192.168.100.200:6443 
    • рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬреЛрдбрд╝рдирд╛:

       kubectl config set-credentials mynewuser --client-certificate=.certs/mynewuser.crt --client-key=.certs/mynewuser.key 
    • рд╕рдВрджрд░реНрдн рдЬреЛрдбрд╝рдирд╛:

       kubectl config set-context mynewuser-context --cluster=kubernetes --namespace=target-namespace --user=mynewuser 
    • рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕рдВрджрд░реНрдн рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ:

       kubectl config use-context mynewuser-context 

рдЙрдкрд░реЛрдХреНрдд рдЬреЛрдбрд╝рддреЛрдбрд╝ рдХреЗ рдмрд╛рдж, рдкреНрд░рдкрддреНрд░ рдХрд╛ рдПрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди .kube/config рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛:

 apiVersion: v1 clusters: - cluster: certificate-authority: /etc/kubernetes/pki/ca.crt server: https://192.168.100.200:6443 name: kubernetes contexts: - context: cluster: kubernetes namespace: target-namespace user: mynewuser name: mynewuser-context current-context: mynewuser-context kind: Config preferences: {} users: - name: mynewuser user: client-certificate: /home/mynewuser/.certs/mynewuser.crt client-key: /home/mynewuser/.certs/mynewuser.key 

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

  • certificate-authority
  • client-certificate
  • client-key

рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдмреЗрд╕ 64 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдирдореЗрдВ рдмрддрд╛рдИ рдЧрдИ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдПрдирдХреЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХреБрдВрдЬреА рдХреЗ рдирд╛рдо рдореЗрдВ рдкреНрд░рддреНрдпрдп -data рдЬреЛрдбрд╝рдХрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддред certificate-authority-data , рдЖрджрд┐ред

Kubeadm рдХреЗ рд╕рд╛рде рдкреНрд░рдорд╛рдг рдкрддреНрд░


Kubernetes 1.15 рдХреА рд░рд┐рд▓реАрдЬрд╝ рдХреЗ рд╕рд╛рде, рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ Kubeadm рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдореЗрдВ рдЗрд╕рдХреЗ рд╕рдорд░реНрдерди рдХреЗ рдЕрд▓реНрдлрд╛ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реЛ рдЧрдпрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреА рдкреАрдврд╝реА рдЕрдм рдХреИрд╕реА рджрд┐рдЦ рд╕рдХрддреА рд╣реИ:

 kubeadm alpha kubeconfig user --client-name=mynewuser --apiserver-advertise-address 192.168.100.200 

NB : рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рдЬреНрдЮрд╛рдкрди рдкрддрд╛ рдПрдкреАрдЖрдИ рд╕рд░реНрд╡рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ /etc/kubernetes/manifests/kube-apiserver.yaml рдкрд░ рд╕реНрдерд┐рдд рд╣реИред

рдкрд░рд┐рдгрд╛рдореА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди stdout рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рд╣реЛрдЧрд╛ред рдЗрд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЦрд╛рддреЗ рдореЗрдВ ~/.kube/config рдпрд╛ KUBECONFIG рд╡рд╛рддрд╛рд╡рд░рдг KUBECONFIG рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд╣реЗрдЬрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЧрд╣рд░рд╛ рдЦреЛрджреЛ


рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рд╡рд░реНрдгрд┐рдд рдореБрджреНрджреЛрдВ рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:


рдкреНрд░рд╛рдзрд┐рдХрд░рдг


рдПрдХ рдкреНрд░рдорд╛рдгрд┐рдд рдЦрд╛рддреЗ рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИред рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреЗ рдкрд╛рд╕ рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рддрдВрддреНрд░ рд╣реИред

рд╕рдВрд╕реНрдХрд░рдг 1.6 рд╕реЗ рдкрд╣рд▓реЗ, Kubernetes рдиреЗ ABAC (рд╡рд┐рд╢реЗрд╖рддрд╛-рдЖрдзрд╛рд░рд┐рдд рдЕрднрд┐рдЧрдо рдирд┐рдпрдВрддреНрд░рдг) рдирд╛рдордХ рдПрдХ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛ред рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╡рд░рдг рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╡рд┐рд░рд╛рд╕рдд рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдЕрднреА рднреА рдЗрд╕реЗ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдХреНрд▓рд╕реНрдЯрд░ рдПрдХреНрд╕реЗрд╕ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ (рдФрд░ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓реЗ) рддрд░реАрдХреЗ рдХреЛ рдЖрд░рдмреАрдПрд╕реА ( рд░реЛрд▓-рдЖрдзрд╛рд░рд┐рдд рдПрдХреНрд╕реЗрд╕ рдХрдВрдЯреНрд░реЛрд▓ ) рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ 1.8 рдХреЗ рдмрд╛рдж рд╕реЗ рдЗрд╕реЗ рд╕реНрдерд┐рд░ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЖрд░рдмреАрдПрд╕реА рдПрдХ рдЕрдзрд┐рдХрд╛рд░ рдореЙрдбрд▓ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХреБрдЫ рднреА рдирд┐рд╖рд┐рджреНрдз рд╣реИ рдЬреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИред
RBAC рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП , рдЖрдкрдХреЛ Kubernetes api-server рдХреЛ --authorization-mode=RBAC рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде --authorization-mode=RBAC ред рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдПрдкреА-рд╕рд░реНрд╡рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдкреНрд░рдХрдЯ рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ command рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдкрде /etc/kubernetes/manifests/kube-apiserver.yaml рдкрд░ рд╕реНрдерд┐рдд рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, RBAC рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рдХреНрд╖рдо рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рд╢рд╛рдпрдж рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдирд╣реАрдВ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП: рдЖрдк рдЗрд╕реЗ authorization-mode рдХреЗ рдорд╛рди (рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрд▓реНрд▓рд┐рдЦрд┐рдд kube-apiserver.yaml ) рджреНрд╡рд╛рд░рд╛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╡реИрд╕реЗ, рдЗрд╕рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЗ рдмреАрдЪ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ ( node , webhook , always allow ), рд▓реЗрдХрд┐рди рд╣рдо рдЙрдиреНрд╣реЗрдВ рд╕рд╛рдордЧреНрд░реА рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рдЫреЛрдбрд╝ рджреЗрдВрдЧреЗред

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

RBAC рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ Kubernetes рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдПрдкреАрдЖрдИ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

  • Role рдФрд░ ClusterRole рднреВрдорд┐рдХрд╛рдПрдВ рд╣реИрдВ рдЬреЛ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░реЛрдВ рдХрд╛ рд╡рд░реНрдгрди ClusterRole рд╣реИрдВ:
  • Role рдЖрдкрдХреЛ рдПрдХ рдирд╛рдо рд╕реНрдерд╛рди рдХреЗ рднреАрддрд░ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ;
  • ClusterRole - рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рднреАрддрд░, рдХреНрд▓рд╕реНрдЯрд░-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдЬреИрд╕реЗ рдиреЛрдбреНрд╕, рдЧреИрд░-рд╕рдВрд╕рд╛рдзрди рдпреВрдЖрд░рдПрд▓ (рдпрд╛рдиреА рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИрдВ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, /version , /logs , /api* );
  • RoleBinding рдФрд░ ClusterRoleBinding - рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдореВрд╣ рдпрд╛ ServiceAccount рдореЗрдВ Role рдФрд░ ClusterRole рдХреЛ рдмрд╛рдВрдзрдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред

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

рдирд┐рдпрдо рд╕реЗрдЯреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рднреВрдорд┐рдХрд╛рдПрдБ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреА рд╣реИрдВ:

  • рдПрдкреАрдЖрдИ рд╕рдореВрд╣ - рдПрдкрд┐рдЧреНрд░реБрдкреНрд╕ рдХреЗ рд▓рд┐рдП рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдФрд░ kubectl api-resources рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рджреЗрдЦреЗрдВ;
  • рд╕рдВрд╕рд╛рдзрдиреЛрдВ ( рд╕рдВрд╕рд╛рдзрди : pod , namespace , deployment , рдЖрджрд┐);
  • рдХреНрд░рд┐рдпрд╛ ( рдХреНрд░рд┐рдпрд╛ : set , update , рдЖрджрд┐)ред
  • рд╕рдВрд╕рд╛рдзрди рдХреЗ рдирд╛рдо (рд░рд┐рд╕реЛрд░реНрд╕ рдирд╛рдо) - рдЙрд╕ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдЬрдм рдЖрдкрдХреЛ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрд╕рд╛рдзрди рддрдХ рдкрд╣реБрдБрдЪ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рднреА рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред

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

RBAC рдЗрдХрд╛рдИ рдЙрджрд╛рд╣рд░рдг


рдПрдХ рд╕рд░рд▓ Role рдЬреЛ рдЖрдкрдХреЛ рд╕реВрдЪреА рдФрд░ рд╕реНрдерд┐рддрд┐ рдХреА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ target-namespace рдореЗрдВ рдЙрдирдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ:

 apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: namespace: target-namespace name: pod-reader rules: - apiGroups: [""] resources: ["pods"] verbs: ["get", "watch", "list"] 

ClusterRole рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг, рдЬреЛ рдЖрдкрдХреЛ рд╕реВрдЪреА рдФрд░ рдкреЙрдбреНрд╕ рдХреА рд╕реНрдерд┐рддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдореЙрдирд┐рдЯрд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:

 apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: #  "namespace" ,   ClusterRole    name: pod-reader rules: - apiGroups: [""] resources: ["pods"] verbs: ["get", "watch", "list"] 

рдЙрджрд╛рд╣рд░рдг RoleBinding , рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ mynewuser my-namespace рдореЗрдВ "рдкрдарди" mynewuser рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:

 apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: read-pods namespace: target-namespace subjects: - kind: User name: mynewuser #     ! apiGroup: rbac.authorization.k8s.io roleRef: kind: Role #    тАЬRoleтАЭ  тАЬClusterRoleтАЭ name: pod-reader #  Role,      namespace, #   ClusterRole,   #    apiGroup: rbac.authorization.k8s.io 

рдЗрд╡реЗрдВрдЯ рдСрдбрд┐рдЯ


рдпреЛрдЬрдирд╛рдмрджреНрдз рд░реВрдк рд╕реЗ, рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

рдЫрд╡рд┐

рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХрд╛ рдкреНрд░рдореБрдЦ рдШрдЯрдХ, рдЬреЛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рдПрдкреА-рд╕рд░реНрд╡рд░ рд╣реИ ред рдХреНрд▓рд╕реНрдЯрд░ рдкрд░ рд╕рднреА рдСрдкрд░реЗрд╢рди рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЧреБрдЬрд░рддреЗ рд╣реИрдВред рд▓реЗрдЦ рдореЗрдВ рдЗрди рдЖрдВрддрд░рд┐рдХ рддрдВрддреНрд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдкрдврд╝реЗрдВ тАЬ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдХреБрдмреЗрдХреЗрд▓ рд░рди рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ? "ред

рд╕рд┐рд╕реНрдЯрдо рдСрдбрд┐рдЯ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдЖрдкрдХреЛ Kubernetes API рдкрд░ рд╕рднреА рдХреЙрд▓ рд▓реЙрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕ рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреНрд▓рд╕реНрдЯрд░ рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдФрд░ рдмрджрд▓рдиреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рднреА рдХреНрд░рд┐рдпрд╛рдПрдВ рдХреА рдЬрд╛рддреА рд╣реИрдВред рдЗрд╕рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рд╡рд░рдг (рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ) рдЖрдзрд┐рдХрд╛рд░рд┐рдХ K8s рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рдж, рдореИрдВ рдЗрд╕ рд╡рд┐рд╖рдп рдХреЛ рд╕рд░рд▓ рднрд╛рд╖рд╛ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛ред

рдЗрд╕рд▓рд┐рдП, рдСрдбрд┐рдЯрд┐рдВрдЧ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП , рд╣рдореЗрдВ рдПрдкреА-рд╕рд░реНрд╡рд░ рдореЗрдВ рдХрдВрдЯреЗрдирд░ рдХреЗ рд▓рд┐рдП рддреАрди рдЖрд╡рд╢реНрдпрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдиреАрдЪреЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

  • --audit-policy-file=/etc/kubernetes/policies/audit-policy.yaml
  • --audit-log-path=/var/log/kube-audit/audit.log
  • --audit-log-format=json

рдЗрди рддреАрди рдЖрд╡рд╢реНрдпрдХ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдСрдбрд┐рдЯрд┐рдВрдЧ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╣реИрдВ: рд▓реЙрдЧ рд░реЛрдЯреЗрд╢рди рд╕реЗ рд▓реЗрдХрд░ рд╡реЗрдмрд╣реБрдХ рд╡рд┐рд╡рд░рдг рддрдХред рдЙрджрд╛рд╣рд░рдг рд▓реЙрдЧ рд░реЛрдЯреЗрд╢рди рдкреИрд░рд╛рдореАрдЯрд░:

  • --audit-log-maxbackup=10
  • --audit-log-maxsize=100
  • --audit-log-maxage=7

рд▓реЗрдХрд┐рди рд╣рдо рдЙрди рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ - рдЖрдк рдХреНрдпреВрдм-рдПрдкреЗрд╕реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд╕рднреА рд╡рд┐рд╡рд░рдг рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рд╣реА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╕рднреА рдкреИрд░рд╛рдореАрдЯрд░ command рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдПрдкреАрдЖрдИ-рд╕рд░реНрд╡рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ /etc/kubernetes/manifests/kube-apiserver.yaml ) рдХреЗ рд╕рд╛рде рдкреНрд░рдХрдЯ рд╣реЛрддреЗ рд╣реИрдВред рдЖрдЗрдП 3 рдЖрд╡рд╢реНрдпрдХ рдорд╛рдкрджрдВрдбреЛрдВ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВ рдФрд░ рдЙрдирдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВ:

  1. audit-policy-file - рдСрдбрд┐рдЯ рдкреЙрд▓рд┐рд╕реА рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде YAML рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкрдеред рд╣рдо рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА рдкрд░ рд▓реМрдЯ рдЖрдПрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдЕрдм рдореИрдВ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдПрдкреАрдЖрдИ рд╕рд░реНрд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рджреНрд╡рд╛рд░рд╛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд▓рдн рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдЗрд╕рд▓рд┐рдП, рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ рдЗрд╕реЗ рдорд╛рдЙрдВрдЯ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЖрдк рдирд┐рдореНрди рдХреЛрдб рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХреЗ рдЙрдкрдпреБрдХреНрдд рдЕрдиреБрднрд╛рдЧреЛрдВ рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ:

      volumeMounts: - mountPath: /etc/kubernetes/policies name: policies readOnly: true volumes: - hostPath: path: /etc/kubernetes/policies type: DirectoryOrCreate name: policies 
  2. audit-log-path - рд▓реЙрдЧ рдлрд╛рдЗрд▓ рдХрд╛ рдкрдеред рдкрде рдХреЛ рдПрдкреАрдЖрдИ рд╕рд░реНрд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рднреА рд╕реБрд▓рдн рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЗрд╕реА рддрд░рд╣ рд╕реЗ рдЗрд╕рдХреЗ рдмрдврд╝рддреЗ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ:

      volumeMounts: - mountPath: /var/log/kube-audit name: logs readOnly: false volumes: - hostPath: path: /var/log/kube-audit type: DirectoryOrCreate name: logs 
  3. audit-log-format - рдСрдбрд┐рдЯ рд▓реЙрдЧ рдХрд╛ рдкреНрд░рд╛рд░реВрдкред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдпрд╣ json , рд▓реЗрдХрд┐рди рд╡рд┐рд░рд╛рд╕рдд рдкрд╛рда рдкреНрд░рд╛рд░реВрдк рднреА рдЙрдкрд▓рдмреНрдз рд╣реИред

рдСрдбрд┐рдЯ рдиреАрддрд┐


рдЕрдм рд▓реЙрдЧрд┐рдВрдЧ рдкреЙрд▓рд┐рд╕реА рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдлрд╝рд╛рдЗрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред рдСрдбрд┐рдЯ рдкреЙрд▓рд┐рд╕реА рдХреА рдкрд╣рд▓реА рдЕрд╡рдзрд╛рд░рдгрд╛ level , рд▓реЙрдЧрд┐рдВрдЧ рдХрд╛ рд╕реНрддрд░ рд╣реИ ред рд╡реЗ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ:

  • None - рд▓реЙрдЧ рди рдХрд░реЗрдВ;
  • Metadata - рд▓реЙрдЧ рдЕрдиреБрд░реЛрдз рдореЗрдЯрд╛рдбреЗрдЯрд╛: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛, рдЕрдиреБрд░реЛрдз рд╕рдордп, рд▓рдХреНрд╖реНрдп рд╕рдВрд╕рд╛рдзрди (рдкреЙрдб, рдиреЗрдорд╕реНрдкреЗрд╕, рдЖрджрд┐), рдПрдХреНрд╢рди рдкреНрд░рдХрд╛рд░ (рдХреНрд░рд┐рдпрд╛), рдЖрджрд┐;
  • Request - рд▓реЙрдЧ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдФрд░ рдЕрдиреБрд░реЛрдз рдирд┐рдХрд╛рдп;
  • RequestResponse - RequestResponse рдореЗрдЯрд╛рдбреЗрдЯрд╛, рдЕрдиреБрд░реЛрдз рдирд┐рдХрд╛рдп рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд┐рдХрд╛рдпред

рдкрд┐рдЫрд▓реЗ рджреЛ рд╕реНрддрд░ ( Request рдФрд░ Request ) рдЙрди рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд▓реЙрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рддрдХ рдирд╣реАрдВ RequestResponse (рддрдерд╛рдХрдерд┐рдд рдЧреИрд░-рд╕рдВрд╕рд╛рдзрди рдЖрдЧреНрд░рд╣ рдХреЛ рдХрд╣рддреЗ рд╣реИрдВ)ред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рднреА рдЕрдиреБрд░реЛрдз рдХрдИ рдЪрд░рдгреЛрдВ рд╕реЗ рдЧреБрдЬрд░рддреЗ рд╣реИрдВ:

  • RequestReceived - рд╡рд╣ рдЪрд░рдг рдЬрдм рдЕрдиреБрд░реЛрдз рд╣реИрдВрдбрд▓рд░ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЕрднреА рддрдХ рд╣реИрдВрдбрд▓рд░ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ;
  • ResponseStarted - рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реЗрдбрд░ рднреЗрдЬреЗ рдЧрдП, рд▓реЗрдХрд┐рди рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд┐рдХрд╛рдп рднреЗрдЬрдиреЗ рд╕реЗ рдкрд╣рд▓реЗред рд▓рдВрдмреЗ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрддреНрдкрдиреНрди (рдЬреИрд╕реЗ watch );
  • ResponseComplete - рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╢рд░реАрд░ рднреЗрдЬрд╛ рдЧрдпрд╛ рд╣реИ, рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рднреЗрдЬреА рдЬрд╛рдПрдЧреА;
  • Panic - рдХрд┐рд╕реА рдЖрдкрд╛рддрдХрд╛рд▓ рдХрд╛ рдкрддрд╛ рдЪрд▓рдиреЗ рдкрд░ рдШрдЯрдирд╛рдПрдБ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИрдВред

рдЖрдк рдХрд┐рд╕реА рднреА рдЪрд░рдг рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП omitStages рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдиреАрддрд┐ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рд╣рдо рд▓реЙрдЧрд┐рдВрдЧ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕реНрддрд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрдИ рд╡рд░реНрдЧреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдиреАрддрд┐ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдкрд╛рдпрд╛ рдЧрдпрд╛ рдкрд╣рд▓рд╛ рдорд┐рд▓рд╛рди рдирд┐рдпрдо рд▓рд╛рдЧреВ рд╣реЛрдЧрд╛ред

рдХреНрдпреВрдмрд▓реЗрдЯ рдбреЗрдореЙрди рдПрдкреА-рд╕рд░реНрд╡рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдкреНрд░рдХрдЯ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдХреЛрдИ рднреА рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ, рддреЛ рдпрд╣ рдХрдВрдЯреЗрдирд░ рдХреЛ рдПрдкреА-рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рд╡рд░рдг рд╣реИ: рд╡реЗ рдиреАрддрд┐ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рдЙрдкреЗрдХреНрд╖рд╛ рдХрд░реЗрдВрдЧреЗ ред рдиреАрддрд┐ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдПрдкреАрдЖрдИ-рд╕рд░реНрд╡рд░ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЪреВрдВрдХрд┐ рдПрдкреА-рд╕рд░реНрд╡рд░ рдПрдХ рд╕реНрдерд┐рд░ рдкреЙрдб рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП kubectl delete рдХрдорд╛рдВрдб рдЗрд╕реЗ рдкреБрдирдГ рдЖрд░рдВрдн рдирд╣реАрдВ kubectl delete ред рдЖрдкрдХреЛ рдХреВрдм-рд╕реНрд╡рд╛рдореА рдкрд░ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдбреЙрдХ docker stop рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ рдЬрд╣рд╛рдВ рдСрдбрд┐рдЯ рдиреАрддрд┐ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

 docker stop $(docker ps | grep k8s_kube-apiserver | awk '{print $1}') 

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

рдиреАрддрд┐ рдЙрджрд╛рд╣рд░рдг


рдЖрдЗрдП рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдиреАрддрд┐ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВред

Metadata рд╕реНрддрд░ рдкрд░ рд╕рдм рдХреБрдЫ рд▓реЙрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдПрдХ рд╕рд░рд▓ policy рдлрд╝рд╛рдЗрд▓ рд╣реИ:

 apiVersion: audit.k8s.io/v1 kind: Policy rules: - level: Metadata 

рдЖрдк рдиреАрддрд┐ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ ( Users рдФрд░ ServiceAccounts ) рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдореВрд╣реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рд╕рд┐рд╕реНрдЯрдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдХреИрд╕реЗ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди Request рд╕реНрддрд░ рдкрд░ рдмрд╛рдХреА рд╕рдм рдХреЛ рд▓реЙрдЧ рдЗрди рдХрд░реЗрдВ:

 apiVersion: audit.k8s.io/v1 kind: Policy rules: - level: None userGroups: - "system:serviceaccounts" - "system:nodes" users: - "system:anonymous" - "system:apiserver" - "system:kube-controller-manager" - "system:kube-scheduler" - level: Request 

рд▓рдХреНрд╖реНрдп рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рднреА рд╕рдВрднрд╡ рд╣реИ:

  • рдирд╛рдо рд╕реНрдерд╛рди ( namespaces );
  • рдХреНрд░рд┐рдпрд╛ ( рдХреНрд░рд┐рдпрд╛ : get , update , delete рдФрд░ рдЕрдиреНрдп);
  • рд╕рдВрд╕рд╛рдзрди ( рд╕рдВрд╕рд╛рдзрди , рдЕрд░реНрдерд╛рддреН: pod , configmaps , рдЖрджрд┐) рдФрд░ рд╕рдВрд╕рд╛рдзрди рд╕рдореВрд╣ ( apiGroups )ред

рдзреНрдпрд╛рди рджреЛ! рд╕рдВрд╕рд╛рдзрди рдФрд░ рд╕рдВрд╕рд╛рдзрди рд╕рдореВрд╣ (рдПрдкреАрдЖрдИ рд╕рдореВрд╣, рдпрд╛рдиреА рдПрдкреАрдЧреНрд░реБрдк), рд╕рд╛рде рд╣реА рд╕рд╛рде рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдЙрдирдХреЗ рд╕рдВрд╕реНрдХрд░рдг, рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ:

 kubectl api-resources kubectl api-versions 

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдСрдбрд┐рдЯ рдиреАрддрд┐ рдХреЛ рдЕрд▓реАрдмрд╛рдмрд╛ рдХреНрд▓рд╛рдЙрдб рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдУрдВ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

 apiVersion: audit.k8s.io/v1beta1 kind: Policy #    RequestReceived omitStages: - "RequestReceived" rules: #   ,     : - level: None users: ["system:kube-proxy"] verbs: ["watch"] resources: - group: "" #  api group   ,    #   Kubernetes,  тАЬcoreтАЭ resources: ["endpoints", "services"] - level: None users: ["system:unsecured"] namespaces: ["kube-system"] verbs: ["get"] resources: - group: "" # core resources: ["configmaps"] - level: None users: ["kubelet"] verbs: ["get"] resources: - group: "" # core resources: ["nodes"] - level: None userGroups: ["system:nodes"] verbs: ["get"] resources: - group: "" # core resources: ["nodes"] - level: None users: - system:kube-controller-manager - system:kube-scheduler - system:serviceaccount:kube-system:endpoint-controller verbs: ["get", "update"] namespaces: ["kube-system"] resources: - group: "" # core resources: ["endpoints"] - level: None users: ["system:apiserver"] verbs: ["get"] resources: - group: "" # core resources: ["namespaces"] #     read-only URLs: - level: None nonResourceURLs: - /healthz* - /version - /swagger* #   ,     тАЬтАЭ: - level: None resources: - group: "" # core resources: ["events"] #   Secret, ConfigMap  TokenReview    , #         - level: Metadata resources: - group: "" # core resources: ["secrets", "configmaps"] - group: authentication.k8s.io resources: ["tokenreviews"] #   get, list  watch   ;    - level: Request verbs: ["get", "list", "watch"] resources: - group: "" # core - group: "admissionregistration.k8s.io" - group: "apps" - group: "authentication.k8s.io" - group: "authorization.k8s.io" - group: "autoscaling" - group: "batch" - group: "certificates.k8s.io" - group: "extensions" - group: "networking.k8s.io" - group: "policy" - group: "rbac.authorization.k8s.io" - group: "settings.k8s.io" - group: "storage.k8s.io" #        API - level: RequestResponse resources: - group: "" # core - group: "admissionregistration.k8s.io" - group: "apps" - group: "authentication.k8s.io" - group: "authorization.k8s.io" - group: "autoscaling" - group: "batch" - group: "certificates.k8s.io" - group: "extensions" - group: "networking.k8s.io" - group: "policy" - group: "rbac.authorization.k8s.io" - group: "settings.k8s.io" - group: "storage.k8s.io" #         - level: Metadata 


рдПрдХ рдФрд░ рдЕрдЪреНрдЫрд╛ рдСрдбрд┐рдЯ рдкреЙрд▓рд┐рд╕реА рдЙрджрд╛рд╣рд░рдг рдЬреАрд╕реАрдИ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рд╣реИ ред

рдСрдбрд┐рдЯ рдШрдЯрдирд╛рдУрдВ рдХреА рддреНрд╡рд░рд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП, рдПрдХ webhook рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЦреБрд▓рд╛рд╕рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдореИрдВ рдЗрд╕реЗ рдЗрд╕ рд▓реЗрдЦ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рдЫреЛрдбрд╝ рджреВрдВрдЧрд╛ред

рдкрд░рд┐рдгрд╛рдо


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

рдкреБрдирд╢реНрдЪ


рд╣рдорд╛рд░реЗ рдмреНрд▓реЙрдЧ рдореЗрдВ рднреА рдкрдврд╝реЗрдВ:

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


All Articles