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



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

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

  1. рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд┐рдЯ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╢рд╛рдЦрд╛рдУрдВ рд╕реЗ рд╕рдореАрдХреНрд╖рд╛ рд╡рд╛рддрд╛рд╡рд░рдг рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рддрдерд╛рдХрдерд┐рдд рд╕реБрд╡рд┐рдзрд╛ рд╢рд╛рдЦрд╛рдПрдВ)ред
  2. рдЙрдирдХреЗ рдкрд╛рд╕ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдбреАрдмреАрдПрдордПрд╕ рдЗрдВрд╕реНрдЯреЗрдВрд╕, рдХрддрд╛рд░ рдкреНрд░реЛрд╕реЗрд╕рд░, рдХреИрд╢рд┐рдВрдЧ рд╕реЗрд╡рд╛рдПрдВ рдЖрджрд┐ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред - рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЙрддреНрдкрд╛рджрди рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рдкреВрд░реНрдг рдкреНрд░рдЬрдирди рдХреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫред
  3. рд╡реЗ рд╕рдорд╛рдирд╛рдВрддрд░ рд╡рд┐рдХрд╛рд╕, рдЖрд╡реЗрджрди рдореЗрдВ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рд░рд┐рд╣рд╛рдИ рдореЗрдВ рддреЗрдЬреА рд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рдЗрд╕реА рд╕рдордп, рд╣рд░ рджрд┐рди рджрд░реНрдЬрдиреЛрдВ рдРрд╕реЗ рд╡рд╛рддрд╛рд╡рд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рдЙрдирдХреА рд░рдЪрдирд╛ рдХреА рдЧрддрд┐ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред

рджреВрд╕рд░реЗ рдФрд░ рддреАрд╕рд░реЗ рдмрд┐рдВрджреБ рдХреЗ рдЪреМрд░рд╛рд╣реЗ рдкрд░, рдЕрдХреНрд╕рд░ рдХрдард┐рдирд╛рдЗрдпрд╛рдВ рдкреИрджрд╛ рд╣реЛрддреА рд╣реИрдВ: рдЪреВрдВрдХрд┐ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪрд╛ рдмрд╣реБрдд рдЕрд▓рдЧ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХреЗ рдШрдЯрдХреЛрдВ рдХреЛ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рд╕рдордп, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реЗ рд╕реЗ рддреИрдпрд╛рд░ рдмреИрдХрдЕрдк * рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред рд▓реЗрдЦ рдЖрдХрд░реНрд╖рдХ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ рдЬреЛ рд╣рдо рдПрдХ рдмрд╛рд░ рдРрд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧрдП рдереЗред

* рд╡реИрд╕реЗ, рдЗрд╕ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдмрдбрд╝реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдбрдВрдк рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рддреЗрдЬреА рд▓рд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╛рдордЧреНрд░реА рдореЗрдВ рд▓рд┐рдЦрд╛ рд╣реИ ред)

рд╕рдорд╕реНрдпрд╛ рдФрд░ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛


рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рд╣рдореЗрдВ "рдбреЗрд╡рд▓рдкрд░реНрд╕ рдФрд░ рдХреНрдпреВрдП рдЗрдВрдЬреАрдирд┐рдпрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдХрд▓ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдмрдирд╛рдиреЗ" рдХрд╛ рдХрд╛рд░реНрдп рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕ рд╕реВрддреНрд░реАрдХрд░рдг рдиреЗ рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛ рдЫреБрдкрд╛рдпрд╛:

  1. рдХреНрдпреВрдП-рдЗрдВрдЬреАрдирд┐рдпрд░реЛрдВ рдФрд░ рдХреБрдЫ рдЕрдиреНрдп рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреЗ рдХрд╛рдо рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдореАрдХреНрд╖рд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдбреЗрдЯрд╛рдмреЗрд╕ (рдФрд░ рдЗрд╕реА vhosts) рдХреЛ рдПрдХ рдЕрд▓рдЧ - рд╕реНрдерд┐рд░ - рдкрд░реНрдпрд╛рд╡рд░рдг рдореЗрдВ рдЙрддрд╛рд░ рджреЗрдВред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдкреНрд░рдЪрд▓рд┐рдд рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП, рдЙрдирдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд╛ рдпрд╣ рддрд░реАрдХрд╛ рдЗрд╖реНрдЯрддрдо рдерд╛ред
  2. рд╕рдореАрдХреНрд╖рд╛ рдХрд╛ рдорд╛рд╣реМрд▓ рдмрдирд╛рдиреЗ рдореЗрдВ рд▓рдЧрдиреЗ рд╡рд╛рд▓реЗ рд╕рдордп рдХреЛ рдХрдо рдХрд░реЗрдВред рдЦрд░реЛрдВрдЪ рд╕реЗ рдЙрдирдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреА рдкреВрд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдирд┐рд╣рд┐рдд рд╣реИ, рдЕрд░реНрдерд╛рддреНред рдбреЗрдЯрд╛рдмреЗрд╕ рдХреНрд▓реЛрдирд┐рдВрдЧ, рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдЖрджрд┐ рд╕рд╣рд┐рддред

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

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

