"DevOps рд╕рд╛рдареА Kubernetes" рдмреБрдХ рдХрд░рд╛

"DevOps рд╕рд╛рдареА Kubernetes" рдмреБрдХ рдХрд░рд╛ рд╣реЕрд▓реЛ, рдЦрдмрд░реЛ рд░рд╣рд┐рд╡рд╛рд╕реА! Kubernetes рдЖрдзреБрдирд┐рдХ рдХреНрд▓рд╛рдЙрдб рдЗрдХреЛрд╕рд┐рд╕реНрдЯрдордЪреНрдпрд╛ рдореБрдЦреНрдп рдШрдЯрдХрд╛рдВрдкреИрдХреА рдПрдХ рдЖрд╣реЗ. рд╣реЗ рддрдВрддреНрд░рдЬреНрдЮрд╛рди рдХрдВрдЯреЗрдирд░ рд╡рд░реНрдЪреНрдпреБрдЕрд▓рд╛рдпрдЭреЗрд╢рдирд▓рд╛ рд╡рд┐рд╢реНрд╡рд╛рд╕рд╛рд░реНрд╣рддрд╛, рд╕реНрдХреЗрд▓реЗрдмрд┐рд▓рд┐рдЯреА рдЖрдгрд┐ рд▓рд╡рдЪрд┐рдХрддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ. рдЬреЙрди рдЕрд░реБрдВрдбреЗрд▓ рдЖрдгрд┐ рдЬрд╕реНрдЯрд┐рди рдбреЛрдорд┐рдВрдЧрд╕ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдЗрдХреЛрд╕рд┐рд╕реНрдЯрдордмрджреНрджрд▓ рдмреЛрд▓рддрд╛рдд рдЖрдгрд┐ рджреИрдирдВрджрд┐рди рд╕рдорд╕реНрдпрд╛рдВрд╡рд░ рд╕рд┐рджреНрдз рдЭрд╛рд▓реЗрд▓реЗ рдЙрдкрд╛рдп рд╕рд╛рджрд░ рдХрд░рддрд╛рдд. рд╕реНрдЯреЗрдк рдмрд╛рдп рд╕реНрдЯреЗрдк, рддреБрдореНрд╣реА рддреБрдордЪрд╛ рд╕реНрд╡рддрдГрдЪрд╛ рдХреНрд▓рд╛рдЙрдб-рдиреЗрдЯрд┐рд╡реНрд╣ рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рди рддрдпрд╛рд░ рдХрд░рд╛рд▓ рдЖрдгрд┐ рддреНрдпрд╛рд▓рд╛ рд╕рдкреЛрд░реНрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдкрд╛рдпрд╛рднреВрдд рд╕реБрд╡рд┐рдзрд╛ рддрдпрд╛рд░ рдХрд░рд╛рд▓, рдбреЗрд╡реНрд╣рд▓рдкрдореЗрдВрдЯ рдПрдиреНрд╡реНрд╣рд╛рдпрд░реНрдирдореЗрдВрдЯ рдЖрдгрд┐ рд╕рддрдд рдбрд┐рдкреНрд▓реЙрдпрдореЗрдВрдЯ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рд╕реЗрдЯ рдХрд░рд╛рд▓ рдЬреА рддреБрдореНрд╣рд╛рд▓рд╛ рддреБрдордЪреНрдпрд╛ рдкреБрдвреАрд▓ рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕рд╡рд░ рдХрд╛рдо рдХрд░рддрд╛рдирд╛ рдорджрдд рдХрд░реЗрд▓.

тАв рдореВрд▓рднреВрдд рдЧреЛрд╖реНрдЯреАрдВрдкрд╛рд╕реВрди рдХрдВрдЯреЗрдирд░ рдЖрдгрд┐ рдХреБрдмрд░рдиреЗрдЯрд╕рд╣ рдкреНрд░рд╛рд░рдВрдн рдХрд░рд╛: рд╡рд┐рд╖рдп рд╢рд┐рдХрдгреНрдпрд╛рд╕рд╛рдареА рдХреЛрдгрддреНрдпрд╛рд╣реА рд╡рд┐рд╢реЗрд╖ рдЕрдиреБрднрд╡рд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╛рд╣реА. тАв рддреБрдордЪреЗ рд╕реНрд╡рддрдГрдЪреЗ рдХреНрд▓рд╕реНрдЯрд░ рдЪрд╛рд▓рд╡рд╛ рдХрд┐рдВрд╡рд╛ Amazon, Google рдЗ. рд╡рд░реВрди рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд Kubernetes рд╕реЗрд╡рд╛ рдирд┐рд╡рдбрд╛. тАв рдХрдВрдЯреЗрдирд░ рд▓рд╛рдЗрдлрд╕рд╛рдпрдХрд▓ рдЖрдгрд┐ рд╕рдВрд╕рд╛рдзрдирд╛рдВрдЪрд╛ рд╡рд╛рдкрд░ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА Kubernetes рд╡рд╛рдкрд░рд╛. тАв рдЦрд░реНрдЪ, рдХрд╛рд░реНрдпрдкреНрд░рджрд░реНрд╢рди, рд▓рд╡рдЪрд┐рдХрддрд╛, рд╢рдХреНрддреА рдЖрдгрд┐ рд╕реНрдХреЗрд▓реЗрдмрд┐рд▓рд┐рдЯреА рдпрд╛рд╡рд░ рдЖрдзрд╛рд░рд┐рдд рдХреНрд▓рд╕реНрдЯрд░реНрд╕ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЭ рдХрд░рд╛. тАв рддреБрдордЪреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЪрд╛рдЪрдгреА рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рдЙрдкрдпреЛрдЬрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕рд░реНрд╡реЛрддреНрддрдо рд╕рд╛рдзрдиреЗ рдЬрд╛рдгреВрди рдШреНрдпрд╛. рд╕реБрд░рдХреНрд╖рд╛ рдЖрдгрд┐ рдирд┐рдпрдВрддреНрд░рдг рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕рдзреНрдпрд╛рдЪреНрдпрд╛ рдЙрджреНрдпреЛрдЧ рдкрджреНрдзрддреАрдВрдЪрд╛ рд▓рд╛рдн рдШреНрдпрд╛. тАв рддреБрдордЪреНрдпрд╛ рд╕рдВрдкреВрд░реНрдг рдХрдВрдкрдиреАрдордзреНрдпреЗ DevOps рддрддреНрддреНрд╡реЗ рд▓рд╛рдЧреВ рдХрд░рд╛ рдЬреЗрдгреЗрдХрд░реВрди рд╡рд┐рдХрд╛рд╕ рдХрд╛рд░реНрдпрд╕рдВрдШ рдЕрдзрд┐рдХ рд▓рд╡рдЪрд┐рдХрдкрдгреЗ, рдЬрд▓рдж рдЖрдгрд┐ рдХрд╛рд░реНрдпрдХреНрд╖рдорддреЗрдиреЗ рдХрд╛рд░реНрдп рдХрд░реВ рд╢рдХрддреАрд▓.

рдкреБрд╕реНрддрдХ рдХреЛрдгрд╛рд╕рд╛рдареА рдЖрд╣реЗ?

