Kubernetes рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рднрд╛рдЧ 1: рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ, рдорд╛рдЗрдХреНрд░реЛрд╕реЗрд╡рд╛рд╣рд░реВ, рд░ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ

рд╣рд╛рдореНрд░реЛ рдЕрдиреБрд░реЛрдзрдорд╛, Habr рд▓реЗ рдПрдЙрдЯрд╛ рд╣рдм рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдпреЛ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рд░ рд╣рд╛рдореА рдпрд╕рдорд╛ рдкрд╣рд┐рд▓реЛ рдкреНрд░рдХрд╛рд╢рди рд░рд╛рдЦреНрди рдкрд╛рдЙрдБрджрд╛ рдЦреБрд╕реА рдЫреМрдВред рд╕рджрд╕реНрдпрддрд╛ рд▓рд┐рдиреБрд╣реЛрд╕реН!

Kubernetes рд╕рдЬрд┐рд▓реЛ рдЫред рдХрд┐рди рдмреИрдВрдХрд╣рд░реВрд▓реЗ рдорд▓рд╛рдИ рдпрд╕ рдХреНрд╖реЗрддреНрд░рдорд╛ рдХрд╛рдо рдЧрд░реНрди рдзреЗрд░реИ рдкреИрд╕рд╛ рддрд┐рд░реНрдЫрдиреН, рдЬрдмрдХрд┐ рдХрд╕реИрд▓реЗ рдХреЗрд╣реА рдШрдгреНрдЯрд╛рдорд╛ рдпреЛ рдкреНрд░рд╡рд┐рдзрд┐ рдорд╛рд╕реНрдЯрд░ рдЧрд░реНрди рд╕рдХреНрдЫ?

Kubernetes рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рднрд╛рдЧ 1: рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ, рдорд╛рдЗрдХреНрд░реЛрд╕реЗрд╡рд╛рд╣рд░реВ, рд░ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ

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

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

рдЕрдм, рдердк рд╡рд┐рдЬреНрдЮрд╛рдкрди рдмрд┐рдирд╛, рд╕реБрд░реБ рдЧрд░реМрдВ рд░ рд╣рд╛рдореАрд▓реЗ рдХрд╛рдо рдЧрд░реНрдиреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рдмрд╛рд░реЗрдорд╛ рдХреБрд░рд╛ рдЧрд░реМрдВред

рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рдЖрд╡реЗрджрди

рд╣рд╛рдореНрд░реЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд▓реЗ рдорд╛рддреНрд░ рдПрдХ рдкреНрд░рдХрд╛рд░реНрдп рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрдиреЗрдЫред рдпрд╕рд▓реЗ рдЗрдирдкреБрдЯрдХреЛ рд░реВрдкрдорд╛ рдПрдЙрдЯрд╛ рд╡рд╛рдХреНрдп рд▓рд┐рдиреНрдЫ, рддреНрдпрд╕рдкрдЫрд┐, рдкрд╛рда рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЙрдкрдХрд░рдгрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░, рдпрд╕рд▓реЗ рд╡рд╛рдХреНрдпрдХреЛ рд▓реЗрдЦрдХрдХреЛ рднрд╛рд╡рдирд╛рддреНрдордХ рдордиреЛрд╡реГрддреНрддрд┐рдХреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╡рд╕реНрддреБрдХреЛ рдореВрд▓реНрдпрд╛рдЩреНрдХрди рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрджреИ, рдпреЛ рд╡рд╛рдХреНрдпрдХреЛ рднрд╛рд╡рдирд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЧрд░реНрджрдЫред

рдпреЛ рдпрд╕ рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рдореБрдЦреНрдп рд╡рд┐рдиреНрдбреЛ рдЬрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫред

Kubernetes рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рднрд╛рдЧ 1: рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ, рдорд╛рдЗрдХреНрд░реЛрд╕реЗрд╡рд╛рд╣рд░реВ, рд░ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ
рдкрд╛рдард╣рд░реВрдХреЛ рднрд╛рд╡рдирд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрдХреЛ рд▓рд╛рдЧрд┐ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ

рдкреНрд░рд╛рд╡рд┐рдзрд┐рдХ рджреГрд╖реНрдЯрд┐рдХреЛрдгрдмрд╛рдЯ, рдПрдкреНрд▓рд┐рдХреЗрд╕рдирд▓реЗ рддреАрдирд╡рдЯрд╛ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрднрд┐рд╕реЗрд╕рд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫ, рдЬрд╕рдордзреНрдпреЗ рдкреНрд░рддреНрдпреЗрдХрд▓реЗ рд╕рдорд╕реНрдпрд╛рд╣рд░реВрдХреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реЗрдЯ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрджрдЫ:

  • SA-Frontend рдПрдХ Nginx рд╡реЗрдм рд╕рд░реНрднрд░ рд╣реЛ рдЬрд╕рд▓реЗ рд╕реНрдерд┐рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдлрд╛рдЗрд▓рд╣рд░реВ рд╕реЗрд╡рд╛ рдЧрд░реНрджрдЫред
  • SA-WebApp рдЬрд╛рднрд╛рдорд╛ рд▓реЗрдЦрд┐рдПрдХреЛ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣реЛ рдЬрд╕рд▓реЗ рдлреНрд░рдиреНрдЯрдПрдиреНрдбрдмрд╛рдЯ рдЕрдиреБрд░реЛрдзрд╣рд░реВ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрджрдЫред
  • SA-Logic рдПрдХ рдкрд╛рдЗрдерди рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣реЛ рдЬрд╕рд▓реЗ рдкрд╛рдардорд╛ рднрд╛рд╡рдирд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЧрд░реНрджрдЫред

рдпреЛ рдиреЛрдЯ рдЧрд░реНрди рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдЫ рдХрд┐ рдорд╛рдЗрдХреНрд░реЛ рд╕реЗрд╡рд╛рд╣рд░реВ рдЕрд▓рдЧрд╛рд╡рдорд╛ рдЕрд╡рд╕реНрдерд┐рдд рдЫреИрдирдиреНред рддрд┐рдиреАрд╣рд░реВрд▓реЗ "рдЬрд┐рдореНрдореЗрд╡рд╛рд░реАрд╣рд░реВрдХреЛ рд╡рд┐рднрд╛рдЬрди" рдХреЛ рд╡рд┐рдЪрд╛рд░ рд▓рд╛рдЧреВ рдЧрд░реНрдЫрдиреН, рддрд░ рдПрдХреИ рд╕рдордпрдорд╛ рддрд┐рдиреАрд╣рд░реВрд▓реЗ рдПрдХрдЕрд░реНрдХрд╛рд╕рдБрдЧ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред

Kubernetes рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рднрд╛рдЧ 1: рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ, рдорд╛рдЗрдХреНрд░реЛрд╕реЗрд╡рд╛рд╣рд░реВ, рд░ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ
рдЕрдиреБрдкреНрд░рдпреЛрдЧрдорд╛ рдбрд╛рдЯрд╛ рдкреНрд░рд╡рд╛рд╣

рдорд╛рдерд┐рдХреЛ рд░реЗрдЦрд╛рдЪрд┐рддреНрд░рдорд╛, рддрдкрд╛рдЗрдБ рдкреНрд░рдгрд╛рд▓реАрдХреЛ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдЪрд░рдгрд╣рд░реВ рджреЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдЕрдиреБрдкреНрд░рдпреЛрдЧрдорд╛ рдбреЗрдЯрд╛ рдкреНрд░рд╡рд╛рд╣рдХреЛ рдЪрд┐рддреНрд░рдг рдЧрд░реНрджреИред рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рд╣реЗрд░реМрдВ:

  1. рдмреНрд░рд╛рдЙрдЬрд░рд▓реЗ рд╕рд░реНрднрд░рдмрд╛рдЯ рдлрд╛рдЗрд▓ рдЕрдиреБрд░реЛрдз рдЧрд░реНрджрдЫ index.html (рдЬреБрди, рдмрд╛рд░реАрдорд╛, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкреНрдпрд╛рдХреЗрдЬ рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░реНрджрдЫ)ред
  2. рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд▓реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╕рдБрдЧ рдЕрдиреНрддрд░реНрдХреНрд░рд┐рдпрд╛ рдЧрд░реНрджрдЫ, рдпрд╕рд▓реЗ рд╡рд╕рдиреНрдд-рдЖрдзрд╛рд░рд┐рдд рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧрдорд╛ рдХрд▓ рдЧрд░реНрджрдЫред
  3. рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧрд▓реЗ рдкрд╛рдЗрдерди рдЕрдиреБрдкреНрд░рдпреЛрдЧрдорд╛ рдкрд╛рда рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЧрд░реНрди рдЕрдиреБрд░реЛрдз рдлрд░реНрд╡рд╛рд░реНрдб рдЧрд░реНрджрдЫред
  4. рдкрд╛рдЗрдерди рдЕрдиреБрдкреНрд░рдпреЛрдЧрд▓реЗ рдкрд╛рдардХреЛ рднрд╛рд╡рдирд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЧрд░реНрдЫ рд░ рдЕрдиреБрд░реЛрдзрдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдХреЛ рд░реВрдкрдорд╛ рдкрд░рд┐рдгрд╛рдо рдлрд░реНрдХрд╛рдЙрдБрдЫред
  5. рд╡рд╕рдиреНрдд рдЕрдиреБрдкреНрд░рдпреЛрдЧрд▓реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрдорд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкрдард╛рдЙрдБрдЫ (рдЬрд╕рд▓реЗ, рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд▓рд╛рдИ рдкрд╛рда рд╡рд┐рд╢реНрд▓реЗрд╖рдгрдХреЛ рдкрд░рд┐рдгрд╛рдо рджреЗрдЦрд╛рдЙрдБрдЫ)ред

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

рддрдкрд╛рдИрдХреЛ рд╕реНрдерд╛рдиреАрдп рдореЗрд╕рд┐рдирдорд╛ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрднрд┐рд╕реЗрд╕-рдЖрдзрд╛рд░рд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЪрд▓рд╛рдЙрдБрджреИ

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

тЦНрд╕реНрдерд╛рдиреАрдп рд╡рд┐рдХрд╛рд╕рдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕реЗрдЯ рдЕрдк рдЧрд░реНрдиреБрд╣реЛрд╕реН

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЪрд▓рд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐, рддрдкрд╛рдИрдВрд▓реЗ рдЖрдлреНрдиреЛ рдХрдореНрдкреНрдпреБрдЯрд░рдорд╛ Node.js рдкреНрд▓реЗрдЯрдлрд░реНрдо рд░ NPM рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред рдПрдХрдЪреЛрдЯрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдпреЛ рд╕рдмреИ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реЗрдкрдЫрд┐, рддрдкрд╛рдИрдВрдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлреЛрд▓реНрдбрд░рдорд╛ рдиреЗрднрд┐рдЧреЗрдЯ рдЧрд░реНрди рдЯрд░реНрдорд┐рдирд▓ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН sa-frontend рд░ рдирд┐рдореНрди рдЖрджреЗрд╢ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН:

