рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ рд╕реНрдЯреЗрдЯрдлрд╝реБрд▓ рдмреИрдХрдЕрдк

рдЗрд╕рд▓рд┐рдП, рдЬреИрд╕рд╛ рдХрд┐ рд╕рднреА рдХреЛ рдкрддрд╛ рд╣реИ, рд╣рд╛рд▓ рд╣реА рдореЗрдВ DevOpsConfRussia2018 1-2 рдЕрдХреНрдЯреВрдмрд░ рдХреЛ рдорд╛рд╕реНрдХреЛ рдореЗрдВ "рдЗрдиреНрдлреНрд░рд╛рд╕рд╕реНрдкреЗрд╕" рдореЗрдВ рдЖрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЬреЛ рд▓реЛрдЧ рд╕рд╣рдЬ рдирд╣реАрдВ рд╣реИрдВ, рдЙрдирдХреЗ рд▓рд┐рдП DevOpsConf рд╡рд┐рдХрд╛рд╕, рдкрд░реАрдХреНрд╖рдг рдФрд░ рд╕рдВрдЪрд╛рд▓рди рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдПрдХреАрдХрд░рдг рдкрд░ рдПрдХ рдкреЗрд╢реЗрд╡рд░ рд╕рдореНрдореЗрд▓рди рд╣реИред


рд╣рдорд╛рд░реА рдХрдВрдкрдиреА рдиреЗ рднреА рдЗрд╕ рд╕рдореНрдореЗрд▓рди рдореЗрдВ рднрд╛рдЧ рд▓рд┐рдпрд╛ред рд╣рдо рдЗрд╕рдХреЗ рднрд╛рдЧреАрджрд╛рд░ рдереЗ, рд╣рдорд╛рд░реЗ рдмреВрде рдкрд░ рдХрдВрдкрдиреА рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рдереЗ, рдФрд░ рдПрдХ рдЫреЛрдЯреА рд╕реА рдмреИрдардХ рднреА рдХрд░рддреЗ рдереЗред рд╡реИрд╕реЗ, рдЗрд╕ рддрд░рд╣ рдХреА рдЧрддрд┐рд╡рд┐рдзрд┐ рдореЗрдВ рдпрд╣ рд╣рдорд╛рд░реА рдкрд╣рд▓реА рднрд╛рдЧреАрджрд╛рд░реА рдереАред рдкрд╣рд▓рд╛ рд╕рдореНрдореЗрд▓рди, рдкрд╣рд▓рд╛ рдореАрддрдк, рдкрд╣рд▓рд╛ рдЕрдиреБрднрд╡ред


рд╣рдо рдХрд┐рд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рдереЗ? рдорд┐рддрдк "рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ рдмреИрдХрдЕрдк" рд╡рд┐рд╖рдп рдкрд░ рдереЗред


рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рдпрд╣ рдирд╛рдо рд╕реБрдирдХрд░, рдХрдИ рдХрд╣реЗрдВрдЧреЗ: "рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреЛ рд╡рд╛рдкрд╕ рдХреНрдпреЛрдВ? рдЗрд╕реЗ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рд╕реНрдЯреЗрдЯрд▓реЗрд╕ рд╣реИред тАЭ



рдкрд░рд┐рдЪрдп ...


рдереЛрдбрд╝рд╛ рдкреГрд╖реНрдарднреВрдорд┐ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рд╡рд┐рд╖рдп рдХреЛ рдХрд╡рд░ рдХрд░рдирд╛ рдХреНрдпреЛрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рдЧрдпрд╛ рдФрд░ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИред


2016 рдореЗрдВ, рд╣рдо Kubernetes рдЬреИрд╕реА рддрдХрдиреАрдХ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛ рдЧрдП рдФрд░ рдЗрд╕реЗ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдкрд░ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред рдмреЗрд╢рдХ, рдпреЗ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ microservice рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рд╕рд╛рде рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рд╣реИрдВ, рдФрд░ рдпрд╣ рдмрджрд▓реЗ рдореЗрдВ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡рд┐рд╡рд┐рдз рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдордЬрдмреВрд░ рдХрд░рддрд╛ рд╣реИред


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


рд╣рдордиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореМрдЬреВрджрд╛ рдкреНрд░рдерд╛рдУрдВ рдХрд╛ рдЕрдзреНрдпрдпрди рдФрд░ рдЦреЛрдЬ рд╢реБрд░реВ рдХреАред рд╣рдорд╛рд░реЗ рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВ рдФрд░ рд╕рд╛рдерд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░реЗрдВ: "рдФрд░ рдпрд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреИрд╕реЗ рдФрд░ рдЙрдирдХреЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рд╣реИ?"


рдмрд╛рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдордиреЗ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдХрд┐ рдпрд╣ рд╕рдм рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ, рд╕рд╛рдзрдиреЛрдВ рдФрд░ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдмреИрд╕рд╛рдЦреА рдХреЗ рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╣рдордиреЗ рдХрд┐рд╕реА рднреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░ рдХрд┐рд╕реА рднреА рдПрдХреАрдХреГрдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдкрд╛рд▓рди рдирд╣реАрдВ рдХрд┐рдпрд╛ред


рдпрд╣ рдЗрддрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХреНрдпреЛрдВ рд╣реИ? рдЪреВрдБрдХрд┐ k8s рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣рдорд╛рд░реА рдХрдВрдкрдиреА рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдБ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрд░рдЪрд┐рдд рдХрд╛рд░реНрдпрдкреНрд░рдгрд╛рд▓реА рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред


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


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


рдЗрд╕ рд▓реЗрдЦ рдХреЗ рдврд╛рдВрдЪреЗ рдореЗрдВ, рд╣рдо рдмрд╕ рдЗрд╕ рдЯреВрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ рдХрд┐ рд╣рдо рдЕрдкрдиреА рдХрдВрдкрдиреА рдХреЗ рднреАрддрд░ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕ рдЙрдкрдХрд░рдг рдФрд░ рдХрд┐рд╕ рдЕрднреНрдпрд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред


рд╣рдо рдпрд╣ рдХреИрд╕реЗ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?


Nxs- рдмреИрдХрдЕрдк рдХреНрдпрд╛ рд╣реИ?

рдмреИрдХрдЕрдк рдХреЗ рд▓рд┐рдП, рд╣рдо рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдУрдкрди рд╕реЛрд░реНрд╕ рдЯреВрд▓ - nxs-backup рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рдЙрд╕рдХреЗ рдмреНрдпреЛрд░реЗ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдПрдВрдЧреЗред рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдирд┐рдореНрди рд▓рд┐рдВрдХ рдкрд░ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


рдЕрдм k8s рдореЗрдВ рдмреИрдХрдЕрдк рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред рдХреИрд╕реЗ рдФрд░ рдХреНрдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред


рдмреИрдХрдЕрдк рдХреНрдпрд╛ рд╣реИ?


рдЖрдЗрдП рд╣рдорд╛рд░реЗ рдЕрдкрдиреЗ рд░реЗрдбрдорд╛рдЗрди рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмреИрдХрдЕрдк рдХреЛ рджреЗрдЦреЗрдВред рдЗрд╕рдореЗрдВ, рд╣рдо MySQL рдбреЗрдЯрд╛рдмреЗрд╕ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдмреИрдХрдЕрдк рд▓реЗрдВрдЧреЗред


рд╣рдо рдпрд╣ рдХреИрд╕реЗ рдХрд░рддреЗ рд╣реИрдВ?


1 рдХреНрд░реЛрдирдЬреЛрдм == 1 рд╕реЗрд╡рд╛

рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкрд░ рд╕рд╛рдзрд╛рд░рдг рд╕рд░реНрд╡рд░ рдФрд░ рдХреНрд▓рд╕реНрдЯрд░реНрд╕ рдкрд░, рд▓рдЧрднрдЧ рд╕рднреА рдмреИрдХрдЕрдк рдЙрдкрдХрд░рдг рдЬреНрдпрд╛рджрд╛рддрд░ рдирд┐рдпрдорд┐рдд рдХреНрд░реЛрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП k8s рдореЗрдВ рд╣рдо CronJob's рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рдд рд╣рдо 1 рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП 1 CronJob рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рд╣рдо рдмреИрдХрдЕрдк рд▓реЗрдВрдЧреЗред рдпреЗ рд╕рднреА рдХреНрд░реЛрдирдЬреЙрдм рдПрд╕ рд╕реНрд╡рдпрдВ рд╕реЗрд╡рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╣реА рдирд╛рдо рд╕реНрдерд╛рди рдкрд░ рд╕реНрдерд┐рдд рд╣реИрдВред