рдЗрд╕рд▓рд┐рдП, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдХреНрд░рдо:

  • рдПрдХ рд╕рдореАрдХреНрд╖рд╛ рд╡рд╛рддрд╛рд╡рд░рдг рдмрдирд╛рддреЗ рд╕рдордп, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдПрдХ рдмрд╛рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП: рджреЛ DBMSs (MongoDB рдФрд░ PostgreSQL) рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдирд┐рд░реНрдорд╛рдг, рдмреИрдХрдЕрдк / рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рдмрд╣рд╛рд▓реА, рдФрд░ RabbitMQ рдореЗрдВ vhost рдХрд╛ рдирд┐рд░реНрдорд╛рдгред рдЗрд╕рд╕реЗ рд╡рд░реНрддрдорд╛рди рдбрдВрдк рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рддрд░реАрдХреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред (рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╡рд╛рддрд╛рд╡рд░рдг рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХреА рдЧрдИ рдереА, рддреЛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рддреИрдпрд╛рд░ рд╕рдорд╛рдзрд╛рди рд╣реИред)
  • рд╕рдореАрдХреНрд╖рд╛ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдФрд░ рд╡рд░реНрдЪреБрдЕрд▓ рд╣реЛрд╕реНрдЯ рдХреЛ RabbitMQ рдореЗрдВ рд╣рдЯрд╛рдирд╛ рд╣реЛрдЧрд╛ред

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

  • рдЖрд░рдВрднреАрдХрд░рдг рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП, рд╣рдо pre-installрд░рд┐рд▓реАрдЬ рдореЗрдВ рд╕рднреА рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕реЗ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реБрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ ;
  • рд╣рдЯрд╛рдП рдЧрдП рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП, рдПрдХ рд╣реБрдХ post-deleteред

рдЖрдЗрдП рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдг рдкрд░ рдЬрд╛рдПрдВред

рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди


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

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд PostgreSQL рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реВрдЪреА рд╣реИ, рдФрд░ рдЕрдиреНрдп рджреЛ (MongoDB рдФрд░ RabbitMQ) рдкреНрд░рдХрдЯ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рд╕рдорд╛рди рд╣реИрдВ:

{{- if .Values.global.review }}
---
apiVersion: batch/v1
kind: Job
metadata:
  name: db-create-postgres-database
  annotations:
    "helm.sh/hook": "pre-install"
    "helm.sh/hook-weight": "5"
spec:
  template:
    metadata:
      name: init-db-postgres
    spec:
      volumes:
      - name: postgres-scripts
        configMap:
          defaultMode: 0755
          name: postgresql-configmap
      containers:
      - name: init-postgres-database
        image: private-registry/postgres 
        command: ["/docker-entrypoint-initdb.d/01-review-load-dump.sh"]
        volumeMounts:
        - name: postgres-scripts
          mountPath: /docker-entrypoint-initdb.d/01-review-load-dump.sh
          subPath: review-load-dump.sh
        env:
{{- include "postgres_env" . | indent 8 }}
      restartPolicy: Never
{{- end }}

рдореИрдирд┐рдлрд╝реЗрд╕реНрдЯ рдХреА рд╕рд╛рдордЧреНрд░реА рдкрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ:

  1. Job review-. review CI/CD Helm- (. if .Values.global.review ).
  2. Job тАФ , ConfigMap. , , . , hook-weight.
  3. cURL , PostgreSQL, .
  4. PostgreSQL : , shell- .

PostgreSQL


рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╕реВрдЪреА рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдЙрд▓реНрд▓реЗрдЦрд┐рдд рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ ( review-load-dump.sh) рдореЗрдВ рд╣реИ ред PostgreSQL рдореЗрдВ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдХрд▓реНрдк рдХреНрдпрд╛ рд╣реИрдВ?

  1. рдмреИрдХрдЕрдк рд╕реЗ "рдорд╛рдирдХ" рд╡рд╕реВрд▓реА;
  2. рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ ред

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

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

---
apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: update-postgres-template
spec:
  schedule: "50 4 * * *"
  concurrencyPolicy: Forbid
  successfulJobsHistoryLimit: 3
  failedJobsHistoryLimit: 3
  startingDeadlineSeconds: 600
  jobTemplate:
    spec:
      template:
        spec:
          restartPolicy: Never
          imagePullSecrets:
          - name: registrysecret
          volumes:
          - name: postgres-scripts
            configMap:
              defaultMode: 0755
              name: postgresql-configmap-update-cron
          containers:
          - name: cron
            command: ["/docker-entrypoint-initdb.d/update-postgres-template.sh"]
          image: private-registry/postgres 
            volumeMounts:
            - name: postgres-scripts
              mountPath: /docker-entrypoint-initdb.d/update-postgres-template.sh
              subPath: update-postgres-template.sh
            env:
{{- include "postgres_env" . | indent 8 }}

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

#!/bin/bash -x

CREDENTIALS="postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}/postgres"

psql -d "${CREDENTIALS}" -w -c "REVOKE CONNECT ON DATABASE ${POSTGRES_DB_TEMPLATE} FROM public"
psql -d "${CREDENTIALS}" -w -c "SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity WHERE pg_stat_activity.datname = '${POSTGRES_DB_TEMPLATE}'"

curl --fail -vsL ${HOST_FORDEV}/latest_${POSTGRES_DB_STAGE}.psql -o /tmp/${POSTGRES_DB}.psql

psql -d "${CREDENTIALS}" -w -c "ALTER DATABASE ${POSTGRES_DB_TEMPLATE} WITH is_template false allow_connections true;"
psql -d "${CREDENTIALS}" -w -c "DROP DATABASE ${POSTGRES_DB_TEMPLATE};" || true
psql -d "${CREDENTIALS}" -w -c "CREATE DATABASE ${POSTGRES_DB_TEMPLATE};" || true
pg_restore -U ${POSTGRES_USER} -h ${POSTGRES_HOST} -w -j 4 -d ${POSTGRES_DB_TEMPLATE} /tmp/${POSTGRES_DB}.psql

psql -d "${CREDENTIALS}" -w -c "ALTER DATABASE ${POSTGRES_DB_TEMPLATE} WITH is_template true allow_connections false;"

rm -v /tmp/${POSTGRES_DB}.psql

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

рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпреБрдХреНрдд рдореЗрдирд┐рдлрд╝реЗрд╕реНрдЯ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдирд┐рдХрд▓рд╛:

---
apiVersion: v1
kind: ConfigMap
metadata:
  name: postgresql-configmap
  annotations:
    "helm.sh/hook": "pre-install"
    "helm.sh/hook-weight": "1"
    "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
data:
  review-load-dump.sh: |
    #!/bin/bash -x
    
 
 
    CREDENTIALS="postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}/postgres"

    if [ "$( psql -d "${CREDENTIALS}" -tAc "SELECT CASE WHEN EXISTS (SELECT * FROM pg_stat_activity WHERE datname = '${POSTGRES_DB}' LIMIT 1) THEN 1 ELSE 0 END;" )" = '1' ]
      then
          echo "Open connections has been found in ${POSTGRES_DB} database, will drop them"
          psql -d "${CREDENTIALS}" -c "SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity WHERE pg_stat_activity.datname = '${POSTGRES_DB}' -- AND pid <> pg_backend_pid();"
      else
          echo "No open connections has been found ${POSTGRES_DB} database, skipping this stage"
    fi

    psql -d "${CREDENTIALS}" -c "DROP DATABASE ${POSTGRES_DB}"

    if [ "$( psql -d "${CREDENTIALS}" -tAc "SELECT 1 FROM pg_database WHERE datname='${POSTGRES_DB}'" )" = '1' ]
      then
          echo "Database ${POSTGRES_DB} still exists, delete review job failed"
          exit 1
      else
          echo "Database ${POSTGRES_DB} does not exist, skipping"
    fi


    psql ${CREDENTIALS} -d postgres -c 'CREATE DATABASE ${POSTGRES_DB} TEMPLATE "loot-stage-copy"'