рд╕рд░реНрд╡реНрд╣рд░, рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕ рдЖрдгрд┐ рд╕реЗрд╡рд╛рдВрд╕рд╛рдареА рдЬрдмрд╛рдмрджрд╛рд░ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдкреНрд░рд╢рд╛рд╕рди рд╡рд┐рднрд╛рдЧрд╛рддреАрд▓ рдХрд░реНрдордЪрд╛рд▒реНрдпрд╛рдВрд╕рд╛рдареА рддрд╕реЗрдЪ рдирд╡реАрди рдХреНрд▓рд╛рдЙрдб рд╕реЗрд╡рд╛ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдд рдХрд┐рдВрд╡рд╛ рд╡рд┐рджреНрдпрдорд╛рди рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕ Kubernetes рдЖрдгрд┐ рдХреНрд▓рд╛рдЙрдбрдордзреНрдпреЗ рд╕реНрдерд▓рд╛рдВрддрд░рд┐рдд рдХрд░рдгреНрдпрд╛рдд рдЧреБрдВрддрд▓реЗрд▓реНрдпрд╛ рдбреЗрд╡реНрд╣рд▓рдкрд░рд╕рд╛рдареА рд╣реЗ рдкреБрд╕реНрддрдХ рд╕рд░реНрд╡рд╛рдд рдЙрдкрдпреБрдХреНрдд рдЖрд╣реЗ. рдХрд╛рд│рдЬреА рдХрд░реВ рдирдХрд╛, рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдХрд┐рдВрд╡рд╛ рдХрдВрдЯреЗрдирд░рд╕рд╣ рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рд╛рд╡реЗ рд╣реЗ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдорд╛рд╣рд┐рдд рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдирд╛рд╣реА - рдЖрдореНрд╣реА рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рд╕рд░реНрд╡рдХрд╛рд╣реА рд╢рд┐рдХрд╡реВ.

рдЕрдиреБрднрд╡реА Kubernetes рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдирд╛ RBAC, рд╕рддрдд рдЙрдкрдпреЛрдЬрди, рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдбреЗрдЯрд╛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЖрдгрд┐ рдирд┐рд░реАрдХреНрд╖рдгрдХреНрд╖рдорддрд╛ рдпрд╛рд╕рд╛рд░рдЦреНрдпрд╛ рд╡рд┐рд╖рдпрд╛рдВрдЪреНрдпрд╛ рд╕рдЦреЛрд▓ рдХрд╡реНрд╣рд░реЗрдЬрд╕рд╣ рдмрд░реЗрдЪ рдореВрд▓реНрдп рдорд┐рд│реЗрд▓. рдЖрдореНтАНрд╣рд╛рд▓рд╛ рдЖрд╢рд╛ рдЖрд╣реЗ рдХреА рддреБрдордЪреНтАНрдпрд╛ рдХреМрд╢рд▓реНтАНрдпрд╛рдВрдЪреА рдЖрдгрд┐ рдЕрдиреБрднрд╡рд╛рдЪреА рдкрд░реНрд╡рд╛ рди рдХрд░рддрд╛, рдкреБрд╕реНтАНрддрдХрд╛рдЪреНтАНрдпрд╛ рдкрд╛рдирд╛рдВрд╡рд░ рддреБрдордЪреНтАНрдпрд╛рд╕рд╛рдареА рдирдХреНрдХреАрдЪ рдХрд╛рд╣реАрддрд░реА рдордиреЛрд░рдВрдЬрдХ рдЕрд╕реЗрд▓.

рдкреБрд╕реНрддрдХ рдХреЛрдгрддреНрдпрд╛ рдкреНрд░рд╢реНрдирд╛рдВрдЪреА рдЙрддреНрддрд░реЗ рджреЗрддреЗ?

рдкреБрд╕реНрддрдХрд╛рдЪреЗ рдирд┐рдпреЛрдЬрди рдЖрдгрд┐ рд▓реЗрдЦрди рдХрд░рддрд╛рдирд╛, рдЖрдореНрд╣реА рд╢реЗрдХрдбреЛ рд▓реЛрдХрд╛рдВрд╢реА рдХреНрд▓рд╛рдЙрдб рдЯреЗрдХреНрдиреЙрд▓реЙрдЬреА рдЖрдгрд┐ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рд╡рд░ рдЪрд░реНрдЪрд╛ рдХреЗрд▓реА, рдЙрджреНрдпреЛрдЧрд╛рддреАрд▓ рдиреЗрддреЗ рдЖрдгрд┐ рддрдЬреНрдЮ рддрд╕реЗрдЪ рдкреВрд░реНрдг рдирд╡рд╢рд┐рдХреНрдпрд╛рдВрд╢реА рдмреЛрд▓рд▓реЛ. рдЦрд╛рд▓реА рдирд┐рд╡рдбрдХ рдкреНрд░рд╢реНрди рдЖрд╣реЗрдд рдЬреНрдпрд╛рдВрдЪреА рдЙрддреНрддрд░реЗ рддреНрдпрд╛рдВрдирд╛ рдпрд╛ рдкреНрд░рдХрд╛рд╢рдирд╛рдд рдкрд╣рд╛рдпрдЪреА рдЖрд╣реЗрдд.

  • тАЬрддреБрдореНрд╣реА рдпрд╛ рддрдВрддреНрд░рдЬреНрдЮрд╛рдирд╛рд╡рд░ рд╡реЗрд│ рдХрд╛ рдШрд╛рд▓рд╡рд╛рд╡рд╛ рдпрд╛рдд рдорд▓рд╛ рд░рд╕ рдЖрд╣реЗ. рддреЗ рдорд▓рд╛ рдЖрдгрд┐ рдорд╛рдЭреНрдпрд╛ рдЯреАрдорд▓рд╛ рдХреЛрдгрддреНрдпрд╛ рд╕рдорд╕реНрдпрд╛ рд╕реЛрдбрд╡рдгреНрдпрд╛рд╕ рдорджрдд рдХрд░реЗрд▓?тАЭ
  • "рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдордиреЛрд░рдВрдЬрдХ рд╡рд╛рдЯрддрд╛рдд, рдкрд░рдВрддреБ рдкреНрд░рд╡реЗрд╢рд╛рд╕рд╛рдареА рдмрд░рд╛рдЪ рдореЛрдард╛ рдЕрдбрдерд│рд╛ рдЖрд╣реЗ. рдПрдХ рд╕рд╛рдзреЗ рдЙрджрд╛рд╣рд░рдг рддрдпрд╛рд░ рдХрд░рдгреЗ рдХрдареАрдг рдирд╛рд╣реА, рдкрд░рдВрддреБ рдкреБрдвреАрд▓ рдкреНрд░рд╢рд╛рд╕рди рдЖрдгрд┐ рдбреАрдмрдЧ рдХрд░рдгреЗ рдХрдареАрдг рдЖрд╣реЗ. рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬрдЧрд╛рдд рд▓реЛрдХ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдХреНрд▓рд╕реНрдЯрд░реНрд╕ рдХрд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛рдд рдЖрдгрд┐ рдЖрдореНрд╣рд╛рд▓рд╛ рдХреЛрдгрддреНрдпрд╛ рд╕рдорд╕реНрдпрд╛рдВрдирд╛ рд╕рд╛рдореЛрд░реЗ рдЬрд╛рд╡реЗ рд▓рд╛рдЧрдгреНрдпрд╛рдЪреА рд╢рдХреНрдпрддрд╛ рдЖрд╣реЗ рдпрд╛рдмрджреНрджрд▓ рдЖрдореНрд╣рд╛рд▓рд╛ рд╡рд┐рд╢реНрд╡рд╛рд╕рд╛рд░реНрд╣ рд╕рд▓реНрд▓рд╛ рдорд┐рд│реВ рдЗрдЪреНрдЫрд┐рддреЛ."
  • "рд╡реНрдпрдХреНрддрд┐рдирд┐рд╖реНрда рд╕рд▓реНрд▓рд╛ рдЙрдкрдпреБрдХреНрдд рдард░реЗрд▓. Kubernetes рдЗрдХреЛрд╕рд┐рд╕реНрдЯрдо рдирд╡реАрди рд╕рдВрдШрд╛рдВрдирд╛ рдирд┐рд╡рдбрдгреНрдпрд╛рд╕рд╛рдареА рдмрд░реЗрдЪ рдкрд░реНрдпрд╛рдп рджреЗрддреЗ. рдЬреЗрд╡реНрд╣рд╛ рдПрдХрдЪ рдЧреЛрд╖реНрдЯ рдХрд░рдгреНрдпрд╛рдЪреЗ рдЕрдиреЗрдХ рдорд╛рд░реНрдЧ рдЕрд╕рддрд╛рдд, рддреЗрд╡реНрд╣рд╛ рдХреЛрдгрддрд╛ рд╕рд░реНрд╡реЛрддреНрддрдо рдЖрд╣реЗ рд╣реЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдХрд╕реЗ рдХрд│реЗрд▓? рдирд┐рд╡рдб рдХрд╢реА рдХрд░рд╛рд╡реА?