рдЖрдЗрдП MySQL рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВред MySQL рдХрд╛ рдмреИрдХрдЕрдк рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ 4 рддрддреНрд╡реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓рдЧрднрдЧ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП:


  • рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди (nxs-backup.conf)
  • рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди (mysql.conf for nxs-backup)
  • рдЧреБрдкреНрдд (рд╕реЗрд╡рд╛ рддрдХ рдкрд╣реБрдВрдЪ рдпрд╣рд╛рдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХреА рдЬрд╛рддреА рд╣реИ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ MySQL)ред рдЖрдорддреМрд░ рдкрд░, рдЗрд╕ рддрддреНрд╡ рдХреЛ рд╕реЗрд╡рд╛ рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
  • рдХреНрд░реЛрдирдЬреЙрдм (рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ)

рдХреНрд░рдо рдореЗрдВ рдЪрд▓рддреЗ рд╣реИрдВред


NXS-backup.conf

apiVersion: v1 kind: ConfigMap metadata: name: nxs-backup-conf data: nxs-backup.conf: |- main: server_name: Nixys k8s cluster admin_mail: admins@nixys.ru client_mail: - '' mail_from: backup@nixys.ru level_message: error block_io_read: '' block_io_write: '' blkio_weight: '' general_path_to_all_tmp_dir: /var/nxs-backup cpu_shares: '' log_file: /dev/stdout jobs: !include [conf.d/*.conf] 

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


рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ j2 рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред


mysql.conf

 apiVersion: v1 kind: ConfigMap metadata: name: mysql-conf data: service.conf.j2: |- - job: mysql type: mysql tmp_dir: /var/nxs-backup/databases/mysql/dump_tmp sources: - connect: db_host: {{ db_host }} db_port: {{ db_port }} socket: '' db_user: {{ db_user }} db_password: {{ db_password }} target: - redmine_db gzip: yes is_slave: no extra_keys: '--opt --add-drop-database --routines --comments --create-options --quote-names --order-by-primary --hex-blob' storages: - storage: local enable: yes backup_dir: /var/nxs-backup/databases/mysql/dump store: days: 6 weeks: 4 month: 6 

рдпрд╣ рдлрд╝рд╛рдЗрд▓ рд╕рдВрдмрдВрдзрд┐рдд рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рдмреИрдХрдЕрдк рддрд░реНрдХ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреА рд╣реИ, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ MySQL рд╣реИред


рдпрд╣рд╛рдБ рдЖрдк рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


  • рдиреМрдХрд░реА рдХрд╛ рдирд╛рдо рдХреНрдпрд╛ рд╣реИ (рдХреНрд╖реЗрддреНрд░: рдиреМрдХрд░реА)
  • рдиреМрдХрд░реА рдХрд╛ рдкреНрд░рдХрд╛рд░ (рдлрд╝реАрд▓реНрдб: рдкреНрд░рдХрд╛рд░)
  • рдмреИрдХрдЕрдк рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЕрд╕реНрдерд╛рдпреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ (рдлрд╝реАрд▓реНрдб: tmp_dir)
  • MySQL рдХрдиреЗрдХреНрд╢рди рд╡рд┐рдХрд▓реНрдк (рдлрд╝реАрд▓реНрдб: рдХрдиреЗрдХреНрдЯ)
  • рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдмреИрдХрдЕрдк рд▓рд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рдлрд╝реАрд▓реНрдб: рд▓рдХреНрд╖реНрдп)
  • рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рджрд╛рд╕ рдХреЛ рд░реЛрдХрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ (рдХреНрд╖реЗрддреНрд░: is_slave)
  • Mysqldump рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдХреБрдВрдЬрд┐рдпрд╛рдБ (рдлрд╝реАрд▓реНрдб: extra_keys)
  • рд╕реНрдЯреЛрд░реЗрдЬ рд╕реНрдЯреЛрд░реЗрдЬ, рдпрд╛рдирд┐ рдХрд┐рд╕ рд╕реНрдЯреЛрд░реЗрдЬ рдореЗрдВ рд╣рдо рдПрдХ рдХреЙрдкреА рд╕реНрдЯреЛрд░ рдХрд░реЗрдВрдЧреЗ (рдлрд╝реАрд▓реНрдб: рд╕реНрдЯреЛрд░реЗрдЬ)
  • рд╡рд╣ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдЬрд╣рд╛рдВ рд╣рдо рдЕрдкрдиреА рдкреНрд░рддрд┐рдпрд╛рдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдВрдЧреЗ (рдлрд╝реАрд▓реНрдб: backup_dir)
  • рд╕рдВрдЧреНрд░рд╣рдг рдпреЛрдЬрдирд╛ (рдлрд╝реАрд▓реНрдб: рд╕реНрдЯреЛрд░)

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


рдпрд╣рд╛рдВ, рдЗрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдиреБрд░реВрдк, рдЖрдк Redis, PostgreSQL рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдЖрд╡рд╢реНрдпрдХ рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрджрд┐ рдпрд╣ рд╣рдорд╛рд░реЗ рдЯреВрд▓ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдкрд╣рд▓реЗ рджрд┐рдП рдЧрдП рд▓рд┐рдВрдХ рдкрд░ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


рдЧреБрдкреНрдд mysql

 apiVersion: v1 kind: Secret metadata: name: app-config data: db_name: "" db_host: "" db_user: "" db_password: "" secret_token: "" smtp_address: "" smtp_domain: "" smtp_ssl: "" smtp_enable_starttls_auto: "" smtp_port: "" smtp_auth_type: "" smtp_login: "" smtp_password: "" 

рд╣рдо рд╕реНрд╡рдпрдВ MySQL рдФрд░ рдореЗрд▓ рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧреБрдкреНрдд рдкрд╣реБрдВрдЪ рд░рдЦрддреЗ рд╣реИрдВред рд╡реЗ рдпрд╛ рддреЛ рдПрдХ рдЕрд▓рдЧ рд░рд╣рд╕реНрдп рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдореМрдЬреВрджрд╛ рдПрдХ рдХрд╛ рд▓рд╛рдн рдЙрдард╛ рд╕рдХрддреЗ рд╣реИрдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЕрдЧрд░ рд╡рд╣рд╛рдБ рдПрдХ рд╣реИред рдпрд╣рд╛рдВ рдХреБрдЫ рднреА рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИред рд╣рдорд╛рд░рд╛ рд░рд╣рд╕реНрдп secret_token рднреА рд░рдЦрддрд╛ рд╣реИ, рдЬреЛ рд╣рдорд╛рд░реЗ Redmine рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред


CronJob MySQL

 apiVersion: batch/v1beta1 kind: CronJob metadata: name: mysql spec: schedule: "00 00 * * *" jobTemplate: spec: template: spec: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - nxs-node5 containers: - name: mysql-backup image: nixyslab/nxs-backup:latest env: - name: DB_HOST valueFrom: secretKeyRef: name: app-config key: db_host - name: DB_PORT value: '3306' - name: DB_USER valueFrom: secretKeyRef: name: app-config key: db_user - name: DB_PASSWORD valueFrom: secretKeyRef: name: app-config key: db_password - name: SMTP_MAILHUB_ADDR valueFrom: secretKeyRef: name: app-config key: smtp_address - name: SMTP_MAILHUB_PORT valueFrom: secretKeyRef: name: app-config key: smtp_port - name: SMTP_USE_TLS value: 'YES' - name: SMTP_AUTH_USER valueFrom: secretKeyRef: name: app-config key: smtp_login - name: SMTP_AUTH_PASS valueFrom: secretKeyRef: name: app-config key: smtp_password - name: SMTP_FROM_LINE_OVERRIDE value: 'NO' volumeMounts: - name: mysql-conf mountPath: /usr/share/nxs-backup/service.conf.j2 subPath: service.conf.j2 - name: nxs-backup-conf mountPath: /etc/nxs-backup/nxs-backup.conf subPath: nxs-backup.conf - name: backup-dir mountPath: /var/nxs-backup imagePullPolicy: Always volumes: - name: mysql-conf configMap: name: mysql-conf items: - key: service.conf.j2 path: service.conf.j2 - name: nxs-backup-conf configMap: name: nxs-backup-conf items: - key: nxs-backup.conf path: nxs-backup.conf - name: backup-dir hostPath: path: /var/backups/k8s type: Directory restartPolicy: OnFailure 

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


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


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


рдЗрд╕рдХреЗ рдмрд╛рдж, рдХреЙрдиреНрдлрд╝рд┐рдЧреИрдкреНрд╕ рд╡рд┐рд╢рд┐рд╖реНрдЯ CronJob рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ nxs-backup, рдЕрд░реНрдерд╛рддреН, nxs-backup.conf рдФрд░ mysql.conf рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдордиреЗ рдКрдкрд░ рдмрд╛рдд рдХреА рдереАред


рдлрд┐рд░, рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╕реЗрдЯ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЬреЛ рд╕реАрдзреЗ рдкреНрд░рдХрдЯ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдпрд╛ рд╕реАрдХреНрд░реЗрдЯреЛрд╡ рд╕реЗ рдЦреАрдВрдЪреЗ рдЬрд╛рддреЗ рд╣реИрдВред


рдЗрд╕рд▓рд┐рдП, рдЪрд░ рдХреЛ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░, docker-entrypoint.sh рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдЙрди рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рдХреЙрдиреНрдлрд┐рдЧрд░рдореИрдк рдореЗрдВ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдорд╛рдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред MySQL рдХреЗ рд▓рд┐рдП, рдпрд╣ db_host, db_user, db_password рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдкреЛрд░реНрдЯ рдХреЛ рдХреНрд░реЛрдирдЬреЙрдм рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдореЗрдВ рдПрдХ рдореВрд▓реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреЛрдИ рдореВрд▓реНрдпрд╡рд╛рди рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИред


рдЦреИрд░, MySQL рдХреЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред рдЕрдм рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ Redmine рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдмреИрдХрдЕрдк рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред


desc_files.conf

 apiVersion: v1 kind: ConfigMap metadata: name: desc-files-conf data: service.conf.j2: |- - job: desc-files type: desc_files tmp_dir: /var/nxs-backup/files/desc/dump_tmp sources: - target: - /var/www/files gzip: yes storages: - storage: local enable: yes backup_dir: /var/nxs-backup/files/desc/dump store: days: 6 weeks: 4 month: 6 

рдпрд╣ рдПрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рд╣реИ рдЬреЛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдмреИрдХрдЕрдк рддрд░реНрдХ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреА рд╣реИред рдпрд╣рд╛рдБ рдХреБрдЫ рднреА рдЕрд╕рд╛рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реИ, рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдбреЗрдЯрд╛ рдХреЗ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде, рд╕рднреА рд╕рдорд╛рди рдкреИрд░рд╛рдореАрдЯрд░ MySQL рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд┐рдП рдЧрдП рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдмрд╕ рдирд╣реАрдВ рд╣реИрдВред рдпрджреНрдпрдкрд┐ рд╡реЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдпрджрд┐ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ: ssh, ftp, webdav, s3 рдФрд░ рдЕрдиреНрдпред рд╣рдо рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдкрд░ рдереЛрдбрд╝рд╛ рдмрд╛рдж рдореЗрдВ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред


рдХреНрд░реЛрдирдЬреЙрдм desc_files

 apiVersion: batch/v1beta1 kind: CronJob metadata: name: desc-files spec: schedule: "00 00 * * *" jobTemplate: spec: template: spec: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - nxs-node5 containers: - name: desc-files-backup image: nixyslab/nxs-backup:latest env: - name: SMTP_MAILHUB_ADDR valueFrom: secretKeyRef: name: app-config key: smtp_address - name: SMTP_MAILHUB_PORT valueFrom: secretKeyRef: name: app-config key: smtp_port - name: SMTP_USE_TLS value: 'YES' - name: SMTP_AUTH_USER valueFrom: secretKeyRef: name: app-config key: smtp_login - name: SMTP_AUTH_PASS valueFrom: secretKeyRef: name: app-config key: smtp_password - name: SMTP_FROM_LINE_OVERRIDE value: 'NO' volumeMounts: - name: desc-files-conf mountPath: /usr/share/nxs-backup/service.conf.j2 subPath: service.conf.j2 - name: nxs-backup-conf mountPath: /etc/nxs-backup/nxs-backup.conf subPath: nxs-backup.conf - name: target-dir mountPath: /var/www/files - name: backup-dir mountPath: /var/nxs-backup imagePullPolicy: Always volumes: - name: desc-files-conf configMap: name: desc-files-conf items: - key: service.conf.j2 path: service.conf.j2 - name: nxs-backup-conf configMap: name: nxs-backup-conf items: - key: nxs-backup.conf path: nxs-backup.conf - name: backup-dir hostPath: path: /var/backups/k8s type: Directory - name: target-dir persistentVolumeClaim: claimName: redmine-app-files restartPolicy: OnFailure 

MySQL рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╛ рддреЛ рдХреБрдЫ рднреА рдирдпрд╛ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреАрд╡реА (рд▓рдХреНрд╖реНрдп-рдбреАрдЖрдИрдЖрд░) рд▓рдЧрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдо рдмреИрдХрдЕрдк рдХрд░реЗрдВрдЧреЗ - / var / www / filesред рдЕрдиреНрдпрдерд╛, рд╕рдм рдХреБрдЫ рд╕рдорд╛рди рд╣реИ, рд╣рдо рдЕрдкрдиреА рдЬрд░реВрд░рдд рдХреЗ рдиреЛрдб рдкрд░ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдкреНрд░рддрд┐рдпрд╛рдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдХреНрд░реЛрдирдЬреЙрдм рдХреЛ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИред


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

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


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


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


рд╣рдо рдЗрд╕реЗ рдХрд╣рд╛рдБ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВ?


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


mysql.conf + s3

рдирд┐рдореНрди MySQL рдмреИрдХрдЕрдк рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рдЬрд╣рд╛рдВ рдкреНрд░рддрд┐рдпрд╛рдВ рдиреЛрдб рдкрд░ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХреА рдЬрд╛рддреА рд╣реИрдВ рдЬрд╣рд╛рдВ CronJob рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рдФрд░ s3 рдореЗрдВ рднреА рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рд╣реИред


 apiVersion: v1 kind: ConfigMap metadata: name: mysql-conf data: service.conf.j2: |- - job: mysql type: mysql tmp_dir: /var/nxs-backup/databases/mysql/dump_tmp sources: - connect: db_host: {{ db_host }} db_port: {{ db_port }} socket: '' db_user: {{ db_user }} db_password: {{ db_password }} target: - redmine_db gzip: yes is_slave: no extra_keys: ' --opt --add-drop-database --routines --comments --create-options --quote-names --order-by-primary --hex-blob' storages: - storage: local enable: yes backup_dir: /var/nxs-backup/databases/mysql/dump store: days: 6 weeks: 4 month: 6 - storage: s3 enable: yes backup_dir: /nxs-backup/databases/mysql/dump bucket_name: {{ bucket_name }} access_key_id: {{ access_key_id }} secret_access_key: {{ secret_access_key }} s3fs_opts: {{ s3fs_opts }} store: days: 2 weeks: 1 month: 6 

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


рд▓реЗрдХрд┐рди рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХреЛ рдЕрднреА рднреА рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН:


  • J2 рдкреНрд░рд╛рд░реВрдк рдореЗрдВ AWS S3 рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдЙрдкрдпреБрдХреНрдд рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ
  • рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдкрд╣реБрдВрдЪ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдпреБрдХреНрдд рдЧреБрдкреНрдд рдмрдирд╛рдПрдБ
  • рдЙрдкрд░реЛрдХреНрдд рд╕реАрдХреНрд░реЗрдЯ рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВ
  • ConfigMap рдореЗрдВ рдЗрд╕реА рдЪрд░ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП docker-entrypoint.sh рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░реЗрдВ
  • AWS S3 рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реБрдП Docker рдЫрд╡рд┐ рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВ

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


рдирд┐рд╖реНрдХрд░реНрд╖


рд╢рд╛рдпрдж рдпрд╣реА рд╕рдм рд╣реИред


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

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


All Articles