рдЬрд╛рд╣рд┐рд░ рд╣реИ, рд╡реЗ рдпрд╣рд╛рдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ hook-delete-policyред рдЗрди рдиреАрддрд┐рдпреЛрдВ рдХреЗ рдЖрд╡реЗрджрди рдкрд░ рд╡рд┐рд╡рд░рдг рдпрд╣рд╛рдБ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВ ред рджрд┐рдП рдЧрдП рдкреНрд░рдХрдЯ рдореЗрдВ рд╣рдо рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ before-hook-creation,hook-succeededрдЬреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ: рдПрдХ рдирдпрд╛ рд╣реБрдХ рдмрдирд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкрд┐рдЫрд▓реА рд╡рд╕реНрддреБ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ рдФрд░ рдХреЗрд╡рд▓ рддрднреА рд╣рдЯрд╛рдПрдВ рдЬрдм рд╣реБрдХ рд╕рдлрд▓ рдерд╛ред

рд╣рдо рдЗрд╕ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд╣рдЯрд╛ рджреЗрдВрдЧреЗ:

---
apiVersion: v1
kind: ConfigMap
metadata:
  name: postgresql-configmap-on-delete
  annotations:
    "helm.sh/hook": "post-delete, pre-delete"
    "helm.sh/hook-weight": "1"
    "helm.sh/hook-delete-policy": before-hook-creation
data:
  review-delete-db.sh: |
    #!/bin/bash -e

    CREDENTIALS="postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}/postgres"

    psql -d "${CREDENTIALS}" -w postgres -c "DROP DATABASE ${POSTGRES_DB}"

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

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

  1. рд╣рд░ рд░рд╛рдд, рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдмреИрдХрдЕрдк рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЗрд╕реЗ рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рд╕реНрдерд╛рдиреАрдп рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред
  2. рд╕рдореАрдХреНрд╖рд╛ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╕рдордп, рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдбрдВрдк рд╕реЗ рд▓реЛрдб рдФрд░ рдмрд╣рд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  3. рдЬрдм рдбрдВрдк рдХреЛ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЕрдиреНрдп рд╕рднреА рдХреНрд░рд┐рдпрд╛рдПрдВ рдХреА рдЬрд╛рддреА рд╣реИрдВред

рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рдЧрднрдЧ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реЛ рдЬрд╛рдПрдЧреА:

---
apiVersion: v1
kind: ConfigMap
metadata:
  name: postgresql-configmap
  annotations:
    "helm.sh/hook": "pre-install"
    "helm.sh/hook-weight": "1"
    "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
data:
  review-load-dump.sh: |
    #!/bin/bash -x

    CREDENTIALS="postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}/postgres"
    psql -d "${CREDENTIALS}" -w -c "DROP DATABASE ${POSTGRES_DB}" || true
    psql -d "${CREDENTIALS}" -w -c "CREATE DATABASE ${POSTGRES_DB}"

    curl --fail -vsL ${HOST_FORDEV}/latest_${POSTGRES_DB_STAGE}.psql -o /tmp/${POSTGRES_DB}.psql

    psql psql -d "${CREDENTIALS}" -w -c "CREATE EXTENSION ip4r;"
    pg_restore -U ${POSTGRES_USER} -h ${POSTGRES_HOST} -w -j 4 -d ${POSTGRES_DB} /tmp/${POSTGRES_DB}.psql
    rm -v /tmp/${POSTGRES_DB}.psql

рдпрд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдКрдкрд░ рдмрддрд╛рдИ рдЧрдИ рдмрд╛рддреЛрдВ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред рд╕рднреА рдХрд╛рд░реНрдп рдЬреЛрдбрд╝реЗ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдПрдХрдорд╛рддреНрд░ рдкрд░рд┐рд╡рд░реНрддрди psql рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╣рдЯрд╛рдирд╛ рд╣реИред

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

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

MongoDB


рдЕрдЧрд▓рд╛ рдШрдЯрдХ MongoDB рд╣реИред рдЗрд╕рдХреЗ рд╕рд╛рде рдореБрдЦреНрдп рдХрдард┐рдирд╛рдИ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ DBMS рдХреЗ рд▓рд┐рдП, рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдХреЙрдкреА рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк (рдЬреИрд╕рд╛ рдХрд┐ PostgreSQL рдореЗрдВ) рдирд╛рдордорд╛рддреНрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдореМрдЬреВрдж рд╣реИ, рдХреНрдпреЛрдВрдХрд┐:

  1. рд╡рд╣ рдкрджрд╛рд╡рдирдд рдЕрд╡рд╕реНрдерд╛ рдореЗрдВ рд╣реИ ред
  2. рд╣рдорд╛рд░реЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╣рдордиреЗ рд╕рд╛рдорд╛рдиреНрдп рд░рд┐рдХрд╡рд░реА рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рд░рд┐рдХрд╡рд░реА рдХреЗ рд╕рдордп рдореЗрдВ рдмрдбрд╝рд╛ рдЕрдВрддрд░ рдирд╣реАрдВ рдкрд╛рдпрд╛ mongo_restoreред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ - рдЖрдкрдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкрд░рд┐рдгрд╛рдо рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдПрдХ рдмрдбрд╝реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рд╡реЙрд▓реНрдпреВрдо рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рдЧрдВрднреАрд░ рд╕рдорд╕реНрдпрд╛ рдЙрддреНрдкрдиреНрди рд╣реЛ рд╕рдХрддреА рд╣реИ: рд╣рдо PgSQL рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдкрд░ рд╕рдордп рдмрдЪрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рд╛рде рд╣реА, рд╣рдо рдмрд╣реБрдд рд▓рдВрдмреЗ рд╕рдордп рдХреЗ рд▓рд┐рдП рдорд╛рдирдЧреЛ рдореЗрдВ рдбрдВрдк рдХреЛ рдмрд╣рд╛рд▓ рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдЦрди рдХреЗ рд╕рдордп, рдФрд░ рдореМрдЬреВрджрд╛ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░, рд╣рдордиреЗ рддреАрди рддрд░реАрдХреЗ рджреЗрдЦреЗ (рд╡реИрд╕реЗ, рдЙрдиреНрд╣реЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ):

  1. рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ рдореЗрдВ рдПрдХ рд▓рдВрдмрд╛ рд╕рдордп рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдкрдХрд╛ DBMS рдиреЗрдЯрд╡рд░реНрдХ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рд╕реНрдерд┐рдд рд╣реИ ( рдЙрддреНрдкрд╛рджрди рдХреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ )ред рдлрд┐рд░ рдЖрдк рдмрд╕ рдЪрд░рдг рд╕реЗ DBMS рдХреЛ рдПрдХ рдЕрд▓рдЧ рдиреЛрдб рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕реНрдерд╛рдиреАрдп рднрдВрдбрд╛рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЪреВрдВрдХрд┐ рдпрд╣ рдЙрддреНрдкрд╛рджрди рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╕рдореАрдХреНрд╖рд╛ рдмрдирд╛рдиреЗ рдХреА рдЧрддрд┐ рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред
  2. рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рдЬреЙрдм рд░рд┐рдХрд╡рд░реА рдХреЛ рдПрдХ рдЕрд▓рдЧ рдкреЙрдб рдореЗрдВ рд▓реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдЖрдк рдбреАрдмреАрдПрдордПрд╕ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдкрд░ рдирд┐рд░реНрднрд░ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдФрд░ рдЕрдиреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдкреВрд░реНрд╡-рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП рд╣рдо рдЙрдиреНрд╣реЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдкреВрд░рд╛ рдХрд░рдХреЗ рд╕рдордп рдмрдЪрд╛рддреЗ рд╣реИрдВред
  3. рдХрднреА-рдХрднреА рдЖрдк рдкреБрд░рд╛рдиреЗ / рдЕрдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдбреЗрдЯрд╛ рдХреЛ рд╣рдЯрд╛рдХрд░ рдбрдВрдк рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдХрдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдЗрд╕ рдмрд┐рдВрджреБ рддрдХ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдмреЗрд╢рдХ, рдпрд╣ рдЙрди рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИ рдЬрдм рдкреВрд░реНрдг рдбрдВрдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ (рдЬреИрд╕реЗ, рдХреНрдпреВрдП рдкрд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП)ред

рдпрджрд┐ рдЖрдкрдХреЛ рдЬрд▓реНрджреА рд╕реЗ рд╕рдореАрдХреНрд╖рд╛ рд╡рд╛рддрд╛рд╡рд░рдг рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╕рднреА рд╡рд░реНрдгрд┐рдд рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╣рдо, PgSQL рдХреЗ рд╕рдорд╛рди рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдХреЙрдкреА рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг, рдкрд╣рд▓реЗ рддрд░реАрдХреЗ рд╕реЗ рдЬрд╛рдПрдВрдЧреЗ, рдЕрд░реНрдерд╛рддред рдмреИрдХрдЕрдк рд╕реЗ рдорд╛рдирдХ рд╡рд╕реВрд▓реАред рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо PgSQL рдХреЗ рд╕рдорд╛рди рд╣реИред рдпрджрд┐ рдЖрдк рдШреЛрд╖рдгрд╛рдкрддреНрд░ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рджреЗрдЦрдирд╛ рдЖрд╕рд╛рди рд╣реИ:

---
apiVersion: v1
kind: ConfigMap
metadata:
  name: mongodb-scripts-on-delete
  annotations:
    "helm.sh/hook": "post-delete, pre-delete"
    "helm.sh/hook-weight": "1"
    "helm.sh/hook-delete-policy": before-hook-creation
data:
  review-delete-db.sh: |
    #!/bin/bash -x

    mongo ${MONGODB_NAME} --eval "db.dropDatabase()" --host ${MONGODB_REPLICASET}/${MONGODB_HOST}
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: mongodb-scripts
  annotations:
    "helm.sh/hook": "pre-install"
    "helm.sh/hook-weight": "1"
    "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
data:
  review-load-dump.sh: |
    #!/bin/bash -x

    curl --fail -vsL ${HOST_FORDEV}/latest_${MONGODB_NAME_STAGE}.gz -o /tmp/${MONGODB_NAME}.gz

    mongo ${MONGODB_NAME} --eval "db.dropDatabase()" --host ${MONGODB_REPLICASET}/${MONGODB_HOST}
    mongorestore --gzip --nsFrom "${MONGODB_NAME_STAGE}.*" --nsTo "${MONGODB_NAME}.*" --archive=/tmp/${MONGODB_NAME}.gz --host ${MONGODB_REPLICASET}/${MONGODB_HOST}

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

MongoDB рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕рдореАрдХреНрд╖рд╛ рдмрдирд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рднреА рд╣рдЯрд╛ рджреЗрддреЗ рд╣реИрдВ - рдпрд╣ PostgreSQL рдХреЗ рд╕рдорд╛рди рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

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

the --db and --collection args should only be used when restoring from a BSON file. Other uses are deprecated and will not exist in the future; use --nsInclude instead

рдЗрд╕рд▓рд┐рдП, рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, --nsFromрдФрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ --nsToред

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

RabbitMQ


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

Vhosts рдмрдирд╛рдиреЗ рдФрд░ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдШреЛрд╖рдгрд╛рдкрддреНрд░:

---
apiVersion: v1
kind: ConfigMap
metadata:
  name: rabbitmq-configmap
  annotations:
    "helm.sh/hook": "pre-install"
    "helm.sh/hook-weight": "1"
    "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
data:
  rabbitmq-setup-vhost.sh: |
    #!/bin/bash -x

    /usr/local/bin/rabbitmqadmin -H ${RABBITMQ_HOST} -u ${RABBITMQ_USER} -p ${RABBITMQ_PASSWORD} declare vhost name=${RABBITMQ_VHOST}
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: rabbitmq-configmap-on-delete
  annotations:
    "helm.sh/hook": "post-delete, pre-delete"
    "helm.sh/hook-weight": "1"
    "helm.sh/hook-delete-policy": before-hook-creation
data:
  rabbitmq-delete-vhost.sh: |
    #!/bin/bash -x

    /usr/local/bin/rabbitmqadmin -H ${RABBITMQ_HOST} -u ${RABBITMQ_USER} -p ${RABBITMQ_PASSWORD} delete vhost name=${RABBITMQ_VHOST}

RabbitMQ рдореЗрдВ рдмрдбрд╝реА рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХреЗ рд╕рд╛рде рд╣рдордиреЗ (рдЕрдм рддрдХ?) рд╕рд╛рдордирд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╡рд╣реА рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рд╕реЗрд╡рд╛рдУрдВ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЯрд╛рдИ рдирд╣реАрдВ рд╣реИред

рдиреБрдХрд╕рд╛рди


рдпрд╣ рдирд┐рд░реНрдгрдп "рд╕рд░реНрд╡реЛрддреНрддрдо рдЕрднреНрдпрд╛рд╕" рд╣реЛрдиреЗ рдХрд╛ рджрд╛рд╡рд╛ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ?

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

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

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


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

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

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

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


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


All Articles