рдЖрдгрд┐ рдХрджрд╛рдЪрд┐рдд рд╕рд░реНрд╡ рдкреНрд░рд╢реНрдирд╛рдВрдкреИрдХреА рд╕рд░реНрд╡рд╛рдд рдорд╣рддреНрд╡рд╛рдЪреЗ:

  • "рдорд╛рдЭреНрдпрд╛ рдХрдВрдкрдиреАрдд рд╡реНрдпрддреНрдпрдп рди рдЖрдгрддрд╛ рдореА рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдХрд╕реЗ рд╡рд╛рдкрд░реВ рд╢рдХрддреЛ?"

рдЙрддрд╛рд░рд╛. рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдЖрдгрд┐ рдЧреБрдкреНрдд рд╡рд╕реНрддреВ

рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдНрдкреНрд▓рд┐рдХреЗрд╢рдирдЪреЗ рд▓реЙрдЬрд┐рдХ рддреНрдпрд╛рдЪреНрдпрд╛ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рдирдкрд╛рд╕реВрди рд╡реЗрдЧрд│реЗ рдХрд░рдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛ (рдореНрд╣рдгрдЬреЗрдЪ, рд╡реЗрд│реЛрд╡реЗрд│реА рдмрджрд▓реВ рд╢рдХрдгрд╛рд░реНтАНрдпрд╛ рдХреЛрдгрддреНрдпрд╛рд╣реА рдореВрд▓реНрдпреЗ рдХрд┐рдВрд╡рд╛ рд╕реЗрдЯрд┐рдВрдЧреНрдЬрдордзреВрди) рдЦреВрдк рдЙрдкрдпреБрдХреНрдд рдЖрд╣реЗ. рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдореВрд▓реНрдпрд╛рдВрдордзреНрдпреЗ рд╕рд╛рдорд╛рдиреНрдпрдд: рдкрд░реНрдпрд╛рд╡рд░рдг-рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрдЬ, рддреГрддреАрдп-рдкрдХреНрд╖ рд╕реЗрд╡рд╛ DNS рдкрддреНрддреЗ рдЖрдгрд┐ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреНрд░реЗрдбреЗрдиреНрд╢рд┐рдпрд▓реНрд╕ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЕрд╕рддрд╛рдд.

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

Kubernetes рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЕрдиреЗрдХ рднрд┐рдиреНрди рдорд╛рд░реНрдЧ рдкреНрд░рджрд╛рди рдХрд░рддреЗ. рдкреНрд░рдердо, рддреБрдореНрд╣реА рдкреЙрдб рд░реЕрдкрд░ рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рдирдордзреНрдпреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдПрдиреНрд╡реНрд╣рд╛рдпрд░реНрдирдореЗрдВрдЯ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕рджреНрд╡рд╛рд░реЗ рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рдирдордзреНрдпреЗ рдореВрд▓реНрдпреЗ рдкрд╛рд╕ рдХрд░реВ рд╢рдХрддрд╛ (рдкреГрд╖реНрда 192 рд╡рд░ тАЬрдкрд░реНрдпрд╛рд╡рд░рдг рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕тАЭ рдкрд╣рд╛). рджреБрд╕рд░реЗ, рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдбреЗрдЯрд╛ рдХреЙрдиреНрдлрд┐рдЧрдореЕрдк рдЖрдгрд┐ рд╕рд┐рдХреНрд░реЗрдЯ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рд╡рд╛рдкрд░реВрди рдереЗрдЯ рдХреБрдмрд░рдиреЗрдЯрдордзреНрдпреЗ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХреЗрд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ.

рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд, рдЖрдореНрд╣реА рдпрд╛ рд╡рд╕реНрддреВрдВрдЪреЗ рддрдкрд╢реАрд▓рд╡рд╛рд░ рдЕрдиреНрд╡реЗрд╖рдг рдХрд░рддреЛ рдЖрдгрд┐ рдбреЗрдореЛ рдНрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд╛рдкрд░реВрди рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдЖрдгрд┐ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдбреЗрдЯрд╛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХрд╛рд╣реА рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рджреГрд╖реНрдЯрд┐рдХреЛрди рдкрд╛рд╣реВ.

рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдмрджрд▓рддреЗ рддреЗрд╡реНрд╣рд╛ рдкреЙрдб рд╢реЗрд▓ рдЕрджреНрдпрддрдирд┐рдд рдХрд░рдгреЗ

рдХрд▓реНрдкрдирд╛ рдХрд░рд╛ рдХреА рддреБрдордЪреНрдпрд╛ рдХреНрд▓рд╕реНрдЯрд░рдордзреНрдпреЗ рдПрдХ рдЙрдкрдпреЛрдЬрди рдЖрд╣реЗ рдЖрдгрд┐ рддреБрдореНрд╣рд╛рд▓рд╛ рддреНрдпрд╛рдЪреНрдпрд╛ рдХреЙрдиреНрдлрд┐рдЧрдореЕрдкрдордзреНрдпреЗ рдХрд╛рд╣реА рдореВрд▓реНрдпреЗ рдмрджрд▓рд╛рдпрдЪреА рдЖрд╣реЗрдд. рддреБрдореНрд╣реА рд╣реЗрд▓реНрдо рдЪрд╛рд░реНрдЯ рд╡рд╛рдкрд░рдд рдЕрд╕рд▓реНрдпрд╛рд╕ (рдкреГрд╖реНрда 102 рд╡рд░ тАЬрд╣реЗрд▓реНрдо: рдХреБрдмрд░рдиреЗрдЯреЗрд╕рд╕рд╛рдареА рдкреЕрдХреЗрдЬ рдореЕрдиреЗрдЬрд░тАЭ рдкрд╣рд╛), рддреБрдореНрд╣реА рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдмрджрд▓ рдЖрдкреЛрдЖрдк рд╢реЛрдзреВ рд╢рдХрддрд╛ рдЖрдгрд┐ рдПрдХрд╛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдпреБрдХреНрддреАрдиреЗ рддреБрдордЪреЗ рдкреЙрдб рд╢реЗрд▓ рд░реАрд▓реЛрдб рдХрд░реВ рд╢рдХрддрд╛. рддреБрдордЪреНрдпрд╛ рдбрд┐рдкреНрд▓реЙрдпрдореЗрдВрдЯ рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рдирдордзреНрдпреЗ рдЦрд╛рд▓реАрд▓ рднрд╛рд╖реНрдп рдЬреЛрдбрд╛:

checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") .
       | sha256sum }}

рдбрд┐рдкреНрд▓реЙрдпрдореЗрдВрдЯ рдЯреЗрдореНрдкреНрд▓реЗрдЯрдордзреНрдпреЗ рдЖрддрд╛ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕рдЪрд╛ рдЪреЗрдХрд╕рдо рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗ: рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рдмрджрд▓рд▓реНрдпрд╛рд╕, рдмреЗрд░реАрдЬ рдЕрдкрдбреЗрдЯ рдХреЗрд▓реА рдЬрд╛рдИрд▓. рддреБрдореНрд╣реА рд╣реЗрд▓реНрдо рдЕрдкрдЧреНрд░реЗрдб рдЪрд╛рд▓рд╡рд▓реНрдпрд╛рд╕, рд╣реЗрд▓реНрдо рдбрд┐рдкреНрд▓реЙрдпрдореЗрдВрдЯ рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рди рдмрджрд▓рд▓реЗ рдЖрд╣реЗ рд╣реЗ рдУрд│рдЦреЗрд▓ рдЖрдгрд┐ рд╕рд░реНрд╡ рдкреЙрдб рд╢реЗрд▓ рд░реАрд╕реНрдЯрд╛рд░реНрдЯ рдХрд░реЗрд▓.