npm install

рдлреЛрд▓реНрдбрд░рдорд╛ рдпреЛ рдЖрджреЗрд╢ рдЪрд▓рд╛рдПрд░ node_modules рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рдирд┐рд░реНрднрд░рддрд╛рд╣рд░реВ рд▓реЛрдб рд╣реБрдиреЗрдЫрдиреН, рдЬрд╕рдХрд╛ рд░реЗрдХрд░реНрдбрд╣рд░реВ рдлрд╛рдЗрд▓рдорд╛ рдЫрдиреН package.jsonред рдПрдЙрдЯреИ рдлреЛрд▓реНрдбрд░рдорд╛ рдирд┐рд░реНрднрд░рддрд╛рд╣рд░реВ рдбрд╛рдЙрдирд▓реЛрдб рднрдПрдкрдЫрд┐, рдирд┐рдореНрди рдЖрджреЗрд╢ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН:

npm start

рдпрддрд┐ рдиреИред рдЕрдм рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдЫ, рддрдкрд╛рдИрдВрд▓реЗ рдЖрдлреНрдиреЛ рдмреНрд░рд╛рдЙрдЬрд░рдорд╛ рдирд┐рдореНрди рдареЗрдЧрд╛рдирд╛рдорд╛ рдЧрдПрд░ рдпрд╕рд▓рд╛рдИ рдкрд╣реБрдБрдЪ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ: localhost:3000ред рддрдкрд╛рдИрдВ рдпрд╕рдХреЛ рдХреЛрдбрдорд╛ рдХреЗрд╣рд┐ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рддрдкрд╛рдИрдВрд▓реЗ рддреБрд░реБрдиреНрддреИ рдмреНрд░рд╛рдЙрдЬрд░рдорд╛ рдпреА рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВрдХреЛ рдкреНрд░рднрд╛рд╡ рджреЗрдЦреНрдиреБрд╣реБрдиреЗрдЫред рдпреЛ рддрдерд╛рдХрдерд┐рдд "рддрд╛рддреЛ" рдореЛрдбреНрдпреБрд▓рд╣рд░реВрдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрдирдХреЛ рд▓рд╛рдЧрд┐ рд╕рдореНрднрд╡ рдЫред рдпрд╕рд▓реЗ рдлреНрд░рдиреНрдЯ-рдПрдиреНрдб рд╡рд┐рдХрд╛рд╕рд▓рд╛рдИ рд╕рд░рд▓ рд░ рд░рдорд╛рдЗрд▓реЛ рдЕрдиреБрднрд╡ рдмрдирд╛рдЙрдБрдЫред

тЦНрдЙрддреНрдкрд╛рджрдирдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рддрдпрд╛рд░ рдЧрд░реНрджреИ

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

React рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрди, рдлреЗрд░рд┐ рдЯрд░реНрдорд┐рдирд▓ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░, рдлреЛрд▓реНрдбрд░рдорд╛ рдиреЗрднрд┐рдЧреЗрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН sa-frontend рд░ рдирд┐рдореНрди рдЖрджреЗрд╢ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН:

npm run build

рдпрд╕рд▓реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдлреЛрд▓реНрдбрд░рдорд╛ рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реА рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗрдЫ buildред рдпрд╕рд▓реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд▓реЗ рдХрд╛рдо рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рдЖрд╡рд╢реНрдпрдХ рд╕рдмреИ рд╕реНрдерд┐рд░ рдлрд╛рдЗрд▓рд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫред

тЦН Nginx рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕реНрдерд┐рд░ рдлрд╛рдЗрд▓рд╣рд░реВ рд╕реЗрд╡рд╛ рдЧрд░реНрджреИ

рдкрд╣рд┐рд▓реЗ рддрдкрд╛рдИрдВрд▓реЗ Nginx рд╡реЗрдм рд╕рд░реНрднрд░ рд╕реНрдерд╛рдкрдирд╛ рд░ рдЪрд▓рд╛рдЙрди рдЖрд╡рд╢реНрдпрдХ рдЫред рдпреЛ рдЫ рддрдкрд╛рдЗрдБ рдпрд╕рд▓рд╛рдИ рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рд░ рдпрд╕рд▓рд╛рдИ рдХрд╕рд░реА рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреЗ рд░ рдЪрд▓рд╛рдЙрдиреЗ рдмрд╛рд░реЗ рдирд┐рд░реНрджреЗрд╢рдирд╣рд░реВ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рддреНрдпрд╕рдкрдЫрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдлреЛрд▓реНрдбрд░рдХреЛ рд╕рд╛рдордЧреНрд░реА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ sa-frontend/build рдлреЛрд▓реНрдбрд░рдорд╛ [your_nginx_installation_dir]/html.

рдпрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдгрдХреЛ рд╕рд╛рде, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛рдХреЛ рдХреНрд░рдордорд╛ рдЙрддреНрдкрдиреНрди рднрдПрдХреЛ рдлрд╛рдЗрд▓ index.html рдорд╛ рдЙрдкрд▓рдмреНрдз рд╣реБрдиреЗрдЫ [your_nginx_installation_dir]/html/index.htmlред рдпреЛ рдлрд╛рдЗрд▓ рд╣реЛ рдЬреБрди, рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛, Nginx рд╕рд░реНрднрд░рд▓реЗ рдпрд╕рд▓рд╛рдИ рдкрд╣реБрдБрдЪ рдЧрд░реНрджрд╛ рдЙрддреНрдкрд╛рджрди рдЧрд░реНрджрдЫред рд╕рд░реНрднрд░ рдкреЛрд░реНрдЯрдорд╛ рд╕реБрдиреНрди рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░рд┐рдПрдХреЛ рдЫ 80, рддрд░ рдпреЛ рдлрд╛рдЗрд▓ рд╕рдореНрдкрд╛рджрди рдЧрд░реЗрд░ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдЪрд╛рд╣рд┐рдиреЗ рддрд░рд┐рдХрд╛ рдЕрдиреБрдХреВрд▓рд┐рдд рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ [your_nginx_installation_dir]/conf/nginx.conf.

рдЕрдм рддрдкрд╛рдЗрдБрдХреЛ рдмреНрд░рд╛рдЙрдЬрд░ рдЦреЛрд▓реНрдиреБрд╣реЛрд╕реН рд░ рдЬрд╛рдиреБрд╣реЛрд╕реН localhost:80ред рддрдкрд╛рдИрдВрд▓реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЖрд╡реЗрджрди рдкреГрд╖реНрда рджреЗрдЦреНрдиреБрд╣реБрдиреЗрдЫред

Kubernetes рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рднрд╛рдЧ 1: рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ, рдорд╛рдЗрдХреНрд░реЛрд╕реЗрд╡рд╛рд╣рд░реВ, рд░ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ
Nginx рд╕рд░реНрднрд░ рджреНрд╡рд╛рд░рд╛ рд╕реЗрд╡рд╛ рдЖрд╡реЗрджрди рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛

рдпрджрд┐ рддрдкрд╛рдЗрдБ рдЕрдм рдХреНрд╖реЗрддреНрд░ рдорд╛ рдХреЗрд╣рд┐ рдкреНрд░рд╡рд┐рд╖реНрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН Type your sentence рд░ рдмрдЯрди рдерд┐рдЪреНрдиреБрд╣реЛрд╕реН Send -рдХреЗрд╣реА рд╣реБрдиреЗ рдЫреИрдиред рддрд░, рдпрджрд┐ рддрдкрд╛рдЗрдБ рдХрдиреНрд╕реЛрд▓рдорд╛ рд╣реЗрд░реНрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рддрдкрд╛рдЗрдБ рддреНрдпрд╣рд╛рдБ рддреНрд░реБрдЯрд┐ рд╕рдиреНрджреЗрд╢рд╣рд░реВ рджреЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рд╡рд╛рд╕реНрддрд╡рдорд╛ рдпреА рддреНрд░реБрдЯрд┐рд╣рд░реВ рдХрд╣рд╛рдБ рд╣реБрдиреНрдЫрдиреН рднрдиреЗрд░ рдмреБрдЭреНрдирдХреЛ рд▓рд╛рдЧрд┐, рдПрдкреНрд▓рд┐рдХреЗрд╕рди рдХреЛрдбрдХреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЧрд░реМрдВред

тЦНрдлреНрд░рдиреНрдЯ-рдПрдиреНрдб рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдг

рдлрд╛рдЗрд▓ рдХреЛрдб рд╣реЗрд░реНрджреИ App.js, рд╣рд╛рдореА рддреНрдпреЛ рдмрдЯрди рдерд┐рдЪреЗрд░ рджреЗрдЦреНрди рд╕рдХреНрдЫреМрдВ Send рд╡рд┐рдзрд┐ рдмреЛрд▓рд╛рдЙрдБрдЫрдиреН analyzeSentence()ред рдпрд╕ рд╡рд┐рдзрд┐рдХреЛ рд▓рд╛рдЧрд┐ рдХреЛрдб рддрд▓ рджрд┐рдЗрдПрдХреЛ рдЫред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджрд┐рдиреБрд╣реЛрд╕реН рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд▓рд╛рдЗрдирдХреЛ рд▓рд╛рдЧрд┐ рдлрд╛рд░рдордХреЛ рдЯрд┐рдкреНрдкрдгреА рдЫ # ╨Э╨╛╨╝╨╡╤А, рддреНрдпрд╣рд╛рдБ рдХреЛрдб рддрд▓ рджрд┐рдЗрдПрдХреЛ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдЫред рд╣рд╛рдореА рдЕрдиреНрдп рдХреЛрдбрдХрд╛ рдЯреБрдХреНрд░рд╛рд╣рд░реВрд▓рд╛рдИ рдкрдирд┐ рддреНрдпрд╕реНрддреИ рд░реВрдкрдорд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЧрд░реНрдиреЗрдЫреМрдВред

analyzeSentence() {
    fetch('http://localhost:8080/sentiment', {  // #1
        method: 'POST',
        headers: {
            'Content-Type': 'application/json'
        },
        body: JSON.stringify({
                       sentence: this.textField.getValue()})// #2
    })
        .then(response => response.json())
        .then(data => this.setState(data));  // #3
}

1. POST рдЕрдиреБрд░реЛрдз рдЧрд░рд┐рдПрдХреЛ URLред рдпреЛ рдареЗрдЧрд╛рдирд╛рдорд╛ рдПрдЙрдЯрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЫ рдЬреБрди рддреНрдпрд╕реНрддрд╛ рдЕрдиреБрд░реЛрдзрд╣рд░реВрдХреЛ рдЕрдкреЗрдХреНрд╖рд╛ рдЧрд░реНрджрдЫ рднрдиреНрдиреЗ рдорд╛рдирд┐рдиреНрдЫред