Kubernetes рдордзреАрд▓ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдбреЗрдЯрд╛

рдЖрдореНрд╣рд╛рд▓рд╛ рдЖрдзреАрдЪ рдорд╛рд╣рд┐рдд рдЖрд╣реЗ рдХреА рдХреЙрдиреНрдлрд┐рдЧрдореЕрдк рдСрдмреНрдЬреЗрдХреНрдЯ рдХреНрд▓рд╕реНрдЯрд░рдордзреНрдпреЗ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдбреЗрдЯрд╛ рд╕рдВрдЪрдпрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рддреНрдпрд╛рдд рдкреНрд░рд╡реЗрд╢ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдПрдХ рд▓рд╡рдЪрд┐рдХ рдпрдВрддреНрд░рдгрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ. рддрдерд╛рдкрд┐, рдмрд╣реБрддреЗрдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдВрдордзреНрдпреЗ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдЖрдгрд┐ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдорд╛рд╣рд┐рддреА рдЕрд╕рддреЗ, рдЬрд╕реЗ рдХреА рдкрд╛рд╕рд╡рд░реНрдб рдХрд┐рдВрд╡рд╛ API рдХреА. рд╣реЗ ConfigMap рдордзреНрдпреЗ рджреЗрдЦреАрд▓ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ, рдкрд░рдВрддреБ рд╣реЗ рд╕рдорд╛рдзрд╛рди рдЖрджрд░реНрд╢ рдирд╛рд╣реА.

рддреНрдпрд╛рдРрд╡рдЬреА, Kubernetes рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдбреЗрдЯрд╛ рд╕рдВрдЪрдпрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдбрд┐рдЭрд╛рдЗрди рдХреЗрд▓реЗрд▓реЗ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рдХрд╛рд░рдЪреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдСрдлрд░ рдХрд░рддреЗ: рдЧреБрдкреНрдд. рдкреБрдвреЗ, рд╣реА рд╡рд╕реНрддреВ рдЖрдордЪреНрдпрд╛ рдбреЗрдореЛ рдНрдкреНрд▓рд┐рдХреЗрд╢рдирдордзреНрдпреЗ рдХрд╢реА рд╡рд╛рдкрд░рд▓реА рдЬрд╛рдК рд╢рдХрддреЗ рдпрд╛рдЪреЗ рдЙрджрд╛рд╣рд░рдг рдкрд╛рд╣реВ.

рдкреНрд░рд╛рд░рдВрдн рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЧреБрдкреНрдд рдСрдмреНрдЬреЗрдХреНрдЯрд╕рд╛рдареА рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдореЕрдирд┐рдлреЗрд╕реНрдЯ рдкрд╣рд╛ (hello-secret-env/k8s/secret.yaml рдкрд╣рд╛):

apiVersion: v1
kind: Secret
metadata:
    name: demo-secret
stringData:
    magicWord: xyzzy

рдпрд╛ рдЙрджрд╛рд╣рд░рдгрд╛рдд, рдореЕрдЬрд┐рдХрд╡рд░реНрдб рдкреНрд░рд╛рдпрд╡реНрд╣реЗрдЯ рдХреА xyzzy (en.wikipedia.org/wiki/Xyzzy_(computing)) рдЖрд╣реЗ. xyzzy рд╣рд╛ рд╢рдмреНрдж рд╕рд╛рдзрд╛рд░рдгрдкрдгреЗ рд╕рдВрдЧрдгрдХрд╛рдЪреНрдпрд╛ рдЬрдЧрд╛рдд рдЦреВрдк рдЙрдкрдпреБрдХреНрдд рдЖрд╣реЗ. ConfigMap рдкреНрд░рдорд╛рдгреЗ, рддреБрдореНрд╣реА рдПрдХрд╛ рдЧреБрдкреНрдд рдСрдмреНрдЬреЗрдХреНрдЯрдордзреНрдпреЗ рдПрдХрд╛рдзрд┐рдХ рдХреА рдЖрдгрд┐ рдореВрд▓реНрдпреЗ рд╕рдВрдЪрдпрд┐рдд рдХрд░реВ рд╢рдХрддрд╛. рдпреЗрдереЗ, рд╕рд╛рдзреЗрдкрдгрд╛рд╕рд╛рдареА, рдЖрдореНрд╣реА рдлрдХреНрдд рдПрдХ рдХреА-рд╡реНрд╣реЕрд▓реНрдпреВ рдЬреЛрдбреА рд╡рд╛рдкрд░рддреЛ.

рдкрд░реНрдпрд╛рд╡рд░рдгреАрдп рдЪрд▓ рдореНрд╣рдгреВрди рдЧреБрдкреНрдд рд╡рд╕реНрддреВ рд╡рд╛рдкрд░рдгреЗ

рдХреЙрдиреНрдлрд┐рдЧрдореЕрдк рдкреНрд░рдорд╛рдгреЗ, рд╕реАрдХреНрд░реЗрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрдВрдЯреЗрдирд░рдордзреНрдпреЗ рдкрд░реНрдпрд╛рд╡рд░рдг рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХрд┐рдВрд╡рд╛ рддреНрдпрд╛рдЪреНрдпрд╛ рдбрд┐рд╕реНрдХрд╡рд░ рдлрд╛рдЗрд▓ рдореНрд╣рдгреВрди рдЙрдкрд▓рдмреНрдз рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ. рдЦрд╛рд▓реАрд▓ рдЙрджрд╛рд╣рд░рдгрд╛рдд, рдЖрдореНрд╣реА Secret рдордзреАрд▓ рд╡реНрд╣реЕрд▓реНрдпреВрд▓рд╛ рдкрд░реНрдпрд╛рд╡рд░рдг рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рдирд┐рдпреБрдХреНрдд рдХрд░реВ:

spec:
   containers:
       - name: demo
          image: cloudnatived/demo:hello-secret-env
          ports:
             - containerPort: 8888
          env:
             - name: GREETING
               valueFrom:
               secretKeyRef:
                  name: demo-secret
                  key: magicWord

рдореЕрдирд┐рдлреЗрд╕реНтАНрдЯ рд▓рд╛рдЧреВ рдХрд░рдгреНтАНрдпрд╛рд╕рд╛рдареА рдбреЗрдореЛ рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдордзреНтАНрдпреЗ рдЦрд╛рд▓реАрд▓ рдХрдорд╛рдВрдб рдЪрд╛рд▓рд╡рд╛:

kubectl apply -f hello-secret-env/k8s/
deployment.extensions "demo" configured
secret "demo-secret" created

рдкреВрд░реНрд╡реАрдкреНрд░рдорд╛рдгреЗ, рддреБрдордЪреНрдпрд╛ рдмреНрд░рд╛рдЙрдЭрд░рдордзреНрдпреЗ рдкрд░рд┐рдгрд╛рдо рдкрд╛рд╣рдгреНрдпрд╛рд╕рд╛рдареА рд╕реНрдерд╛рдирд┐рдХ рдкреЛрд░реНрдЯ рддреИрдирд╛рддреАрдХрдбреЗ рдкрд╛рдард╡рд╛:

kubectl port-forward deploy/demo 9999:8888
Forwarding from 127.0.0.1:9999 -> 8888
Forwarding from [::1]:9999 -> 8888

рдкрддреНрддрд╛ рдЙрдШрдбрддрд╛рдирд╛ localhost:9999/ рддреБрдореНрд╣рд╛рд▓рд╛ рдЦрд╛рд▓реАрд▓ рджрд┐рд╕рд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ:

The magic word is "xyzzy"

рдлрд╛рдИрд▓реНрд╕рдордзреНрдпреЗ рдЧреБрдкреНрдд рд╡рд╕реНрддреВ рд▓рд┐рд╣рд┐рдгреЗ

рдпрд╛ рдЙрджрд╛рд╣рд░рдгрд╛рдд, рдЖрдореНрд╣реА рдХрдВрдЯреЗрдирд░рд▓рд╛ рдПрдХ рдлрд╛рдЗрд▓ рдореНрд╣рдгреВрди рдЧреБрдкреНрдд рдСрдмреНрдЬреЗрдХреНрдЯ рд╕рдВрд▓рдЧреНрди рдХрд░реВ. рдХреЛрдб рдбреЗрдореЛ рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдЪреНрдпрд╛ hello-secret-file рдлреЛрд▓реНрдбрд░рдордзреНрдпреЗ рд╕реНрдерд┐рдд рдЖрд╣реЗ.

рд╕реАрдХреНрд░реЗрдЯрд▓рд╛ рдлрд╛рдЗрд▓ рдореНрд╣рдгреВрди рдХрдиреЗрдХреНрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдореНрд╣реА рдЦрд╛рд▓реАрд▓ рдЙрдкрдпреЛрдЬрди рд╡рд╛рдкрд░реВ:

spec:
   containers:
       - name: demo
          image: cloudnatived/demo:hello-secret-file
          ports:
              - containerPort: 8888
          volumeMounts:
              - name: demo-secret-volume
                mountPath: "/secrets/"
                readOnly: true
   volumes:
      - name: demo-secret-volume
        secret:
           secretName: demo-secret

p рд╡рд░ "рдХреЙрдиреНрдлрд┐рдЧрдореЕрдк рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕рдордзреВрди рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдлрд╛рдЗрд▓реНрд╕ рддрдпрд╛рд░ рдХрд░рдгреЗ" рдпрд╛ рдЙрдкрд╡рд┐рднрд╛рдЧрд╛рдкреНрд░рдорд╛рдгреЗ. 240, рдЖрдореНрд╣реА рдПрдХ рд╡реНрд╣реЙрд▓реНрдпреВрдо рддрдпрд╛рд░ рдХрд░рддреЛ (рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд рдбреЗрдореЛ-рд╕рд┐рдХреНрд░реЗрдЯ-рд╡реНрд╣реЙрд▓реНрдпреВрдо) рдЖрдгрд┐ рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рдирдЪреНрдпрд╛ рд╡реНрд╣реЙрд▓реНрдпреВрдо рдорд╛рдЙрдВрдЯреНрд╕ рд╡рд┐рднрд╛рдЧрд╛рдд рдХрдВрдЯреЗрдирд░рд╡рд░ рдорд╛рдЙрдВрдЯ рдХрд░рддреЛ. mountPath рдлреАрд▓реНрдб /secrets рдЖрд╣реЗ, рдореНрд╣рдгреВрди рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдпрд╛ рдлреЛрд▓реНрдбрд░рдордзреНрдпреЗ рд╕рд┐рдХреНрд░реЗрдЯ рдСрдмреНрдЬреЗрдХреНрдЯрдордзреНрдпреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреЗрд▓реЗрд▓реНрдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рдХреА/рд╡реНрд╣реЕрд▓реНрдпреВ рдЬреЛрдбреАрд╕рд╛рдареА рдПрдХ рдлрд╛рдЗрд▓ рддрдпрд╛рд░ рдХрд░реЗрд▓.

рдЖрдордЪреНрдпрд╛ рдЙрджрд╛рд╣рд░рдгрд╛рдд, рдЖрдореНрд╣реА рдореЕрдЬрд┐рдХрд╡рд░реНрдб рдирд╛рд╡рд╛рдЪреА рдлрдХреНрдд рдПрдХ рдХреА-рд╡реНрд╣реЕрд▓реНрдпреВ рдЬреЛрдбреА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреЗрд▓реА рдЖрд╣реЗ, рддреНрдпрд╛рдореБрд│реЗ рдореЕрдирд┐рдлреЗрд╕реНрдЯ рдХрдВрдЯреЗрдирд░рдордзреАрд▓ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдбреЗрдЯрд╛рд╕рд╣ рдПрдХрд▓-рд╡рд╛рдЪрдиреАрдп рдлрд╛рдЗрд▓ /secrets/magicWord рддрдпрд╛рд░ рдХрд░реЗрд▓.

рддреБрдореНрд╣реА рд╣реЗ рдореЕрдирд┐рдлреЗрд╕реНрдЯ рдорд╛рдЧреАрд▓ рдЙрджрд╛рд╣рд░рдгрд╛рдкреНрд░рдорд╛рдгреЗрдЪ рд▓рд╛рдЧреВ рдХреЗрд▓реНрдпрд╛рд╕, рддреБрдореНрд╣рд╛рд▓рд╛ рд╕рдорд╛рди рдкрд░рд┐рдгрд╛рдо рдорд┐рд│рд╛рд╡рд╛:

The magic word is "xyzzy"

рдЧреБрдкреНрдд рд╡рд╕реНрддреВ рд╡рд╛рдЪрдгреЗ

рдорд╛рдЧреАрд▓ рд╡рд┐рднрд╛рдЧрд╛рдд, рдХреЙрдиреНрдлрд┐рдЧрдореЕрдкрдЪреА рд╕рд╛рдордЧреНрд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдореНрд╣реА kubectl describe рдХрдорд╛рдВрдбрдЪрд╛ рд╡рд╛рдкрд░ рдХреЗрд▓рд╛. рд╕рд┐рдХреНрд░реЗрдЯрдЪреНрдпрд╛ рдмрд╛рдмрддреАрддрд╣реА рдЕрд╕реЗрдЪ рдХрд░рддрд╛ рдпреЗрдИрд▓ рдХрд╛?

kubectl describe secret/demo-secret
Name:          demo-secret

Namespace:      default
Labels:             <none>
Annotations:
Type:               Opaque

Data
====
magicWord: 5   bytes

рдХреГрдкрдпрд╛ рд▓рдХреНрд╖рд╛рдд рдШреНрдпрд╛ рдХреА рдбреЗрдЯрд╛ рд╕реНрд╡рддрдГ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдд рдирд╛рд╣реА. Kubernetes рдордзреАрд▓ рдЧреБрдкреНрдд рд╡рд╕реНрддреВ рдЕрдкрд╛рд░рджрд░реНрд╢рдХ рдкреНрд░рдХрд╛рд░рдЪреНрдпрд╛ рдЕрд╕рддрд╛рдд, рдореНрд╣рдгрдЬреЗ рддреНрдпрд╛рдВрдЪреА рд╕рд╛рдордЧреНрд░реА kubectl рд╡рд░реНрдгрди рдЖрдЙрдЯрдкреБрдЯ, рд▓реЙрдЧ рдПрдВрдЯреНрд░реА рдХрд┐рдВрд╡рд╛ рдЯрд░реНрдорд┐рдирд▓рдордзреНрдпреЗ рджрд░реНрд╢рд╡рд┐рд▓реА рдЬрд╛рдд рдирд╛рд╣реА, рдЬреНрдпрд╛рдореБрд│реЗ рдЪреБрдХреВрди рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдорд╛рд╣рд┐рддреА рдЙрдШрдб рдХрд░рдгреЗ рдЕрд╢рдХреНрдп рд╣реЛрддреЗ.

рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдбреЗрдЯрд╛рдЪреА рдПрдиреНрдХреЛрдб рдХреЗрд▓реЗрд▓реА YAML рдЖрд╡реГрддреНрддреА рдкрд╛рд╣рдгреНрдпрд╛рд╕рд╛рдареА, kubectl get рдХрдорд╛рдВрдб рд╡рд╛рдкрд░рд╛:

kubectl get secret/demo-secret -o yaml
apiVersion: v1
data:
   magicWord: eHl6enk=
kind: Secret
metadata:
...
type: Opaque

рдмреЗрд╕ 64

eHl6enk= рдХрд╛рдп рдЖрд╣реЗ, рдЖрдордЪреНрдпрд╛ рдореВрд│ рдореВрд▓реНрдпрд╛рдкреЗрдХреНрд╖рд╛ рдкреВрд░реНрдгрдкрдгреЗ рднрд┐рдиреНрди? рд╣реЗ рдкреНрд░рддреНрдпрдХреНрд╖рд╛рдд рдПрдХ рдЧреБрдкреНрдд рдСрдмреНрдЬреЗрдХреНрдЯ рдЖрд╣реЗ, рдЬреЗ рдмреЗрд╕64 рдПрдиреНрдХреЛрдбрд┐рдВрдЧрдордзреНрдпреЗ рдкреНрд░рд╕реНрддреБрдд рдХреЗрд▓реЗ рдЬрд╛рддреЗ. рдмреЗрд╕64 рд╣реА рд╡рд░реНрдгрд╛рдВрдЪреА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореНрд╣рдгреВрди рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рдмрд╛рдпрдирд░реА рдбреЗрдЯрд╛ рдПрдиреНрдХреЛрдб рдХрд░рдгреНрдпрд╛рдЪреА рдпреЛрдЬрдирд╛ рдЖрд╣реЗ.

рдХрд╛рд░рдг рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдорд╛рд╣рд┐рддреА рдмрд╛рдпрдирд░реА рдЕрд╕реВ рд╢рдХрддреЗ рдЖрдгрд┐ рдЖрдЙрдЯрдкреБрдЯ рдирд╛рд╣реА (рдЬрд╕реЗ TLS рдПрдирдХреНрд░рд┐рдкреНрд╢рди рдХреАрдЪреНрдпрд╛ рдмрд╛рдмрддреАрдд рдЖрд╣реЗ), рдЧреБрдкреНрдд рд╡рд╕реНрддреВ рдиреЗрд╣рдореА рдмреЗрд╕64 рдлреЙрд░рдореЕрдЯрдордзреНрдпреЗ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХреЗрд▓реНрдпрд╛ рдЬрд╛рддрд╛рдд.

beHl6enk= рд╣рд╛ рдордЬрдХреВрд░ рдЖрдордЪреНрдпрд╛ рдЧреБрдкреНрдд рд╢рдмреНрдж xyzzy рдЪреА рдмреЗрд╕64 рдПрдиреНрдХреЛрдб рдХреЗрд▓реЗрд▓реА рдЖрд╡реГрддреНрддреА рдЖрд╣реЗ. рддреБрдореНрд╣реА рдЯрд░реНрдорд┐рдирд▓рдордзреНрдпреЗ base64 тАФdecode рдХрдорд╛рдВрдб рдЪрд╛рд▓рд╡реВрди рд╣реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реВ рд╢рдХрддрд╛:

echo "eHl6enk=" | base64 --decode
xyzzy

рддреНрдпрд╛рдореБрд│реЗ, рдЯрд░реНрдорд┐рдирд▓ рдХрд┐рдВрд╡рд╛ рд▓реЙрдЧ рдлрд╛рдИрд▓реНрд╕рдордзреАрд▓ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдбреЗрдЯрд╛ рдЪреБрдХреВрди рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдгреНрдпрд╛рдкрд╛рд╕реВрди Kubernetes рддреБрдордЪреЗ рд╕рдВрд░рдХреНрд╖рдг рдХрд░рддреЗ, рдЬрд░ рддреБрдореНрд╣реА рдПрдЦрд╛рджреНрдпрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдиреЗрдорд╕реНрдкреЗрд╕рдордзреНрдпреЗ рдЧреБрдкреНрдд рд╡рд╕реНрддреВрдВрд╡рд░реАрд▓ рдкрд░рд╡рд╛рдирдЧреНрдпрд╛ рд╡рд╛рдЪрд▓реНрдпрд╛ рдЕрд╕рддреАрд▓, рддрд░ рддреЛ рдбреЗрдЯрд╛ рдмреЗрд╕64 рдЖрдгрд┐ рдирдВрддрд░ рдбреАрдХреЛрдб рдХреЗрд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ.

рдЬрд░ рддреБрдореНрд╣рд╛рд▓рд╛ рдХрд╛рд╣реА рдордЬрдХреВрд░ рдмреЗрд╕64 рдПрдиреНрдХреЛрдб рдХрд░рд╛рдпрдЪрд╛ рдЕрд╕реЗрд▓ (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рддреЛ рдЧреБрдкреНрдд рдареЗрд╡рдгреНрдпрд╛рд╕рд╛рдареА), рд╡рд┐рддрд░реНрдХрд╛рдВрд╢рд┐рд╡рд╛рдп рдмреЗрд╕64 рдХрдорд╛рдВрдб рд╡рд╛рдкрд░рд╛:

echo xyzzy | base64
eHl6enkK

рдЧреБрдкреНрдд рд╡рд╕реНрддреВрдВрдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢ рдХрд░рдгреЗ

рдЧреБрдкреНрдд рд╡рд╕реНрддреВ рдХреЛрдг рд╡рд╛рдЪреВ рдЖрдгрд┐ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реВ рд╢рдХрддреЛ? рд╣реЗ RBAC рджреНрд╡рд╛рд░реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддреЗ, рдПрдХ рдкреНрд░рд╡реЗрд╢ рдирд┐рдпрдВрддреНрд░рдг рдпрдВрддреНрд░рдгрд╛ (рдЖрдореНрд╣реА рдкреГрд╖реНрда 258 рд╡рд░реАрд▓ "рднреВрдорд┐рдХрд╛-рдЖрдзрд╛рд░рд┐рдд рдкреНрд░рд╡реЗрд╢ рдирд┐рдпрдВрддреНрд░рдгрд╛рдЪрд╛ рдкрд░рд┐рдЪрдп" рдпрд╛ рдЙрдкрд╡рд┐рднрд╛рдЧрд╛рдд рддрдкрд╢реАрд▓рд╡рд╛рд░ рдЪрд░реНрдЪрд╛ рдХрд░реВ). рддреБрдореНрд╣реА RBAC рдирд╕рд▓реЗрд▓реЗ рдХрд┐рдВрд╡рд╛ рд╕рдХреНрд╖рдо рдирд╕рд▓реЗрд▓реЗ рдХреНрд▓рд╕реНрдЯрд░ рдЪрд╛рд▓рд╡рдд рдЕрд╕рд▓реНрдпрд╛рд╕, рддреБрдордЪреНрдпрд╛ рд╕рд░реНрд╡ рдЧреБрдкреНрдд рд╡рд╕реНрддреВ рдХреЛрдгрддреНрдпрд╛рд╣реА рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрд╕рд╛рдареА рдЖрдгрд┐ рдХрдВрдЯреЗрдирд░рд╕рд╛рдареА рдЙрдкрд▓рдмреНрдз рдЖрд╣реЗрдд (рдЖрдореНрд╣реА рдирдВрддрд░ рд╕реНрдкрд╖реНрдЯ рдХрд░реВ рдХреА рддреБрдордЪреНрдпрд╛рдХрдбреЗ RBAC рд╢рд┐рд╡рд╛рдп рдХреЛрдгрддреЗрд╣реА рдЙрддреНрдкрд╛рджрди рдХреНрд▓рд╕реНрдЯрд░ рдирд╕рд╛рд╡реЗ).

рдирд┐рд╖реНрдХреНрд░рд┐рдп рдбреЗрдЯрд╛ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди

рдЬреНрдпрд╛рдВрдирд╛ etcd рдбреЗрдЯрд╛рдмреЗрд╕рдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢ рдЖрд╣реЗ рддреНрдпрд╛рдВрдЪреНрдпрд╛рдмрджреНрджрд▓ рдХрд╛рдп рдЖрд╣реЗ рдЬреЗрдереЗ Kubernetes рддреНрдпрд╛рдЪреА рд╕рд░реНрд╡ рдорд╛рд╣рд┐рддреА рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд░рддреЗ? API рджреНрд╡рд╛рд░реЗ рдЧреБрдкреНрдд рд╡рд╕реНрддреВ рд╡рд╛рдЪрдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рди рдШреЗрддрд╛ рддреЗ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдбреЗрдЯрд╛ рд╡рд╛рдЪреВ рд╢рдХрддрд╛рдд?

рдЖрд╡реГрддреНрддреА 1.7 рдкрд╛рд╕реВрди, Kubernetes рдирд┐рд╖реНрдХреНрд░рд┐рдп рдбреЗрдЯрд╛ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рдирд▓рд╛ рд╕рдорд░реНрдерди рджреЗрддреЗ. рдпрд╛рдЪрд╛ рдЕрд░реНрде рдЕрд╕рд╛ рдХреА etcd рдордзреАрд▓ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдорд╛рд╣рд┐рддреА рдбрд┐рд╕реНрдХрд╡рд░ рдХреВрдЯрдмрджреНрдз рдХрд░реВрди рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХреЗрд▓реА рдЬрд╛рддреЗ рдЖрдгрд┐ рдбреЗрдЯрд╛рдмреЗрд╕рдордзреНрдпреЗ рдереЗрдЯ рдкреНрд░рд╡реЗрд╢ рдЕрд╕рд▓реЗрд▓реНрдпрд╛рдВрдирд╛рд╣реА рддреА рд╡рд╛рдЪрддрд╛ рдпреЗрдд рдирд╛рд╣реА. рддреЗ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣рд╛рд▓рд╛ рдлрдХреНрдд рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ API рд╕рд░реНрд╡реНрд╣рд░рдХрдбреЗ рдЕрд╕рд▓реЗрд▓реА рдХреА рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдпреЛрдЧреНрдпрд░рд┐рддреНрдпрд╛ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдХреНрд▓рд╕реНрдЯрд░рдордзреНрдпреЗ, рдирд┐рд╖реНрдХреНрд░рд┐рдп рдПрдирдХреНрд░рд┐рдкреНрд╢рди рд╕рдХреНрд╖рдо рдХреЗрд▓реЗ рдЬрд╛рд╡реЗ.

рддреБрдордЪреНрдпрд╛ рдХреНрд▓рд╕реНрдЯрд░рдордзреНрдпреЗ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдпрд╛ рдкреНрд░рдХрд╛рд░реЗ рдХрд╛рдо рдХрд░рддреЗ рдХрд╛ рддреЗ рддреБрдореНрд╣реА рддрдкрд╛рд╕реВ рд╢рдХрддрд╛:

kubectl describe pod -n kube-system -l component=kube-apiserver |grep encryption
        --experimental-encryption-provider-config=...

рддреБрдореНрд╣рд╛рд▓рд╛ рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ-рдПрдирдХреНрд░рд┐рдкреНрд╢рди-рдкреНрд░рджрд╛рддрд╛-рдХреЙрдиреНрдлрд┐рдЧ рдзреНрд╡рдЬ рджрд┐рд╕рдд рдирд╕рд▓реНрдпрд╛рд╕, рдирд┐рд╖реНрдХреНрд░рд┐рдп рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рд╕рдХреНрд╖рдо рдХреЗрд▓реЗрд▓реЗ рдирд╛рд╣реА. Google Kubernetes Engine рдХрд┐рдВрд╡рд╛ рдЗрддрд░ Kubernetes рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рд╕реЗрд╡рд╛ рд╡рд╛рдкрд░рддрд╛рдирд╛, рддреБрдордЪрд╛ рдбреЗрдЯрд╛ рднрд┐рдиреНрди рдпрдВрддреНрд░рдгрд╛ рд╡рд╛рдкрд░реВрди рдХреВрдЯрдмрджреНрдз рдХреЗрд▓рд╛ рдЬрд╛рддреЛ, рддреНрдпрд╛рдореБрд│реЗ рдзреНрд╡рдЬ рдЙрдкрд╕реНрдерд┐рдд рд░рд╛рд╣рдгрд╛рд░ рдирд╛рд╣реА. etcd рд╕рд╛рдордЧреНрд░реА рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХреЗрд▓реЗрд▓реА рдЖрд╣реЗ рдХрд╛ рд╣реЗ рдкрд╛рд╣рдгреНрдпрд╛рд╕рд╛рдареА рддреБрдордЪреНрдпрд╛ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рд╡рд┐рдХреНрд░реЗрддреНрдпрд╛рд╢реА рддрдкрд╛рд╕рд╛.

рдЧреЛрдкрдиреАрдп рдбреЗрдЯрд╛ рд╕рдВрдЪрдпрд┐рдд рдХрд░рдгреЗ

рдХрд╛рд╣реА рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рд╕рдВрд╕рд╛рдзрдиреЗ рдЖрд╣реЗрдд рдЬреА рдХреНрд▓рд╕реНрдЯрд░рдордзреВрди рдХрдзреАрд╣реА рдХрд╛рдврд▓реА рдЬрд╛рдК рдирдпреЗрдд, рдЬрд╕реЗ рдХреА рдЕрддреНрдпрдВрдд рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдЧреБрдкреНрдд рд╡рд╕реНрддреВ. рд╣реЗрд▓реНрдо рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХрд╛рджреНрд╡рд╛рд░реЗ рдкреНрд░рджрд╛рди рдХреЗрд▓реЗрд▓реЗ рднрд╛рд╖реНрдп рд╡рд╛рдкрд░реВрди рддреБрдореНрд╣реА рд╕рдВрд╕рд╛рдзрди рд╣рдЯрд╡рдгреНрдпрд╛рдкрд╛рд╕реВрди рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░реВ рд╢рдХрддрд╛:

kind: Secret
metadata:
    annotations:
        "helm.sh/resource-policy": keep

рд╕рд┐рдХреНрд░реЗрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЕрдиреЗрдЬрдореЗрдВрдЯ рд╕реНрдЯреНрд░реЕрдЯреЗрдЬреАрдЬ

рдорд╛рдЧреАрд▓ рд╡рд┐рднрд╛рдЧрд╛рддреАрд▓ рдЙрджрд╛рд╣рд░рдгрд╛рдордзреНрдпреЗ, рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдбреЗрдЯрд╛ рдХреНрд▓рд╕реНрдЯрд░рдордзреНрдпреЗ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдЭрд╛рд▓реНрдпрд╛рдирдВрддрд░ рд▓рдЧреЗрдЪрдЪ рдЕрдирдзрд┐рдХреГрдд рдкреНрд░рд╡реЗрд╢рд╛рдкрд╛рд╕реВрди рд╕рдВрд░рдХреНрд╖рд┐рдд рдХреЗрд▓рд╛ рдЧреЗрд▓рд╛. рдкрд░рдВрддреБ рдореЕрдирд┐рдлреЗрд╕реНрдЯ рдлрд╛рдпрд▓реАрдВрдордзреНрдпреЗ рддреЗ рд╕рд╛рдзреНрдпрд╛ рдордЬрдХреВрд░ рдореНрд╣рдгреВрди рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХреЗрд▓реЗ рдЧреЗрд▓реЗ.

рдЖрд╡реГрддреНрддреА рдирд┐рдпрдВрддреНрд░рдгрд╛рдд рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдлрд╛рдЗрд▓реНрд╕рдордзреНрдпреЗ рддреБрдореНрд╣реА рдХрдзреАрд╣реА рдЧреЛрдкрдиреАрдп рдорд╛рд╣рд┐рддреА рдареЗрд╡реВ рдирдпреЗ. рддреБрдордЪреНрдпрд╛ Kubernetes рдХреНрд▓рд╕реНрдЯрд░рд╡рд░ рд▓рд╛рдЧреВ рдХрд░рдгреНрдпрд╛рдкреВрд░реНрд╡реА рддреБрдореНрд╣реА рд╣реА рдорд╛рд╣рд┐рддреА рд╕реБрд░рдХреНрд╖рд┐рддрдкрдгреЗ рдХрд╢реА рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдЖрдгрд┐ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд░реВ рд╢рдХрддрд╛?

рддреБрдореНрд╣реА рддреБрдордЪреНрдпрд╛ рдНрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕рдордзреАрд▓ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдбреЗрдЯрд╛ рд╣рд╛рддрд╛рд│рдгреНрдпрд╛рд╕рд╛рдареА рдХреЛрдгрддреАрд╣реА рд╕рд╛рдзрдиреЗ рдХрд┐рдВрд╡рд╛ рдзреЛрд░рдгреЗ рдирд┐рд╡рдбреВ рд╢рдХрддрд╛, рдкрд░рдВрддреБ рддрд░реАрд╣реА рддреБрдореНрд╣рд╛рд▓рд╛ рдЦрд╛рд▓реАрд▓ рдкреНрд░рд╢реНрдирд╛рдВрдЪреА рдЙрддреНрддрд░реЗ рджреНрдпрд╛рд╡реА рд▓рд╛рдЧрддреАрд▓.

  • рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдбреЗрдЯрд╛ рдХреЛрдареЗ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХреЗрд▓рд╛ рдкрд╛рд╣рд┐рдЬреЗ рдЬреЗрдгреЗрдХрд░реВрди рддреЗ рдЕрддреНрдпрдВрдд рдкреНрд░рд╡реЗрд╢рдпреЛрдЧреНрдп рдЕрд╕реЗрд▓?
  • рддреБрдордЪреНрдпрд╛ рд╕рдХреНрд░рд┐рдп рдНрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕рд╕рд╛рдареА рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдбреЗрдЯрд╛ рдХрд╕рд╛ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдпрдЪрд╛?
  • рддреБрдореНрд╣реА рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдбреЗрдЯрд╛ рдмрджрд▓рддрд╛ рдХрд┐рдВрд╡рд╛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рддреЗрд╡реНрд╣рд╛ рддреБрдордЪреНрдпрд╛ рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕рдЪреЗ рдХрд╛рдп рд╡реНрд╣рд╛рдпрд▓рд╛ рд╣рд╡реЗ?

рд▓реЗрдЦрдХрд╛рдВрдмрджреНрджрд▓

рдЬреЙрди рдЕрд░реБрдВрдбреЗрд▓ рд╕рдВрдЧрдгрдХ рдЙрджреНрдпреЛрдЧрд╛рддреАрд▓ 30 рд╡рд░реНрд╖рд╛рдВрдЪрд╛ рдЕрдиреБрднрд╡ рдЕрд╕рд▓реЗрд▓реЗ рд╕рд▓реНрд▓рд╛рдЧрд╛рд░ рдЖрд╣реЗрдд. рддреНрдпрд╛рдВрдиреА рдЕрдиреЗрдХ рдкреБрд╕реНрддрдХреЗ рд▓рд┐рд╣рд┐рд▓реА рдЖрд╣реЗрдд рдЖрдгрд┐ рд╡рд┐рд╡рд┐рдз рджреЗрд╢рд╛рдВрддреАрд▓ рдЕрдиреЗрдХ рдХрдВрдкрдиреНрдпрд╛рдВрд╕реЛрдмрдд рдХрд╛рдо рдХреЗрд▓реЗ рдЖрд╣реЗ, рддреНрдпрд╛рдВрдирд╛ рдХреНрд▓рд╛рдЙрдб-рдиреЗрдЯрд┐рд╡реНрд╣ рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдЖрдгрд┐ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рд╡рд░ рд╕рд▓реНрд▓рд╛ рджрд┐рд▓рд╛ рдЖрд╣реЗ. рддреНрдпрд╛рдЪреНрдпрд╛ рдореЛрдХрд│реНрдпрд╛ рд╡реЗрд│реЗрдд, рддреЛ рд╕рд░реНрдлрд┐рдВрдЧрдЪрд╛ рдЖрдирдВрдж рдШреЗрддреЛ, рддреЛ рдПрдХ рдЪрд╛рдВрдЧрд▓рд╛ рдкрд┐рд╕реНрддреВрд▓ рд╢реВрдЯрд░ рдЖрд╣реЗ рдЖрдгрд┐ рдПрдХ рд╣реМрд╢реА рдореНрд╣рдгреВрди рдкрд┐рдпрд╛рдиреЛ рд╡рд╛рдЬрд╡рддреЛ. рдХреЙрд░реНрдирд╡реЙрд▓, рдЗрдВрдЧреНрд▓рдВрдбрдордзреАрд▓ рдПрдХрд╛ рдкрд░реАрдХрдерд╛ рдХреЙрдЯреЗрдЬрдордзреНрдпреЗ рд░рд╛рд╣рддреЛ.

рдЬрд╕реНрдЯрд┐рди рдбреЛрдорд┐рдВрдЧрд╕ тАФ Kubernetes рдЖрдгрд┐ рдХреНрд▓рд╛рдЙрдб рддрдВрддреНрд░рдЬреНрдЮрд╛рдирд╛рд╕рд╣ DevOps рд╡рд╛рддрд╛рд╡рд░рдгрд╛рдд рдХрд╛рдо рдХрд░рдгрд╛рд░реЗ рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рд╢рд╛рд╕рди рдЕрднрд┐рдпрдВрддрд╛. рддреНрдпрд╛рд▓рд╛ рдШрд░рд╛рдмрд╛рд╣реЗрд░ рд╡реЗрд│ рдШрд╛рд▓рд╡рдгреЗ, рдХреЙрдлреА рдкрд┐рдгреЗ, рдХреНрд░реЕрдмрд┐рдВрдЧ рдХрд░рдгреЗ рдЖрдгрд┐ рд╕рдВрдЧрдгрдХрд╛рд╡рд░ рдмрд╕рдгреЗ рдЖрд╡рдбрддреЗ. рд╕рд┐рдПрдЯрд▓, рд╡реЙрд╢рд┐рдВрдЧреНрдЯрди рдпреЗрдереЗ рд░рд╛рд╣рддреЗ, рдПрдХ рдЕрджреНрднреБрдд рдорд╛рдВрдЬрд░ рдЖрдгрд┐ рддреНрдпрд╛рд╣реВрдирд╣реА рдЕрджреНрднреБрдд рдкрддреНрдиреА рдЖрдгрд┐ рд╕рд░реНрд╡рд╛рдд рдЪрд╛рдВрдЧрд▓реА рдореИрддреНрд░реАрдг, рдЕреЕрдбреНрд░рд┐рдПрди.

┬╗ рдкреБрд╕реНрддрдХрд╛рдмрджреНрджрд▓ рдЕрдзрд┐рдХ рддрдкрд╢реАрд▓ рдпреЗрдереЗ рдЖрдврд│реВ рд╢рдХрддрд╛рдд рдкреНрд░рдХрд╛рд╢рдХрд╛рдЪреА рд╡реЗрдмрд╕рд╛рдЗрдЯ
┬╗ рд╕рд╛рдордЧреНрд░реА рд╕рд╛рд░рдгреА
┬╗ рдЙрддрд╛рд░рд╛

Khabrozhiteley рд╕рд╛рдареА рдХреВрдкрди рд╡рд╛рдкрд░реВрди 25% рд╕реВрдЯ - рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕

рдкреБрд╕реНрддрдХрд╛рдЪреА рдХрд╛рдЧрджреА рдЖрд╡реГрддреНрддреА рднрд░рд▓реНрдпрд╛рдирдВрддрд░, рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рдкреБрд╕реНрддрдХ рдИ-рдореЗрд▓рджреНрд╡рд╛рд░реЗ рдкрд╛рдард╡рд▓реЗ рдЬрд╛рдИрд▓.

рд╕реНрддреНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