2.рдЕрдиреБрд░реЛрдз рдирд┐рдХрд╛рдпрд▓реЗ рдЖрд╡реЗрджрдирдорд╛ рдкрдард╛рдПрдХреЛ рдЫред рдпрд╣рд╛рдБ рдПрдЙрдЯрд╛ рдЙрджрд╛рд╣рд░рдг рдЕрдиреБрд░реЛрдз рдирд┐рдХрд╛рдп рд╣реЛ:

{
    sentence: "I like yogobella!"
}

3.рдЬрдм рдЕрдиреБрд░реЛрдзрдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рд╣реБрдиреНрдЫ, рдХрдореНрдкреЛрдиреЗрдиреНрдЯрдХреЛ рдЕрд╡рд╕реНрдерд╛ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рд╣реБрдиреНрдЫред рдпрд╕рд▓реЗ рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд▓рд╛рдИ рдкреБрди: рд░реЗрдиреНрдбрд░ рдЧрд░реНрди рдирд┐рдореНрддреНрдпрд╛рдЙрдБрдЫред рдпрджрд┐ рд╣рд╛рдореАрд▓реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдпреМрдВ (рдЕрд░реНрдерд╛рдд, рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рд░ рдЧрдгрдирд╛ рдЧрд░рд┐рдПрдХреЛ рдкрд╛рда рд╕реНрдХреЛрд░ рднрдПрдХреЛ JSON рд╡рд╕реНрддреБ), рд╣рд╛рдореА рдХрдореНрдкреЛрдиреЗрдиреНрдЯ рдЖрдЙрдЯрдкреБрдЯ рдЧрд░реНрдиреЗрдЫреМрдВред Polarity, рдЙрдкрдпреБрдХреНрдд рд╕рд░реНрддрд╣рд░реВ рдкреВрд░рд╛ рд╣реБрдиреЗрдЫред рдпрд╕рд░реА рд╣рд╛рдореА рдХрдореНрдкреЛрдиреЗрдиреНрдЯрдХреЛ рд╡рд░реНрдгрди рдЧрд░реНрдЫреМрдВ:

const polarityComponent = this.state.polarity !== undefined ?
    <Polarity sentence={this.state.sentence} 
              polarity={this.state.polarity}/> :
    null;

рдХреЛрдбрд▓реЗ рд░рд╛рдореНрд░реЛрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реЗрдХреЛ рджреЗрдЦрд┐рдиреНрдЫред рдЬреЗ рднрдП рдкрдирд┐, рдпрд╕рдорд╛ рдХреЗ рдЧрд▓рдд рдЫ? рдпрджрд┐ рддрдкрд╛рдЗрдБ рдорд╛рдиреНрдиреБрд╣реБрдиреНрдЫ рдХрд┐ рдареЗрдЧрд╛рдирд╛рдорд╛ рдЬреБрди рдареЗрдЧрд╛рдирд╛рдорд╛ рдПрдкреНрд▓рд┐рдХреЗрд╕рдирд▓реЗ POST рдЕрдиреБрд░реЛрдз рдкрдард╛рдЙрди рдХреЛрд╢рд┐рд╕ рдЧрд░рд┐рд░рд╣реЗрдХреЛ рдЫ, рддреНрдпрд╣рд╛рдБ рдпреЛ рдЕрдиреБрд░реЛрдз рд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрди рд░ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрди рд╕рдХреНрдиреЗ рдХреЗрд╣рд┐ рдЫреИрди, рддрдм рддрдкрд╛рдЗрдБ рдмрд┐рд▓реНрдХреБрд▓ рд╕рд╣реА рд╣реБрдиреБрд╣реБрдиреЗрдЫред рдЕрд░реНрдерд╛рддреН, рдорд╛ рдкреНрд░рд╛рдкреНрдд рдЕрдиреБрд░реЛрдзрд╣рд░реВ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрди http://localhost:8080/sentiment, рд╣рд╛рдореАрд▓реЗ рд╡рд╕рдиреНрддрдорд╛ рдЖрдзрд╛рд░рд┐рдд рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЪрд▓рд╛рдЙрди рдЖрд╡рд╢реНрдпрдХ рдЫред

Kubernetes рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рднрд╛рдЧ 1: рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ, рдорд╛рдЗрдХреНрд░реЛрд╕реЗрд╡рд╛рд╣рд░реВ, рд░ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ
рд╣рд╛рдореАрд▓рд╛рдИ POST рдЕрдиреБрд░реЛрдз рд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрди рд╕рдХреНрдиреЗ рд╡рд╕рдиреНрдд рдЖрд╡реЗрджрди рдЪрд╛рд╣рд┐рдиреНрдЫ

тЦНрдПрдХ рд╡рд╕рдиреНрдд рдЖрдзрд╛рд░рд┐рдд рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реЗрдЯрдЕрдк

рд╡рд╕рдиреНрдд рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдбрд┐рдкреНрд▓реЛрдп рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, рддрдкрд╛рдИрдВрд▓рд╛рдИ JDK8 рд░ Maven рд░ рд░рд╛рдореНрд░реЛрд╕рдБрдЧ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░рд┐рдПрдХреЛ рд╡рд╛рддрд╛рд╡рд░рдгреАрдп рдЪрд░рд╣рд░реВ рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрджрдЫред рдПрдХрдЪреЛрдЯрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдпреА рд╕рдмреИ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реЗрдкрдЫрд┐, рддрдкрд╛рдИрдВ рд╣рд╛рдореНрд░реЛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдорд╛ тАЛтАЛрдХрд╛рдо рдЬрд╛рд░реА рд░рд╛рдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

тЦНрдПрдкреНрд▓рд┐рдХреЗрд╕рдирд▓рд╛рдИ рдЬрд╛рд░ рдлрд╛рдЗрд▓рдорд╛ рдкреНрдпрд╛рдХреЗрдЬ рдЧрд░реНрдиреЗ

рдиреЗрднрд┐рдЧреЗрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рдЯрд░реНрдорд┐рдирд▓ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░, рдлреЛрд▓реНрдбрд░рдорд╛ sa-webapp рд░ рдирд┐рдореНрди рдЖрджреЗрд╢ рдкреНрд░рд╡рд┐рд╖реНрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН:

mvn install

рдлреЛрд▓реНрдбрд░рдорд╛ рдпреЛ рдЖрджреЗрд╢ рдЪрд▓рд╛рдЙрди рдкрдЫрд┐ sa-webapp рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдЗрдиреЗрдЫ targetред рдпреЛ рдЬрд╣рд╛рдБ Java рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЕрд╡рд╕реНрдерд┐рдд рд╣реБрдиреЗрдЫ, рдЬрд╛рд░ рдлрд╛рдЗрд▓рдорд╛ рдкреНрдпрд╛рдХреЗрдЬ рдЧрд░рд┐рдПрдХреЛ рдЫ, рдлрд╛рдЗрд▓рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдЧрд░рд┐рдПрдХреЛ рдЫ sentiment-analysis-web-0.0.1-SNAPSHOT.jar.

тЦН Java рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЪрд▓рд╛рдЙрдБрджреИ

рдлреЛрд▓реНрдбрд░рдорд╛ рдЬрд╛рдиреБрд╣реЛрд╕реН target рд░ рдирд┐рдореНрди рдЖрджреЗрд╢ рд╕рдВрдЧ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН:

java -jar sentiment-analysis-web-0.0.1-SNAPSHOT.jar

рдпреЛ рдЖрджреЗрд╢ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрджрд╛ рддреНрд░реБрдЯрд┐ рджреЗрдЦрд╛ рдкрд░реНрдиреЗрдЫред рдпрд╕рд▓рд╛рдИ рдареАрдХ рдЧрд░реНрди рд╕реБрд░реБ рдЧрд░реНрди, рд╣рд╛рдореА рд╕реНрдЯреНрдпрд╛рдХ рдЯреНрд░реЗрд╕ рдбрд╛рдЯрд╛рдорд╛ рдЕрдкрд╡рд╛рдж рд╡рд┐рд╡рд░рдгрд╣рд░реВ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ:

Error creating bean with name 'sentimentController': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'sa.logic.api.url' in value "${sa.logic.api.url}"

рд╣рд╛рдореНрд░реЛ рд▓рд╛рдЧрд┐, рдпрд╣рд╛рдБ рд╕рдмреИрднрдиреНрджрд╛ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдХреБрд░рд╛ рдЕрд░реНрде рд╕реНрдкрд╖реНрдЯ рдЧрд░реНрди рдЕрд╕рдореНрднрд╡ рдХреЛ рдЙрд▓реНрд▓реЗрдЦ рдЫ sa.logic.api.urlред рдХреЛрдбрдХреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЧрд░реМрдВ рдЬрд╕рдорд╛ рддреНрд░реБрдЯрд┐ рд╣реБрдиреНрдЫред

тЦНрдЬрд╛рднрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдг

рдпрд╣рд╛рдБ рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рдЫ рдЬрд╣рд╛рдБ рддреНрд░реБрдЯрд┐ рд╣реБрдиреНрдЫред

@CrossOrigin(origins = "*")
@RestController
public class SentimentController {
    @Value("${sa.logic.api.url}")    // #1
    private String saLogicApiUrl;
    @PostMapping("/sentiment")
    public SentimentDto sentimentAnalysis(
        @RequestBody SentenceDto sentenceDto) 
    {
        RestTemplate restTemplate = new RestTemplate();
        return restTemplate.postForEntity(
                saLogicApiUrl + "/analyse/sentiment",    // #2
                sentenceDto, SentimentDto.class)
                .getBody();
    }
}

  1. рдорд╛ рдПрд╕entimentController рддреНрдпрд╣рд╛рдБ рдПрдХ рдХреНрд╖реЗрддреНрд░ рдЫ saLogicApiUrlред рдпрд╕рдХреЛ рдореВрд▓реНрдп рд╕рдореНрдкрддреНрддрд┐ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░рд┐рдПрдХреЛ рдЫ sa.logic.api.url.
  2. рд▓рд╛рдЗрди saLogicApiUrl рдореВрд▓реНрдп рд╕рдВрдЧ рдЬреЛрдбрд┐рдПрдХреЛ рдЫ /analyse/sentimentред рд╕рдБрдЧреИ рддрд┐рдиреАрд╣рд░реВрд▓реЗ рдкрд╛рда рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЧрд░реНрдиреЗ рдорд╛рдЗрдХреНрд░реЛ рд╕реЗрд╡рд╛рдорд╛ рдХрд▓ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдареЗрдЧрд╛рдирд╛ рдмрдирд╛рдЙрдБрдЫрдиреНред

тЦНрдПрдХ рд╕рдореНрдкрддреНрддрд┐ рдореВрд▓реНрдп рд╕реЗрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН

рд╡рд╕рдиреНрддрдорд╛, рд╕рдореНрдкрддреНрддрд┐ рдорд╛рдирд╣рд░реВрдХреЛ рдорд╛рдирдХ рд╕реНрд░реЛрдд рдлрд╛рдЗрд▓ рд╣реЛ application.properties, рдЬреБрди рдорд╛ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдХрд┐рдиреНрдЫ sa-webapp/src/main/resourcesред рддрд░ рдпрд╕рдХреЛ рдкреНрд░рдпреЛрдЧ рд╕рдореНрдкрддреНрддрд┐ рдорд╛рдирд╣рд░реВ рд╕реЗрдЯ рдЧрд░реНрдиреЗ рдПрдХ рдорд╛рддреНрд░ рддрд░рд┐рдХрд╛ рд╣реЛрдЗрдиред рдпреЛ рдирд┐рдореНрди рдЖрджреЗрд╢ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдкрдирд┐ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ:

java -jar sentiment-analysis-web-0.0.1-SNAPSHOT.jar --sa.logic.api.url=WHAT.IS.THE.SA.LOGIC.API.URL

рдпрд╕ рд╕рдореНрдкрддреНрддреАрдХреЛ рдореВрд▓реНрдпрд▓реЗ рд╣рд╛рдореНрд░реЛ рдкрд╛рдЗрдерди рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рдареЗрдЧрд╛рдирд╛рд▓рд╛рдИ рд╕рдВрдХреЗрдд рдЧрд░реНрдиреБрдкрд░реНрдЫред

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

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

java -jar sentiment-analysis-web-0.0.1-SNAPSHOT.jar --sa.logic.api.url=http://localhost:5000

Kubernetes рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рднрд╛рдЧ 1: рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ, рдорд╛рдЗрдХреНрд░реЛрд╕реЗрд╡рд╛рд╣рд░реВ, рд░ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ
рд╣рд╛рдореНрд░реЛ рдкреНрд░рдгрд╛рд▓реАрдорд╛ рдкрд╛рдЗрдерди рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЫреБрдЯреЗрдХреЛ рдЫ

рдЕрдм рд╣рд╛рдореАрд▓реЗ рдЧрд░реНрдиреБрдкрд░реНрдиреЗ рднрдиреЗрдХреЛ рдкрд╛рдЗрдерди рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЪрд▓рд╛рдЙрдиреБ рд╣реЛ рд░ рдкреНрд░рдгрд╛рд▓реАрд▓реЗ рдЕрдкреЗрдХреНрд╖рд┐рдд рд░реВрдкрдорд╛ рдХрд╛рдо рдЧрд░реНрдиреЗрдЫред

тЦНрдкрд╛рдЗрдерди рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реЗрдЯрдЕрдк рдЧрд░реНрджреИ

рдкрд╛рдЗрдерди рдПрдкреНрд▓рд┐рдХреЗрд╕рди рдЪрд▓рд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐, рддрдкрд╛рдЗрдБрд╕рдБрдЧ рдкрд╛рдЗрдерди 3 рд░ Pip рд╕реНрдерд╛рдкрд┐рдд рд╣реБрдиреБрдкрд░реНрдЫ, рд░ рдЙрдкрдпреБрдХреНрдд рд╡рд╛рддрд╛рд╡рд░рдг рдЪрд░рд╣рд░реВ рд╕рд╣реА рд░реВрдкрдорд╛ рд╕реЗрдЯ рд╣реБрдиреБрдкрд░реНрдЫред

тЦНрдирд┐рд░реНрднрд░рддрд╛рд╣рд░реВ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрджреИ

рдЖрдлреНрдиреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдлреЛрд▓реНрдбрд░рдорд╛ рдЬрд╛рдиреБрд╣реЛрд╕реН sa-logic/sa рд░ рдирд┐рдореНрди рдЖрджреЗрд╢рд╣рд░реВ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН:

python -m pip install -r requirements.txt
python -m textblob.download_corpora

тЦНрдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реБрд░реБ рдЧрд░реНрдиреБрд╣реЛрд╕реН

рдирд┐рд░реНрднрд░рддрд╛рд╣рд░реВ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реЗрдкрдЫрд┐, рд╣рд╛рдореА рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЪрд▓рд╛рдЙрди рддрдпрд╛рд░ рдЫреМрдВ:

python sentiment_analysis.py

рдпреЛ рдЖрджреЗрд╢ рдЪрд▓рд╛рдПрдкрдЫрд┐ рд╣рд╛рдореАрд▓рд╛рдИ рдирд┐рдореНрди рднрдирд┐рдиреЗрдЫ:

* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)

рдпрд╕рдХреЛ рдорддрд▓рдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдЫ рд░ рдЕрдиреБрд░реЛрдзрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдкрд░реНрдЦрд┐рд░рд╣реЗрдХреЛ рдЫ localhost:5000/

тЦНрдХреЛрдб рдЕрдиреБрд╕рдиреНрдзрд╛рди

рдкрд╛рдЗрдерди рдПрдкреНрд▓рд┐рдХреЗрд╕рди рдХреЛрдбрд▓рд╛рдИ рд╣реЗрд░реМрдВ рдпрд╕рд▓реЗ рдХрд╕рд░реА рдЕрдиреБрд░реЛрдзрд╣рд░реВрд▓рд╛рдИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджрд┐рдиреНрдЫ рднрдиреЗрд░ рдмреБрдЭреНрдирдХреЛ рд▓рд╛рдЧрд┐:

from textblob import TextBlob
from flask import Flask, request, jsonify
app = Flask(__name__)                                   #1
@app.route("/analyse/sentiment", methods=['POST'])      #2
def analyse_sentiment():
    sentence = request.get_json()['sentence']           #3
    polarity = TextBlob(sentence).sentences[0].polarity #4
    return jsonify(                                     #5
        sentence=sentence,
        polarity=polarity
    )
if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)                #6

  1. рд╡рд╕реНрддреБ рдкреНрд░рд╛рд░рдореНрдн рдЧрд░реНрджреИ Flask.
  2. POST рдЕрдиреБрд░реЛрдзрд╣рд░реВ рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдареЗрдЧрд╛рдирд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрджреИред
  3. рдПрдХ рд╕рдореНрдкрддреНрддрд┐ рдкреБрди: рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрджреИ sentence рдЕрдиреБрд░реЛрдз рдирд┐рдХрд╛рдпрдмрд╛рдЯред
  4. рдмреЗрдирд╛рдореА рд╡рд╕реНрддреБ рдкреНрд░рд╛рд░рдореНрдн рдЧрд░реНрджреИ TextBlob рд░ рдореВрд▓реНрдп рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрджреИ polarity рдЕрдиреБрд░реЛрдзрдХреЛ рдореБрдЦреНрдп рднрд╛рдЧрдорд╛ рдкреНрд░рд╛рдкреНрдд рднрдПрдХреЛ рдкрд╣рд┐рд▓реЛ рд╡рд╛рдХреНрдпрдХреЛ рд▓рд╛рдЧрд┐ (рд╣рд╛рдореНрд░реЛ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдпреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрдХреЛ рд▓рд╛рдЧрд┐ рдкрдард╛рдЗрдПрдХреЛ рдорд╛рддреНрд░ рд╡рд╛рдХреНрдп рд╣реЛ)ред
  5. рдЬрд╡рд╛рдл рдлрд░реНрдХрд╛рдЙрдБрджреИ рдЬрд╕рдХреЛ рд╢рд░реАрд░рдорд╛ рд╡рд╛рдХреНрдпрдХреЛ рдкрд╛рда рд░ рдпрд╕рдХреЛ рд▓рд╛рдЧрд┐ рдЧрдгрдирд╛ рдЧрд░рд┐рдПрдХреЛ рд╕реВрдЪрдХ рд╕рдорд╛рд╡реЗрд╢ рдЫ polarity.
  6. рдПрдЙрдЯрд╛ рдлреНрд▓рд╛рд╕реНрдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реБрд░реБ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рдЬреБрди рдорд╛ рдЙрдкрд▓рдмреНрдз рд╣реБрдиреЗрдЫ 0.0.0.0:5000 (рддрдкрд╛рдИрд▓реЗ рдлрд╛рд░рдордХреЛ рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдкрдирд┐ рдкрд╣реБрдБрдЪ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ localhost:5000).

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

Kubernetes рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рднрд╛рдЧ 1: рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ, рдорд╛рдЗрдХреНрд░реЛрд╕реЗрд╡рд╛рд╣рд░реВ, рд░ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ
рдПрдкреНрд▓рд┐рдХреЗрд╕рди рдмрдирд╛рдЙрдиреЗ рд╕рдмреИ рдорд╛рдЗрдХреНрд░реЛрд╕реЗрд╡рд╛рд╣рд░реВ рдХрд╛рд░реНрдп рдХреНрд░рдордорд╛ рд▓реНрдпрд╛рдЗрдиреНрдЫ

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

рдЕрд░реНрдХреЛ рдЦрдгреНрдбрдорд╛, рд╣рд╛рдореА рдбрдХрд░ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВрдорд╛ рд╣рд╛рдореНрд░реЛ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕реЗрд╕рд╣рд░реВ рдХрд╕рд░реА рдЪрд▓рд╛рдЙрдиреЗ рднрдиреНрдиреЗ рдмрд╛рд░реЗ рдХреБрд░рд╛ рдЧрд░реНрдиреЗрдЫреМрдВред Kubernetes рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рдЪрд▓рд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рддрдпрд╛рд░ рдЧрд░реНрди рдпреЛ рдЖрд╡рд╢реНрдпрдХ рдЫред

рдбрдХрд░ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ

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

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

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

рдХрдиреНрдЯреЗрдирд░рдХрд╛ рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рдЕрдиреНрд╡реЗрд╖рдг рдЧрд░реНрди рд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рдЪрд▓рд╛рдЙрдиреЗ рдЕрдиреНрдп рддрд░рд┐рдХрд╛рд╣рд░реВрд╕рдБрдЧ рддреБрд▓рдирд╛ рдЧрд░реНрди, рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рди рд░ рдХрдиреНрдЯреЗрдирд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реЗрд╡рд╛ рдЧрд░реНрдиреЗ рдЙрджрд╛рд╣рд░рдг рд╣реЗрд░реМрдВред

тЦН рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рди рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рд╕реНрдерд┐рд░ рдлрд╛рдЗрд▓рд╣рд░реВ рд╕реЗрд╡рд╛ рдЧрд░реНрджреИ

рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рдирд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕реНрдерд┐рд░ рдлрд╛рдЗрд▓рд╣рд░реВрдХреЛ рд╕реЗрд╡рд╛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдЧрд░реНрди рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрджреИ, рд╣рд╛рдореА рдирд┐рдореНрди рдмреЗрдлрд╛рдЗрджрд╛рд╣рд░реВ рд╕рд╛рдордирд╛ рдЧрд░реНрдиреЗрдЫреМрдВ:

  1. рд╕реНрд░реЛрддрд╣рд░реВрдХреЛ рдЕрдХреБрд╢рд▓ рдкреНрд░рдпреЛрдЧ, рдХрд┐рдирдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рди рдПрдХ рдкреВрд░реНрдг рдЕрдкрд░реЗрдЯрд┐рдЩ рд╕рд┐рд╕реНрдЯрдо рд╣реЛред
  2. рдкреНрд▓реЗрдЯрдлрд░реНрдо рдирд┐рд░реНрднрд░рддрд╛ред рд╕реНрдерд╛рдиреАрдп рдХрдореНрдкреНрдпреБрдЯрд░рдорд╛ рдХрд╛рдо рдЧрд░реНрдиреЗ рдХреБрд░рд╛ рдЙрддреНрдкрд╛рджрди рд╕рд░реНрднрд░рдорд╛ рдХрд╛рдо рдирдЧрд░реНрди рд╕рдХреНрдЫред
  3. рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рди-рдЖрдзрд╛рд░рд┐рдд рд╕рдорд╛рдзрд╛рдирдХреЛ рдврд┐рд▓реЛ рд░ рд╕рдВрд╕рд╛рдзрди-рдЧрд╣рди рд╕реНрдХреЗрд▓рд┐рдВрдЧред

Kubernetes рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рднрд╛рдЧ 1: рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ, рдорд╛рдЗрдХреНрд░реЛрд╕реЗрд╡рд╛рд╣рд░реВ, рд░ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ
Nginx рд╡реЗрдм рд╕рд░реНрднрд░ рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рдирдорд╛ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рд╕реНрдерд┐рд░ рдлрд╛рдЗрд▓рд╣рд░реВ рд╕реЗрд╡рд╛ рдЧрд░реНрджреИ

рдпрджрд┐ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ рднрдиреЗ, рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рдирд╣рд░реВрдХреЛ рддреБрд▓рдирд╛рдорд╛, рдирд┐рдореНрди рд╢рдХреНрддрд┐рд╣рд░реВ рдиреЛрдЯ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ:

  1. рд╕реНрд░реЛрддрд╣рд░реВрдХреЛ рдХреБрд╢рд▓ рдкреНрд░рдпреЛрдЧ: рдбрдХрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдЕрдкрд░реЗрдЯрд┐рдЩ рд╕рд┐рд╕реНрдЯрдорд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрджреИред
  2. рдкреНрд▓реЗрдЯрдлрд░реНрдо рд╕реНрд╡рддрдиреНрддреНрд░ред рдПрдХ рдХрдиреНрдЯреЗрдирд░ рдЬреБрди рдПрдХ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд▓реЗ рдЖрдлреНрдиреЛ рдХрдореНрдкреНрдпреБрдЯрд░рдорд╛ рдЪрд▓рд╛рдЙрди рд╕рдХреНрдЫ рдЬрд╣рд╛рдБ рдкрдирд┐ рдХрд╛рдо рдЧрд░реНрдиреЗрдЫред
  3. рдЫрд╡рд┐ рддрд╣рд╣рд░реВрдХреЛ рдкреНрд░рдпреЛрдЧ рдорд╛рд░реНрдлрдд рд╣рд▓реНрдХрд╛ рддреИрдирд╛рдеред

Kubernetes рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рднрд╛рдЧ 1: рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ, рдорд╛рдЗрдХреНрд░реЛрд╕реЗрд╡рд╛рд╣рд░реВ, рд░ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ
рдХрдиреНрдЯреЗрдирд░рдорд╛ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рд╕реНрдерд┐рд░ рдлрд╛рдЗрд▓рд╣рд░реВ рд╕реЗрд╡рд╛ рдЧрд░реНрдиреЗ Nginx рд╡реЗрдм рд╕рд░реНрднрд░

рд╣рд╛рдореАрд▓реЗ рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╢рд┐рдирд╣рд░реВ рд░ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ рдХреЗрд╣реА рдмрд┐рдиреНрджреБрд╣рд░реВрдорд╛ рдорд╛рддреНрд░ рддреБрд▓рдирд╛ рдЧрд░реЗрдХрд╛ рдЫреМрдВ, рддрд░ рдпреЛ рдкрдирд┐ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВрдХреЛ рд╢рдХреНрддрд┐рдХреЛ рд▓рд╛рдЧрд┐ рдорд╣рд╕реБрд╕ рдЧрд░реНрди рдкрд░реНрдпрд╛рдкреНрдд рдЫред рдпреЛ рдЫ рддрдкрд╛рдИрдВрд▓реЗ рдбрдХрд░ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛ рд╡рд┐рд╡рд░рдгрд╣рд░реВ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

тЦН рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рд▓рд╛рдЧрд┐ рдХрдиреНрдЯреЗрдирд░ рдЫрд╡рд┐ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрджреИ

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

рд╣рд╛рдореАрд▓реЗ рдлрд╛рдЗрд▓рд╕рдБрдЧ рдХрд╛рдо рд╕реБрд░реБ рдЧрд░реНрдиреБ рдЕрдШрд┐ DockerfileNginx рд╕рд░реНрднрд░рдорд╛ рдЕрдкрд▓реЛрдб рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдлрд╛рдЗрд▓рд╣рд░реВ рддрдпрд╛рд░ рдЧрд░реНрди рд╣рд╛рдореАрд▓реЗ рдХреЗ рдЧрд░реНрдпреМрдВ рд╕рдореНрдЭреМрдВ:

  1. рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЖрд╡реЗрджрди рдкреНрдпрд╛рдХреЗрдЬ рдирд┐рд░реНрдорд╛рдг (npm run build).
  2. Nginx рд╕рд░реНрднрд░ рд╕реБрд░реБ рдЧрд░реНрджреИред
  3. рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕рд╛рдордЧреНрд░реАрд╣рд░реВ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реНрджреИ build рдкрд░рд┐рдпреЛрдЬрдирд╛ рдлреЛрд▓реНрдбрд░рдмрд╛рдЯ sa-frontend рд╕рд░реНрднрд░ рдлреЛрд▓реНрдбрд░рдорд╛ nginx/html.

рддрд▓ рддрдкрд╛рдЗрдБ рдХрдиреНрдЯреЗрдирд░ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд░ рддрдкрд╛рдЗрдБрдХреЛ рд╕реНрдерд╛рдиреАрдп рдХрдореНрдкреНрдпреБрдЯрд░рдорд╛ рдкреНрд░рджрд░реНрд╢рди рдЧрд░рд┐рдПрдХрд╛ рдорд╛рдерд┐рдХрд╛ рдЪрд░рдгрд╣рд░реВ рдмреАрдЪ рд╕рдорд╛рдирд╛рдиреНрддрд░рд╣рд░реВ рджреЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

тЦН SA-Frontend рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рд▓рд╛рдЧрд┐ Dockerfile рддрдпрд╛рд░реА рдЧрд░реНрджреИ

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

  1. рдЫрд╡рд┐рдХреЛ рдЖрдзрд╛рд░ Nginx рдЫрд╡рд┐ рд╣реБрдиреБрдкрд░реНрдЫред
  2. рдлреЛрд▓реНрдбрд░ рд╕рд╛рдордЧреНрд░реА sa-frontend/build рдЫрд╡рд┐ рдлреЛрд▓реНрдбрд░рдорд╛ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ nginx/html.

рдпрджрд┐ рддрдкрд╛рдЗрдБ рдпрд╕ рд╡рд┐рд╡рд░рдгрдмрд╛рдЯ рдлрд╛рдЗрд▓рдорд╛ рдЬрд╛рдиреБрд╣реБрдиреНрдЫ рднрдиреЗ Dockerfile, рддреНрдпрд╕рдкрдЫрд┐ рдпреЛ рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреЗрдЫ:

FROM nginx
COPY build /usr/share/nginx/html

рддрдкрд╛рдИрд▓реЗ рджреЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреЗ рд░реВрдкрдорд╛, рдпрд╣рд╛рдБ рд╕рдмреИ рдХреБрд░рд╛ рдзреЗрд░реИ рд╕рд░рд▓ рдЫ, рд░ рдлрд╛рдИрд▓рдХреЛ рд╕рд╛рдордЧреНрд░реАрд╣рд░реВ рдкрдирд┐ рдкрдвреНрди рдпреЛрдЧреНрдп рд░ рдмреБрдЭреНрди рдпреЛрдЧреНрдп рд╣реБрдиреНрдЫрдиреНред рдпреЛ рдлрд╛рдЗрд▓рд▓реЗ рдкреНрд░рдгрд╛рд▓реАрд▓рд╛рдИ рдЫрд╡рд┐ рд▓рд┐рди рдмрддрд╛рдЙрдБрдЫ nginx рдпрд╕рдорд╛ рдкрд╣рд┐рд▓реЗ рдиреИ рд░рд╣реЗрдХреЛ рд╕рдмреИ рдХреБрд░рд╛рдХреЛ рд╕рд╛рде, рд░ рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реАрдХреЛ рд╕рд╛рдордЧреНрд░реА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реНрдиреБрд╣реЛрд╕реН build рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдорд╛ nginx/html.

рдпрд╣рд╛рдБ рддрдкрд╛рдИрд╕рдБрдЧ рдПрдЙрдЯрд╛ рдкреНрд░рд╢реНрди рд╣реБрди рд╕рдХреНрдЫ рдорд▓рд╛рдИ рдХрд╕рд░реА рдерд╛рд╣рд╛ рдЫ рддрдкрд╛рдИрд▓реЗ рдлреЛрд▓реНрдбрд░рдмрд╛рдЯ рдлрд╛рдЗрд▓рд╣рд░реВ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ build, рддреНрдпреЛ рд╣реЛ, рдЬрд╣рд╛рдБрдмрд╛рдЯ рдмрд╛рдЯреЛ рдЖрдпреЛ /usr/share/nginx/htmlред рд╡рд╛рд╕реНрддрд╡рдорд╛, рдпрд╣рд╛рдБ рдХреЗрд╣рд┐ рдкрдирд┐ рдЬрдЯрд┐рд▓ рдЫреИрдиред рддрдереНрдп рдпреЛ рд╣реЛ рдХрд┐ рд╕рд╛рдиреНрджрд░реНрднрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдкрд╛рдЙрди рд╕рдХрд┐рдиреНрдЫ рд╡рд┐рд╡рд░рдг рдЫрд╡рд┐ред

тЦН рдЫрд╡рд┐ рдирд┐рд░реНрдорд╛рдг рдЧрд░реА рднрдгреНрдбрд╛рд░рдорд╛ рдЕрдкрд▓реЛрдб рдЧрд░реНрджреИ

рд╣рд╛рдореАрд▓реЗ рд╕рдорд╛рдкреНрдд рдЫрд╡рд┐рд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрди рд╕рдХреНрдиреБ рдЕрдШрд┐, рд╣рд╛рдореАрд▓реЗ рдпрд╕рд▓рд╛рдИ рдЫрд╡рд┐ рднрдгреНрдбрд╛рд░рдорд╛ рдкреБрд╢ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред рдпреЛ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, рд╣рд╛рдореА рдирд┐: рд╢реБрд▓реНрдХ рдХреНрд▓рд╛рдЙрдб рдЫрд╡рд┐ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдкреНрд▓реЗрдЯрдлрд░реНрдо рдбрдХрд░ рд╣рдм рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗрдЫреМрдВред рдХрд╛рдордХреЛ рдпрд╕ рдЪрд░рдгрдорд╛ рддрдкрд╛рдИрдВрд▓реЗ рдирд┐рдореНрди рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ:

  1. рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН рдбрдХрд░.
  2. рдбрдХрд░ рд╣рдм рд╡реЗрдмрд╕рд╛рдЗрдЯрдорд╛ рджрд░реНрддрд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реНред
  3. рдЯрд░реНрдорд┐рдирд▓рдорд╛ рдирд┐рдореНрди рдЖрджреЗрд╢ рдЪрд▓рд╛рдПрд░ рдЖрдлреНрдиреЛ рдЦрд╛рддрд╛рдорд╛ рд▓рдЧ рдЗрди рдЧрд░реНрдиреБрд╣реЛрд╕реН:
    docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD"

рдЕрдм рддрдкрд╛рдИрд▓реЗ рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реАрдорд╛ рдЬрд╛рди рдЯрд░реНрдорд┐рдирд▓ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ sa-frontend рд░ рддреНрдпрд╣рд╛рдБ рдирд┐рдореНрди рдЖрджреЗрд╢ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН:

docker build -f Dockerfile -t $DOCKER_USER_ID/sentiment-analysis-frontend .

рдпрд╣рд╛рдБ рд░ рдЕрдЧрд╛рдбрд┐ рд╕рдорд╛рди рдЖрджреЗрд╢рд╣рд░реВрдорд╛ $DOCKER_USER_ID рддрдкрд╛рдЗрдБрдХреЛ рдбрдХрд░ рд╣рдм рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рд╕рдВрдЧ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЧрд░реНрдиреБрдкрд░реНрдЫред рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреА, рдЖрджреЗрд╢ рдХреЛ рдпреЛ рднрд╛рдЧ рдпрд╕реНрддреЛ рджреЗрдЦрд┐рди рд╕рдХреНрдЫ: rinormaloku/sentiment-analysis-frontend.

рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдпреЛ рдЖрджреЗрд╢ рдпрд╕рд▓рд╛рдИ рд╣рдЯрд╛рдПрд░ рдЫреЛрдЯреЛ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ -f Dockerfile, рдХрд┐рдирдХрд┐ рдпреЛ рдлрд╛рдЗрд▓ рдлреЛрд▓реНрдбрд░рдорд╛ рдкрд╣рд┐рд▓реЗ рдиреИ рдЕрд╡рд╕реНрдерд┐рдд рдЫ рдЬрд╕рдорд╛ рд╣рд╛рдореАрд▓реЗ рдпреЛ рдЖрджреЗрд╢ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрджреИрдЫреМрдВред

рд╕рдорд╛рдкреНрдд рдЫрд╡рд┐ рднрдгреНрдбрд╛рд░рдорд╛ рдкрдард╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐, рд╣рд╛рдореАрд▓рд╛рдИ рдирд┐рдореНрди рдЖрджреЗрд╢ рдЪрд╛рд╣рд┐рдиреНрдЫ:

docker push $DOCKER_USER_ID/sentiment-analysis-frontend

рдпрд╕рд▓рд╛рдИ рдкреВрд░рд╛ рдЧрд░реЗрдкрдЫрд┐, рдХреНрд▓рд╛рдЙрдб рднрдгреНрдбрд╛рд░рдгрдорд╛ рдЫрд╡рд┐рдХреЛ рдЕрдкрд▓реЛрдб рд╕рдлрд▓ рднрдпреЛ рдХрд┐ рднрдиреЗрд░ рдмреБрдЭреНрдирдХреЛ рд▓рд╛рдЧрд┐ рдбрдХрд░ рд╣рдмрдорд╛ рддрдкрд╛рдИрдВрдХреЛ рднрдгреНрдбрд╛рд░рд╣рд░реВрдХреЛ рд╕реВрдЪреА рдЬрд╛рдБрдЪ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

тЦН рдХрдиреНрдЯреЗрдирд░ рдЪрд▓рд╛рдЙрдБрджреИ

рдЕрдм рдЬреЛ рдХреЛрд╣реАрд▓реЗ рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░реНрди рд░ рдЫрд╡рд┐ рдЪрд▓рд╛рдЙрди рд╕рдХреНрдЫ, рдХреЛ рд░реВрдкрдорд╛ рдЪрд┐рдирд┐рдиреНрдЫ $DOCKER_USER_ID/sentiment-analysis-frontendред рдпреЛ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, рддрдкрд╛рдИрдВрд▓реЗ рдЖрджреЗрд╢рд╣рд░реВрдХреЛ рдирд┐рдореНрди рдЕрдиреБрдХреНрд░рдо рдЪрд▓рд╛рдЙрди рдЖрд╡рд╢реНрдпрдХ рдЫ:

docker pull $DOCKER_USER_ID/sentiment-analysis-frontend
docker run -d -p 80:80 $DOCKER_USER_ID/sentiment-analysis-frontend

рдЕрдм рдХрдиреНрдЯреЗрдирд░ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдЫ, рд╣рд╛рдореА рд╣рд╛рдореАрд▓рд╛рдИ рдЖрд╡рд╢реНрдпрдХ рдЕрдиреНрдп рдЫрд╡рд┐рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реЗрд░ рдХрд╛рдо рдЬрд╛рд░реА рд░рд╛рдЦреНрди рд╕рдХреНрдЫреМрдВред рддрд░ рд╣рд╛рдореАрд▓реЗ рдЬрд╛рд░реА рд░рд╛рдЦреНрдиреБ рдЕрдШрд┐, рдбрд┐рдЬрд╛рдЗрди рдмреБрдЭреМрдВ 80:80, рдЬреБрди рдЫрд╡рд┐ рдкреНрд░рдХреНрд╖реЗрдкрдг рдЖрджреЗрд╢рдорд╛ рджреЗрдЦрд╛ рдкрд░реНрджрдЫ рд░ рднреНрд░рдорд┐рдд рд▓рд╛рдЧреНрди рд╕рдХреНрдЫред

  • рдкрд╣рд┐рд▓реЛ рдирдореНрдмрд░ 80 тАФ рдпреЛ рд╣реЛрд╕реНрдЯ рдкреЛрд░реНрдЯ рдирдореНрдмрд░ рд╣реЛ (рдпреЛ, рд╕реНрдерд╛рдиреАрдп рдХрдореНрдкреНрдпреБрдЯрд░)ред
  • рджреЛрд╕реНрд░реЛ рдирдореНрдмрд░ 80 рдХрдиреНрдЯреЗрдирд░рдХреЛ рдкреЛрд░реНрдЯ рд╣реЛ рдЬрд╕рдорд╛ рдЕрдиреБрд░реЛрдз рдлрд░реНрд╡рд╛рд░реНрдб рдЧрд░реНрдиреБрдкрд░реНрдЫред

рдирд┐рдореНрди рджреГрд╖реНрдЯрд╛рдиреНрддрд▓рд╛рдИ рд╡рд┐рдЪрд╛рд░ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

Kubernetes рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рднрд╛рдЧ 1: рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ, рдорд╛рдЗрдХреНрд░реЛрд╕реЗрд╡рд╛рд╣рд░реВ, рд░ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ
рдкреЛрд░реНрдЯ рдлрд░реНрд╡рд╛рд░реНрдбрд┐рдЩ

рдкреНрд░рдгрд╛рд▓реАрд▓реЗ рдкреЛрд░реНрдЯрдмрд╛рдЯ рдЕрдиреБрд░реЛрдзрд╣рд░реВ рдкреБрди: рдирд┐рд░реНрджреЗрд╢рд┐рдд рдЧрд░реНрджрдЫ <hostPort> рдкреЛрд░реНрдЯрдорд╛ <containerPort>ред рддреНрдпреЛ рд╣реЛ, рдкреЛрд░реНрдЯ рдкрд╣реБрдБрдЪ 80 рдХрдореНрдкреНрдпреБрдЯрд░ рдкреЛрд░реНрдЯрдорд╛ рд░рд┐рдбрд┐рд░реЗрдХреНрдЯ рдЧрд░рд┐рдПрдХреЛ рдЫ 80 рдХрдиреНрдЯреЗрдирд░ред

рдмрдиреНрджрд░рдЧрд╛рд╣рджреЗрдЦрд┐ 80 рд╕реНрдерд╛рдиреАрдп рдХрдореНрдкреНрдпреБрдЯрд░рдорд╛ рдЦреЛрд▓рд┐рдПрдХреЛ рдЫ, рддреНрдпрд╕рдкрдЫрд┐ рддрдкрд╛рдЗрдБ рдпрд╕ рдХрдореНрдкреНрдпреБрдЯрд░рдмрд╛рдЯ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкрд╣реБрдБрдЪ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ localhost:80ред рдпрджрд┐ рддрдкрд╛рдИрдВрдХреЛ рдкреНрд░рдгрд╛рд▓реАрд▓реЗ рдбрдХрд░рд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрджреИрди рднрдиреЗ, рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдбрдХрд░ рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рдирдорд╛ рдЪрд▓рд╛рдЙрди рд╕рдХрд┐рдиреНрдЫ, рдЬрд╕рдХреЛ рдареЗрдЧрд╛рдирд╛ рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ <docker-machine ip>:80ред рдбрдХрд░ рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рдирдХреЛ рдЖрдИрдкреА рдареЗрдЧрд╛рдирд╛ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрди, рддрдкрд╛рдЗрдБ рдЖрджреЗрд╢ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ docker-machine ip.

рдпрд╕ рдмрд┐рдиреНрджреБрдорд╛, рдлреНрд░рдиреНрдЯ-рдПрдиреНрдб рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХрдиреНрдЯреЗрдирд░ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕реБрд░реБ рдЧрд░реЗрдкрдЫрд┐, рддрдкрд╛рдИрдВрд▓реЗ рдмреНрд░рд╛рдЙрдЬрд░рдорд╛ рдпрд╕рдХреЛ рдкреГрд╖реНрда рдЦреЛрд▓реНрди рд╕рдХреНрд╖рдо рд╣реБрдиреБрдкрд░реНрджрдЫред

тЦН .dockerignore рдлрд╛рдЗрд▓

рдПрдЙрдЯрд╛ рдЖрд╡реЗрджрди рдЫрд╡рд┐ рд╕рдЩреНрдХрд▓рди SA-Frontend, рд╣рд╛рдореАрд▓реЗ рдпреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЕрддреНрдпрдиреНрддреИ рдврд┐рд▓реЛ рднрдПрдХреЛ рджреЗрдЦреНрди рд╕рдХреНрдЫреМрдВред рдпреЛ рд╣реБрдиреНрдЫ рдХрд┐рдирднрдиреЗ рдЫрд╡рд┐ рдирд┐рд░реНрдорд╛рдг рд╕рдиреНрджрд░реНрдн рдбрдХрд░ рдбреЗрдордирдорд╛ рдкрдард╛рдЗрдиреБрдкрд░реНрдЫред рдирд┐рд░реНрдорд╛рдг рд╕рдиреНрджрд░реНрдн рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдЧрд░реНрдиреЗ рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реА рдЖрджреЗрд╢рдХреЛ рдЕрдиреНрддрд┐рдо рддрд░реНрдХрдХреЛ рд░реВрдкрдорд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░рд┐рдПрдХреЛ рдЫ docker buildред рд╣рд╛рдореНрд░реЛ рдорд╛рдорд▓рд╛ рдорд╛, рдпреЛ рдЖрджреЗрд╢ рдХреЛ рдЕрдиреНрдд рдорд╛ рдПрдХ рдмрд┐рдиреНрджреБ рдЫред рдпрд╕рд▓реЗ рдирд┐рдореНрди рд╕рдВрд░рдЪрдирд╛рд▓рд╛рдИ рдирд┐рд░реНрдорд╛рдг рд╕рдиреНрджрд░реНрднрдорд╛ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░рд╛рдЙрдБрдЫ:

sa-frontend:
|   .dockerignore
|   Dockerfile
|   package.json
|   README.md
+---build
+---node_modules
+---public
---src

рддрд░ рдпрд╣рд╛рдБ рдЙрдкрд╕реНрдерд┐рдд рд╕рдмреИ рдлреЛрд▓реНрдбрд░рд╣рд░реВ, рд╣рд╛рдореАрд▓рд╛рдИ рдХреЗрд╡рд▓ рдлреЛрд▓реНрдбрд░ рдЪрд╛рд╣рд┐рдиреНрдЫ buildред рдЕрд░реБ рдХреЗрд╣рд┐ рд▓реЛрдб рдЧрд░реНрдиреБ рднрдиреЗрдХреЛ рд╕рдордпрдХреЛ рдмрд░реНрдмрд╛рджреА рд╣реЛред рддрдкрд╛рдИрдВрд▓реЗ рдбрдХрд░рд▓рд╛рдИ рдХреБрди рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реАрд╣рд░реВ рдмреЗрд╡рд╛рд╕реНрддрд╛ рдЧрд░реНрдиреЗ рднрдиреЗрд░ рдмрддрд╛рдИ рдирд┐рд░реНрдорд╛рдгрдХреЛ рдЧрддрд┐ рдмрдврд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдпреЛ рдЧрд░реНрди рдХреЛ рд▓рд╛рдЧреА рд╣рд╛рдореАрд▓рд╛рдИ рдлрд╛рдЗрд▓ рдЪрд╛рд╣рд┐рдиреНрдЫ .dockerignoreред рдпрджрд┐ рддрдкрд╛рдЗрдБ рдлрд╛рдЗрд▓рд╕рдБрдЧ рдкрд░рд┐рдЪрд┐рдд рд╣реБрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ .gitignore, рдпреЛ рдлрд╛рдЗрд▓рдХреЛ рд╕рдВрд░рдЪрдирд╛ рд╕рд╛рдпрдж рдкрд░рд┐рдЪрд┐рдд рджреЗрдЦрд┐рдиреНрдЫред рдпрд╕рд▓реЗ рдЫрд╡рд┐ рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдгрд╛рд▓реАрд▓реЗ рдмреЗрд╡рд╛рд╕реНрддрд╛ рдЧрд░реНрди рд╕рдХреНрдиреЗ рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реАрд╣рд░реВ рд╕реВрдЪреАрдмрджреНрдз рдЧрд░реНрджрдЫред рд╣рд╛рдореНрд░реЛ рдорд╛рдорд▓рд╛ рдорд╛, рдпреЛ рдлрд╛рдЗрд▓ рдХреЛ рд╕рд╛рдорд╛рдЧреНрд░реА рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ:

node_modules
src
public

рдлрд╛рдЗрд▓ .dockerignore рдлрд╛рдЗрд▓рдХреЛ рд░реВрдкрдорд╛ рдПрдЙрдЯреИ рдлреЛрд▓реНрдбрд░рдорд╛ рд╣реБрдиреБрдкрд░реНрдЫ Dockerfileред рдЕрдм рдЫрд╡рд┐ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрди рд╕реЗрдХреЗрдиреНрдбрдХреЛ рдХреБрд░рд╛ рд╣реБрдиреЗрдЫред

рдЕрдм рдЬрд╛рднрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рд▓рд╛рдЧрд┐ рдЫрд╡рд┐рдорд╛ рдХрд╛рдо рдЧрд░реМрдВред

тЦН Java рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рд▓рд╛рдЧрд┐ рдХрдиреНрдЯреЗрдирд░ рдЫрд╡рд┐ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрджреИ

рддрдкрд╛рдИрдВрд▓рд╛рдИ рдерд╛рд╣рд╛ рдЫ, рддрдкрд╛рдИрдВрд▓реЗ рдХрдиреНрдЯреЗрдирд░ рдЫрд╡рд┐рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдЬрд╛рдиреНрди рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрдиреЗ рд╕рдмреИ рдХреБрд░рд╛рд╣рд░реВ рдкрд╣рд┐рд▓реЗ рдиреИ рд╕рд┐рдХреЗрдХрд╛ рдЫрдиреНред рддреНрдпрд╕реИрд▓реЗ рдпреЛ рдЦрдгреНрдб рдзреЗрд░реИ рдЫреЛрдЯреЛ рд╣реБрдиреЗрдЫред

рдлрд╛рдЗрд▓ рдЦреЛрд▓реНрдиреБрд╣реЛрд╕реН DockerfileрдЬреБрди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдлреЛрд▓реНрдбрд░рдорд╛ рдЫ sa-webappред рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдпреЛ рдлрд╛рдЗрд▓рдХреЛ рдкрд╛рда рдкрдвреНрдиреБрднрдпреЛ рднрдиреЗ, рддрдкрд╛рдИрдВрд▓реЗ рдпрд╕рдорд╛ рджреБрдИрд╡рдЯрд╛ рдирдпрд╛рдБ рдирд┐рд░реНрдорд╛рдгрд╣рд░реВ рдорд╛рддреНрд░ рджреЗрдЦреНрдиреБрд╣реБрдиреЗрдЫ, рдХреБрдЮреНрдЬреА рд╢рдмреНрджрд╣рд░реВрдмрд╛рдЯ рд╕реБрд░реБ рд╣реБрдБрджреИ ENV ╨╕ EXPOSE:

ENV SA_LOGIC_API_URL http://localhost:5000
тАж
EXPOSE 8080

рдХреАрд╡рд░реНрдб ENV рддрдкрд╛рдИрдВрд▓рд╛рдИ рдбрдХрд░ рдХрдиреНрдЯреЗрдирд░ рднрд┐рддреНрд░ рд╡рд╛рддрд╛рд╡рд░рдг рдЪрд░ рдШреЛрд╖рдгрд╛ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рд╡рд┐рд╢реЗрд╖ рдЧрд░реА, рд╣рд╛рдореНрд░реЛ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдпрд╕рд▓реЗ рддрдкрд╛рдЗрдБрд▓рд╛рдИ рдкрд╛рда рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЧрд░реНрдиреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ API рдкрд╣реБрдБрдЪ рдЧрд░реНрди URL рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред

рдХреАрд╡рд░реНрдб EXPOSE рддрдкрд╛рдИрдВрд▓рд╛рдИ рдбрдХрд░рд▓рд╛рдИ рдкреЛрд░реНрдЯ рдЦреЛрд▓реНрди рднрдиреНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рд╣рд╛рдореА рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЪрд▓рд╛рдЙрдБрджрд╛ рдпреЛ рдкреЛрд░реНрдЯ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдЬрд╛рдБрджреИрдЫреМрдВред рдпрд╣рд╛рдБ рддрдкрд╛рдИрдВрд▓реЗ рддреНрдпреЛ рдиреЛрдЯрд┐рд╕ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ Dockerfile рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рд▓рд╛рдЧрд┐ SA-Frontend рддреНрдпрд╕реНрддреЛ рдХреБрдиреИ рдЖрджреЗрд╢ рдЫреИрдиред рдпреЛ рдХреЗрд╡рд▓ рдХрд╛рдЧрдЬрд╛рдд рдЙрджреНрджреЗрд╢реНрдпрдХрд╛ рд▓рд╛рдЧрд┐ рд╣реЛ, рдЕрд░реНрдХреЛ рд╢рдмреНрджрдорд╛, рдпреЛ рдирд┐рд░реНрдорд╛рдг рдкрдвреНрдиреЗ рд╡реНрдпрдХреНрддрд┐рдХреЛ рд▓рд╛рдЧрд┐ рд╣реЛ Dockerfile.

рдЫрд╡рд┐ рдирд┐рд░реНрдорд╛рдг рдЧрд░реА рднрдгреНрдбрд╛рд░рдорд╛ рдкреБрд╢ рдЧрд░реНрдиреБ рдЕрдШрд┐рд▓реНрд▓реЛ рдЙрджрд╛рд╣рд░рдгрдорд╛ рдЬрд╕реНрддреИ рджреЗрдЦрд┐рдиреНрдЫред рдпрджрд┐ рддрдкрд╛рдИрдВ рдЕрдЭреИ рдЖрдлреНрдиреЛ рдХреНрд╖рдорддрд╛рд╣рд░реВрдорд╛ рдзреЗрд░реИ рд╡рд┐рд╢реНрд╡рд╕реНрдд рд╣реБрдиреБрд╣реБрдиреНрди рднрдиреЗ, рд╕рдореНрдмрдиреНрдзрд┐рдд рдЖрджреЗрд╢рд╣рд░реВ рдлрд╛рдЗрд▓рдорд╛ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдХрд┐рдиреНрдЫред README.md рдлреЛрд▓реНрдбрд░рдорд╛ sa-webapp.

тЦНрдкрд╛рдЗрдерди рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рд▓рд╛рдЧрд┐ рдХрдиреНрдЯреЗрдирд░ рдЫрд╡рд┐ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрджреИ

рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдлрд╛рдЗрд▓рдХреЛ рд╕рд╛рдордЧреНрд░реАрд╣рд░реВ рд╣реЗрд░реНрдиреБрднрдпреЛ рднрдиреЗ Dockerfile рдлреЛрд▓реНрдбрд░рдорд╛ sa-logic, рддрдм рддрдкрд╛рдИрд▓реЗ рддреНрдпрд╣рд╛рдБ рдЖрдлреНрдиреЛ рд▓рд╛рдЧрд┐ рдХреЗрд╣рд┐ рдирдпрд╛рдБ рдлреЗрд▓рд╛ рдкрд╛рд░реНрдиреБрд╣реБрдиреЗрдЫреИрдиред рдЫрд╡рд┐ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрди рд░ рднрдгреНрдбрд╛рд░рдорд╛ рдкрдард╛рдЙрдиреЗ рдЖрджреЗрд╢рд╣рд░реВ рдкрдирд┐ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдкрд╣рд┐рд▓реЗ рдиреИ рдкрд░рд┐рдЪрд┐рдд рд╣реБрдиреБрдкрд░реНрдЫ, рддрд░, рд╣рд╛рдореНрд░реЛ рдЕрдиреНрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рдЬрд╕реНрддреИ, рддрд┐рдиреАрд╣рд░реВ рдлрд╛рдЗрд▓рдорд╛ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдХрд┐рдиреНрдЫред README.md рдлреЛрд▓реНрдбрд░рдорд╛ sa-logic.

тЦН рдХрдиреНрдЯреЗрдирд░рдХреГрдд рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рдкрд░реАрдХреНрд╖рдг рдЧрд░реНрджреИ

рдХреЗ рддрдкрд╛рдИрдВрд▓реЗ рдкрд░реАрдХреНрд╖рдг рдирдЧрд░реЗрдХреЛ рдХреБрд░рд╛рдорд╛ рднрд░реЛрд╕рд╛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ? рдо рдкрдирд┐ рд╕рдХреНрджрд┐рди ред рд╣рд╛рдореНрд░реЛ рдХрдиреНрдЯреЗрдирд░ рдкрд░реАрдХреНрд╖рдг рдЧрд░реМрдВред

  1. рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХрдиреНрдЯреЗрдирд░ рд╕реБрд░реБ рдЧрд░реМрдВ sa-logic рд░ рдпрд╕рд▓рд╛рдИ рдкреЛрд░реНрдЯрдорд╛ рд╕реБрдиреНрди рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрдиреБрд╣реЛрд╕реН 5050:
    docker run -d -p 5050:5000 $DOCKER_USER_ID/sentiment-analysis-logic
  2. рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХрдиреНрдЯреЗрдирд░ рд╕реБрд░реБ рдЧрд░реМрдВ sa-webapp рд░ рдпрд╕рд▓рд╛рдИ рдкреЛрд░реНрдЯрдорд╛ рд╕реБрдиреНрди рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрдиреБрд╣реЛрд╕реН 8080ред рдердк рд░реВрдкрдорд╛, рд╣рд╛рдореАрд▓реЗ рдкреЛрд░реНрдЯ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ рдЬрд╕рдорд╛ рдкрд╛рдЗрдерди рдЕрдиреБрдкреНрд░рдпреЛрдЧрд▓реЗ рд╡рд╛рддрд╛рд╡рд░рдг рдЪрд░ рдкреБрди: рдЕрд╕рд╛рдЗрди рдЧрд░реЗрд░ Java рдЕрдиреБрдкреНрд░рдпреЛрдЧрдмрд╛рдЯ рдЕрдиреБрд░реЛрдзрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕реБрдиреНрдиреЗрдЫред SA_LOGIC_API_URL:
    $ docker run -d -p 8080:8080 -e SA_LOGIC_API_URL='http://<container_ip or docker machine ip>:5000' $DOCKER_USER_ID/sentiment-analysis-web-app

рдбрдХрд░ рдХрдиреНрдЯреЗрдирд░ рд╡рд╛ рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рдирдХреЛ IP рдареЗрдЧрд╛рдирд╛ рдХрд╕рд░реА рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрдиреЗ рднрдиреЗрд░ рдЬрд╛рдиреНрдирдХреЛ рд▓рд╛рдЧрд┐, рдлрд╛рдЗрд▓рд▓рд╛рдИ рд╕рдиреНрджрд░реНрдн рдЧрд░реНрдиреБрд╣реЛрд╕реН рдкрдвреНрдиреБрд╣реЛрд╕реН.

рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХрдиреНрдЯреЗрдирд░ рд╕реБрд░реБ рдЧрд░реМрдВ sa-frontend:

docker run -d -p 80:80 $DOCKER_USER_ID/sentiment-analysis-frontend

рдЕрдм рд╕рдмреИ рдмреНрд░рд╛рдЙрдЬрд░рдорд╛ рдареЗрдЧрд╛рдирд╛рдорд╛ рдЬрд╛рди рддрдпрд╛рд░ рдЫ localhost:80 рд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджрд┐рдиреБрд╣реЛрд╕реН рдХрд┐ рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдкреЛрд░реНрдЯ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдиреБрднрдпреЛ рднрдиреЗ sa-webapp, рд╡рд╛ рдпрджрд┐ рддрдкрд╛рдЗрдБ рдбрдХрд░ рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рди рдЪрд▓рд╛рдЙрдБрджреИ рд╣реБрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рддрдкрд╛рдЗрдБ рдлрд╛рдЗрд▓ рд╕рдореНрдкрд╛рджрди рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рд╣реБрдиреЗрдЫ App.js рдлреЛрд▓реНрдбрд░рдмрд╛рдЯ sa-frontendрд╡рд┐рдзрд┐рдорд╛ IP рдареЗрдЧрд╛рдирд╛ рд╡рд╛ рдкреЛрд░реНрдЯ рдирдореНрдмрд░ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реЗрд░ analyzeSentence(), рдкреБрд░рд╛рдиреЛ рдбрд╛рдЯрд╛ рдХреЛ рд╕рдЯреНрдЯрд╛ рд╡рд░реНрддрдорд╛рди рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрдиред рдпрд╕ рдкрдЫрд┐, рддрдкрд╛рдИрдВрд▓реЗ рдЫрд╡рд┐ рдкреБрди: рдЬрдореНрдорд╛ рдЧрд░реНрди рд░ рдпрд╕рд▓рд╛рдИ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред

рдпреЛ рд╣рд╛рдореНрд░реЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд░реЗрдЦрд╛рдЪрд┐рддреНрд░ рдЕрд╣рд┐рд▓реЗ рдЬрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫред

Kubernetes рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рднрд╛рдЧ 1: рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ, рдорд╛рдЗрдХреНрд░реЛрд╕реЗрд╡рд╛рд╣рд░реВ, рд░ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ
рдорд╛рдЗрдХреНрд░реЛ рд╕реЗрд╡рд╛рд╣рд░реВ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВрдорд╛ рдЪрд▓реНрдЫрдиреН

рд╕рд╛рд░рд╛рдВрд╢: рд╣рд╛рдореАрд▓рд╛рдИ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдХреНрд▓рд╕реНрдЯрд░ рдХрд┐рди рдЪрд╛рд╣рд┐рдиреНрдЫ?

рд╣рд╛рдореАрд▓реЗ рднрд░реНрдЦрд░реИ рдлрд╛рдЗрд▓рд╣рд░реВ рдЬрд╛рдБрдЪ рдЧрд░реЗрдХрд╛ рдЫреМрдВ Dockerfile, рдХрд╕рд░реА рдЫрд╡рд┐рд╣рд░реВ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрдиреЗ рд░ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдбрдХрд░ рднрдгреНрдбрд╛рд░рдорд╛ рдкреБрд╢ рдЧрд░реНрдиреЗ рдмрд╛рд░реЗ рдХреБрд░рд╛ рдЧрд░реЗред рдердк рд░реВрдкрдорд╛, рд╣рд╛рдореАрд▓реЗ рдлрд╛рдЗрд▓ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдЫрд╡рд┐ рдПрд╕реЗрдореНрдмрд▓реАрд▓рд╛рдИ рдХрд╕рд░реА рдЧрддрд┐ рджрд┐рдиреЗ рднрдиреЗрд░ рд╕рд┐рдХреНрдпреМрдВ .dockerignoreред рдирддрд┐рдЬрд╛рдХреЛ рд░реВрдкрдорд╛, рд╣рд╛рдореНрд░рд╛ рдорд╛рдЗрдХреНрд░реЛрд╕реЗрд╡рд╛рд╣рд░реВ рдЕрдм рдбрдХрд░ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВрдорд╛ рдЪрд▓реНрдЫрдиреНред рдпрд╣рд╛рдБ рддрдкрд╛рдИрд▓рд╛рдИ рдХреБрдмреЗрд░рдиреЗрдЯ рдХрд┐рди рдЪрд╛рд╣рд┐рдиреНрдЫ рднрдиреНрдиреЗ рдмрд╛рд░реЗ рдкреВрд░реНрдгрддрдпрд╛ рдЬрд╛рдпрдЬ рдкреНрд░рд╢реНрди рд╣реБрди рд╕рдХреНрдЫред рдпреЛ рд╕рд╛рдорд╛рдЧреНрд░реА рдХреЛ рджреЛрд╕реНрд░реЛ рднрд╛рдЧ рдпреЛ рдкреНрд░рд╢реНрди рдХреЛ рдЬрд╡рд╛рдл рд╕рдорд░реНрдкрд┐рдд рд╣реБрдиреЗрдЫред рдпрд╕ рдмреАрдЪрдорд╛, рдирд┐рдореНрди рдкреНрд░рд╢реНрдирд▓рд╛рдИ рд╡рд┐рдЪрд╛рд░ рдЧрд░реНрдиреБрд╣реЛрд╕реН:
рдорд╛рдиреМрдВ рдкрд╛рда рд╡рд┐рд╢реНрд▓реЗрд╖рдгрдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореНрд░реЛ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд┐рд╢реНрд╡рд╡реНрдпрд╛рдкреА рд░реВрдкрдорд╛ рд▓реЛрдХрдкреНрд░рд┐рдп рднрдПрдХреЛ рдЫред рдЙрд╣рд╛рдБрд▓рд╛рдИ рд╣рд░реЗрдХ рдорд┐рдиреЗрдЯрдорд╛ рд▓рд╛рдЦреМрдВ рдЕрдиреБрд░реЛрдзрд╣рд░реВ рдЖрдЙрдБрдЫрдиреНред рдпрд╕рдХреЛ рдЕрд░реНрде рдорд╛рдЗрдХреНрд░реЛ рд╕рд░реНрднрд┐рд╕ рд╣реЛ sa-webapp ╨╕ sa-logic рдареВрд▓реЛ рднрд╛рд░ рдЕрдиреНрддрд░реНрдЧрдд рд╣реБрдиреЗрдЫред рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрднрд┐рд╕ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдХрдиреНрдЯреЗрдирд░ рдХрд╕рд░реА рдорд╛рдкрди рдЧрд░реНрдиреЗ?

Kubernetes рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рднрд╛рдЧ 1: рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ, рдорд╛рдЗрдХреНрд░реЛрд╕реЗрд╡рд╛рд╣рд░реВ, рд░ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди