рдЗрд╕реНрддрд┐рдпреЛ рдХреЗ рд╕рд╛рде рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕реЗрдЬ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВред рднрд╛рдЧ ---- рдкрд╣рд▓рд╛

рдЗрд╕реНрддрд┐рдпреЛ рдХреЗ рд╕рд╛рде рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕реЗрдЬ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВред рднрд╛рдЧ ---- рдкрд╣рд▓рд╛

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

Istio - рдУрдкрди рд╕реЛрд░реНрд╕-рдкреНрд░реЛрдЬреЗрдХреНрдЯ, Google, IBM рдФрд░ Lyft рдХреА рдЯреАрдореЛрдВ рдХреЗ рд╕рд╣рдпреЛрдЧ рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдпрд╣ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕реЗрдЬ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдЙрддреНрдкрдиреНрди рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдЬрдЯрд┐рд▓рддрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬреИрд╕реЗ:

  • рдпрд╛рддрд╛рдпрд╛рдд рдкреНрд░рдмрдВрдзрди: рдЯрд╛рдЗрдордЖрдЙрдЯ, рдкреБрдирдГ рдкреНрд░рдпрд╛рд╕, рд▓реЛрдб рд╕рдВрддреБрд▓рди;
  • рд╕реБрд░рдХреНрд╖рд╛: рдЕрдВрддрд┐рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдФрд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг;
  • observability: рдЯреНрд░реЗрд╕рд┐рдВрдЧ, рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ, рд▓реЙрдЧрд┐рдВрдЧред

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

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

рдПрдордкреА: рдХреНрдпрд╛?.. рдпрд╣ рд╕рд┐рд░реНрдл рд╕реАрдЖрд░рдпреВрдбреА рд╣реИ!
рдЖрд░: рд╕реАрдЖрд░рдпреВрдбреА рдХрд░рдирд╛ рдХрд╛рд░реНрдп рдХрд╛ рдЖрд╕рд╛рди рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдЕрднреА рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдФрд░ рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдкреНрд░рдорд╛рдгрд┐рдд рдФрд░ рдЕрдзрд┐рдХреГрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдиреЗрдЯрд╡рд░реНрдХ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдмрд╛рд░-рдмрд╛рд░ рдЕрдиреБрд░реЛрдз рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рд╕рд░реНрдХрд┐рдЯ рдмреНрд░реЗрдХрд░ рдкреИрдЯрд░реНрди рдЧреНрд░рд╛рд╣рдХреЛрдВ рдореЗрдВ. рд╕рд╛рде рд╣реА, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдкреВрд░рд╛ рд╕рд┐рд╕реНрдЯрдо рдХреНрд░реИрд╢ рди рд╣реЛ, рдЯрд╛рдЗрдордЖрдЙрдЯ рдЖрджрд┐ рдереЛрдХ рд╕рд┐рд░ (рджреЛрдиреЛрдВ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдкреИрдЯрд░реНрди рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рд▓реЗрдЦ рдореЗрдВ рдмрд╛рдж рдореЗрдВ рджреЗрдЦреЗрдВред), рдФрд░ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдЧрд░рд╛рдиреА, тАЛтАЛрдкрддрд╛ рд▓рдЧрд╛рдирд╛, [тАж]

рдПрдордкреА: рдУрд╣, рддреЛ рдЪрд▓рд┐рдП рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдЙрддреНрдкрд╛рдж рд╕реЗрд╡рд╛ рдореЗрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВред

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

рдЗрд╕реНрддрд┐рдпреЛ рдХреЗ рд╕рд╛рде рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕реЗрдЬ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВред рднрд╛рдЧ ---- рдкрд╣рд▓рд╛

рдиреЛрдЯ: рд▓реЗрдЦ рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХрд╛ рдХрд╛рд░реНрдпрд╕рд╛рдзрдХ рдЬреНрдЮрд╛рди рд╣реИред рдЕрдиреНрдпрдерд╛, рдореИрдВ рдкрдврд╝рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рд╕реЗ рдореЗрд░рд╛ рдкрд░рд┐рдЪрдп рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рдЗрд╕ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдкрдврд╝рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВред

рдЗрд╕реНрддрд┐рдпреЛ рд╡рд┐рдЪрд╛рд░

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

рдЗрд╕реНрддрд┐рдпреЛ рдХреЗ рд╕рд╛рде рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕реЗрдЬ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВред рднрд╛рдЧ ---- рдкрд╣рд▓рд╛
рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ рдиреЗрдЯрд╡рд░реНрдХ рдЯреНрд░реИрдлрд╝рд┐рдХ

рджреВрд╕рд░реА рдУрд░, рдЗрд╕реНрддрд┐рдпреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдореЗрдВ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд░рдХреЗ рд╕реЗрд╡рд╛рдУрдВ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рд╣реИред рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдпрд╣ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рд╣реЛрддрд╛ рд╣реИ:

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

рдпреЗ рдЖрдкрдХреА рд░реБрдЪрд┐ рдЬрдЧрд╛рдиреЗ рд╡рд╛рд▓реА рдХреБрдЫ рд╕рдВрднрд╛рд╡рдирд╛рдПрдВ рд╣реИрдВ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреБрдЫ рд╣реА!)ред рдЖрдЗрдП рдЕрдм рддрдХрдиреАрдХреА рд╡рд┐рд╡рд░рдгреЛрдВ рдкрд░ рдЧреМрд░ рдХрд░реЗрдВ!

рд╡рд╛рд╕реНрддреБрдХрд▓рд╛

рдЗрд╕реНрддрд┐рдпреЛ рд╕рднреА рдиреЗрдЯрд╡рд░реНрдХ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЛ рд░реЛрдХрддрд╛ рд╣реИ рдФрд░ рдЙрд╕ рдкрд░ рдирд┐рдпрдореЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рдкреЙрдб рдореЗрдВ рдПрдХ рд╕рд╛рдЗрдбрдХрд╛рд░ рдХрдВрдЯреЗрдирд░ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╕реНрдорд╛рд░реНрдЯ рдкреНрд░реЙрдХреНрд╕реА рдбрд╛рд▓рддрд╛ рд╣реИред рдкреНрд░реЙрдХреНрд╕реА рдЬреЛ рд╕рднреА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рддреА рд╣реИ a рдбрд╛рдЯрд╛ рдкреНрд▓реЗрди, рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рд╡рд┐рдорд╛рди рдирд┐рдпрдВрддреНрд░рдг.

рдбрд╛рдЯрд╛ рдкреНрд▓реЗрди

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

рдЗрд╕реНрддрд┐рдпреЛ рдХреЗ рд╕рд╛рде рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕реЗрдЬ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВред рднрд╛рдЧ ---- рдкрд╣рд▓рд╛
рдПрдирд╡реЙрдп рдореЗрдВ рд░рд┐рдЯреНрд░реАрдЯ рдФрд░ рд╕рд░реНрдХрд┐рдЯ рдмреНрд░реЗрдХрд┐рдВрдЧ рдХреЛ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ:

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

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

рдорд╣рд╛рди! рдЕрдм рдЖрдк рдЗрд╕реНрддрд┐рдпреЛ рдХреЗ рд╕рд╛рде рдпрд╛рддреНрд░рд╛ рдкрд░ рдЬрд╛рдирд╛ рдЪрд╛рд╣ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрднреА рднреА рдХреБрдЫ рд╕рдВрджреЗрд╣, рдЦреБрд▓реЗ рдкреНрд░рд╢реНрди рд╣реИрдВред рдпрджрд┐ рдпрд╣ рдЬреАрд╡рди рдореЗрдВ рд╕рднреА рдЕрд╡рд╕рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╕рдорд╛рдзрд╛рди рд╣реИ, рддреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд╡реИрдз рд╕рдВрджреЗрд╣ рд╣реИ: рдЖрдЦрд┐рд░рдХрд╛рд░, рдРрд╕реЗ рд╕рднреА рд╕рдорд╛рдзрд╛рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИрдВред

рдФрд░ рдЕрдВрдд рдореЗрдВ рдЖрдк рдкреВрдЫрддреЗ рд╣реИрдВ: "рдХреНрдпрд╛ рдпрд╣ рдЕрдиреБрдХреВрд▓рди рдпреЛрдЧреНрдп рд╣реИ?"

рдЕрдм рдЖрдк рд╕рдореБрджреНрд░реА рдпрд╛рддреНрд░рд╛ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВ - рдФрд░ рдЖрдЗрдП рдХрдВрдЯреНрд░реЛрд▓ рдкреНрд▓реЗрди рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдВред

рд╡рд┐рдорд╛рди рдирд┐рдпрдВрддреНрд░рдг

рдЗрд╕рдореЗрдВ рддреАрди рдШрдЯрдХ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ: рдкрд╛рдпрд▓рдЯ, рдорд┐рдХреНрд╕рд░ ╨╕ рдЧрдврд╝, рдЬреЛ рдПрдХ рд╕рд╛рде рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЛ рд░реВрдЯ рдХрд░рдиреЗ, рдиреАрддрд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдФрд░ рдЯреЗрд▓реАрдореЗрдЯреНрд░реА рдбреЗрдЯрд╛ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреВрддреЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВред рдпреЛрдЬрдирд╛рдмрджреНрдз рд░реВрдк рд╕реЗ, рдпрд╣ рд╕рдм рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

рдЗрд╕реНрддрд┐рдпреЛ рдХреЗ рд╕рд╛рде рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕реЗрдЬ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВред рднрд╛рдЧ ---- рдкрд╣рд▓рд╛
рдбреЗрдЯрд╛ рдкреНрд▓реЗрди рдХреЗ рд╕рд╛рде рдХрдВрдЯреНрд░реЛрд▓ рдкреНрд▓реЗрди рдХрд╛ рдЗрдВрдЯрд░реЗрдХреНрд╢рди

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

рдЗрд╕реНрддрд┐рдпреЛ рд╕реЗ рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рд╕рдВрдмрдВрдз

рд╣рдордиреЗ рдЗрд╕реНрддрд┐рдпреЛ рдХреЗ рд╕реЗрд╡рд╛рдУрдВ рд╕реЗ рд╕рдВрдмрдВрдз рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рдирд╣реАрдВ: рд╕реЗрд╡рд╛рдПрдВ рдЗрд╕реНрддрд┐рдпреЛ рд╕реЗ рдХреИрд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ?

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

рдЗрд╕реНрддрд┐рдпреЛ рдХреЗ рд╕рд╛рде рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕реЗрдЬ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВред рднрд╛рдЧ ---- рдкрд╣рд▓рд╛
рдЪрд┐рддреНрд░рдг рд╡рд┐рдХреНрдЯреЛрд░рд┐рдпрд╛ рджрд┐рдорд┐рддреНрд░рдХреЛрдкреЛрд▓реЛрд╕: рдЖрдкрдХреЛ рдкрд╛рдиреА рдХреИрд╕рд╛ рд▓рдЧрд╛? - рдЖрдЦрд╝рд┐рд░ рдкрд╛рдиреА рдХреНрдпрд╛ рд╣реИ?

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

рд╕рд┐рджреНрдзрд╛рдВрдд рдмрд╣реБрдд рд╣реЛ рдЧрдпрд╛ - рдЖрдЗрдП рдЗрд╕ рдЬреНрдЮрд╛рди рдХреЛ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рд▓рд╛рдПрдВ!

рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдЗрд╕реНрддрд┐рдпреЛ

рдЗрд╕реНрддрд┐рдпреЛ рдХреЛ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреНрд▓рд╕реНрдЯрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХрдо рд╕реЗ рдХрдо 4 рд╡реАрд╕реАрдкреАрдпреВ рдФрд░ 8 рдЬреАрдмреА рд░реИрдо рдЙрдкрд▓рдмреНрдз рд╣реЛред рдХреНрд▓рд╕реНрдЯрд░ рдХреЛ рд╢реАрдШреНрд░рддрд╛ рд╕реЗ рдмрдврд╝рд╛рдиреЗ рдФрд░ рд▓реЗрдЦ рдХреЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ Google рдХреНрд▓рд╛рдЙрдб рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ, рдЬреЛ рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдореБрдлрд╝реНрдд $300.

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

рдкрддрд╡рд╛рд░ рд╕реНрдерд╛рдкрдирд╛

рдЕрдкрдиреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рд╣реЗрд▓реНрдо рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕рдореЗрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ. рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдЧрд▓реЗ рднрд╛рдЧ рдореЗрдВ рдЗрд╕реНрддрд┐рдпреЛ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреЗрдореНрдкрд▓реЗрдЯ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВрдЧреЗред

рдЗрдВрд╕реНрдЯрд╛рд▓реЗрд╢рди

рдпрд╣рд╛рдВ рд╕реЗ рдЗрд╕реНрддрд┐рдпреЛ рд╕рдВрд╕рд╛рдзрди рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдирд╡реАрдирддрдо рд░рд┐рд▓реАрдЬ (рд╕рдВрд╕реНрдХрд░рдг 1.0.5 рдХреЗ рдореВрд▓ рд▓реЗрдЦрдХ рдХреЗ рд▓рд┐рдВрдХ рдХреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд 1.0.6 - рд▓рдЧрднрдЧ рдЕрдиреБрд╡рд╛рджред), рд╕рд╛рдордЧреНрд░реА рдХреЛ рдПрдХ рдПрдХрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдирд┐рдХрд╛рд▓реЗрдВ, рдЬрд┐рд╕реЗ рдореИрдВ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░реВрдВрдЧрд╛ [istio-resources].

рдЗрд╕реНрддрд┐рдпреЛ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдЖрд╕рд╛рди рдкрд╣рдЪрд╛рди рдХреЗ рд▓рд┐рдП, K8s рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдПрдХ рдиреЗрдорд╕реНрдкреЗрд╕ рдмрдирд╛рдПрдВ istio-system:

$ kubectl create namespace istio-system

рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкрд░ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдХреЗ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдкреВрд░рд╛ рдХрд░реЗрдВ [istio-resources] рдФрд░ рдЖрджреЗрд╢ рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реИ:

$ helm template install/kubernetes/helm/istio 
  --set global.mtls.enabled=false 
  --set tracing.enabled=true 
  --set kiali.enabled=true 
  --set grafana.enabled=true 
  --namespace istio-system > istio.yaml

рдпрд╣ рдХрдорд╛рдВрдб рдЗрд╕реНрддрд┐рдпреЛ рдХреЗ рдкреНрд░рдореБрдЦ рдШрдЯрдХреЛрдВ рдХреЛ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдХрд░реЗрдЧрд╛ istio.yaml. рд╣рдордиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ рдЕрдкрдиреЗ рд▓рд┐рдП рдорд╛рдирдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рд╣реИ:

  • global.mtls.enabled рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд false (рдпрд╛рдиреА рдПрдордЯреАрдПрд▓рдПрд╕ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдЕрдХреНрд╖рдо рд╣реИ - рд▓рдЧрднрдЧ рдЕрдиреБрд╡рд╛рджред)рд╣рдорд╛рд░реА рдбреЗрдЯрд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП;
  • tracing.enabled рдЬреИрдЧрд░ рдХреЗ рд╕рд╛рде рдЕрдиреБрд░реЛрдз рдЕрдиреБрд░реЗрдЦрдг рд╕рдХреНрд╖рдо рдмрдирд╛рддрд╛ рд╣реИ;
  • kiali.enabled рд╕реЗрд╡рд╛рдУрдВ рдФрд░ рдпрд╛рддрд╛рдпрд╛рдд рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдЖрд▓реА рдХреЛ рдПрдХ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ;
  • grafana.enabled рдПрдХрддреНрд░рд┐рдд рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧреНрд░рд╛рдлрд╛рдирд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИред

рдЙрддреНрдкрдиреНрди рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рд▓рд╛рдЧреВ рдХрд░реЗрдВ:

$ kubectl apply -f istio.yaml

рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдЗрд╕реНрддрд┐рдпреЛ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдкреВрд░реА рд╣реЛ рдЧрдИ рд╣реИ! рдиреЗрдорд╕реНрдкреЗрд╕ рдореЗрдВ рд╕рднреА рдкреЙрдбреНрд╕ рдЖрдиреЗ рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ istio-system рд╕рдХреНрд╖рдо рд╣реЛ рдЬрд╛рдПрдЧрд╛ Running рдпрд╛ CompletedрдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЖрджреЗрд╢ рдХреЛ рдЪрд▓рд╛рдХрд░:

$ kubectl get pods -n istio-system

рдЕрдм рд╣рдо рдЕрдЧрд▓реЗ рднрд╛рдЧ рдкрд░ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВ, рдЬрд╣рд╛рдВ рд╣рдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдмрдврд╝рд╛рдПрдВрдЧреЗ рдФрд░ рдЪрд▓рд╛рдПрдВрдЧреЗред

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

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

рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЪрд╛рд░ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕реЗрдЬ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

  1. рд╕реЗрд╡рд╛ рдПрд╕рдП-рдлреНрд░рдВрдЯреЗрдВрдб, рдЬреЛ Reactjs рдкрд░ рдлреНрд░рдВрдЯ-рдПрдВрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкрд░реЛрд╕рддрд╛ рд╣реИ;
  2. рд╕реЗрд╡рд╛ рдПрд╕рдП рд╡реЗрдм рдРрдк, рдЬреЛ рд╕реЗрдВрдЯреАрдореЗрдВрдЯ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкреНрд░рд╢реНрди рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИ;
  3. рд╕реЗрд╡рд╛ рдПрд╕рдП рддрд░реНрдХрдЬреЛ рд╕реНрд╡рдпрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ рднрд╛рд╡рдирд╛рдУрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг;
  4. рд╕реЗрд╡рд╛ рдПрд╕рдП рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛, рдЬреЛ рдХрд┐рдП рдЧрдП рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреА рд╕рдЯреАрдХрддрд╛ рдкрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред

рдЗрд╕реНрддрд┐рдпреЛ рдХреЗ рд╕рд╛рде рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕реЗрдЬ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВред рднрд╛рдЧ ---- рдкрд╣рд▓рд╛

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

рдЗрд╕реНрддрд┐рдпреЛ рд╕реЗ рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рд╕рд╛рде рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░рдирд╛

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

рд╕рд╛рдЗрдбрдХрд╛рд░ рдбрд╛рд▓рдирд╛

рдирд┐рд╡реЗрд╢рди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдпрд╛ рдореИрдиреНрдпреБрдЕрд▓. рд╕рд╛рдЗрдбрдХрд╛рд░ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд▓реЗрдмрд▓ рдХреЛ рдиреЗрдорд╕реНрдкреЗрд╕ рдкрд░ рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ istio-injection=enabled, рдЬреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

$ kubectl label namespace default istio-injection=enabled
namespace/default labeled

рдЕрдм рдкреНрд░рддреНрдпреЗрдХ рдкреЙрдб рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдиреЗрдорд╕реНрдкреЗрд╕ рдореЗрдВ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (default) рдЗрд╕рдХрд╛ рд╕рд╛рдЗрдбрдХрд╛рд░ рдХрдВрдЯреЗрдирд░ рдорд┐рд▓реЗрдЧрд╛ред рдЗрд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреА рд░реВрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдкрд░ рдЬрд╛рдХрд░ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди рддреИрдирд╛рдд рдХрд░реЗрдВ [istio-mastery] рдФрд░ рдирд┐рдореНрди рдЖрджреЗрд╢ рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реВрдБ:

$ kubectl apply -f resource-manifests/kube
persistentvolumeclaim/sqlite-pvc created
deployment.extensions/sa-feedback created
service/sa-feedback created
deployment.extensions/sa-frontend created
service/sa-frontend created
deployment.extensions/sa-logic created
service/sa-logic created
deployment.extensions/sa-web-app created
service/sa-web-app created

рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдХрдорд╛рдВрдб рдЪрд▓рд╛рдХрд░ рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдкреЙрдбреНрд╕ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рджреЛ рдХрдВрдЯреЗрдирд░ рд╣реИрдВ (рд╕реНрд╡рдпрдВ рд╕реЗрд╡рд╛ рдФрд░ рдЙрд╕рдХреЗ рд╕рд╛рдЗрдбрдХрд╛рд░ рдХреЗ рд╕рд╛рде) kubectl get pods рдФрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд▓реЗрдВ рдХрд┐ рдХреЙрд▓рдо рдХреЗ рдЕрдВрддрд░реНрдЧрдд READY рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдореВрд▓реНрдп 2/2, рдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рджреЛрдиреЛрдВ рдХрдВрдЯреЗрдирд░ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВ:

$ kubectl get pods
NAME                           READY     STATUS    RESTARTS   AGE
sa-feedback-55f5dc4d9c-c9wfv   2/2       Running   0          12m
sa-frontend-558f8986-hhkj9     2/2       Running   0          12m
sa-logic-568498cb4d-2sjwj      2/2       Running   0          12m
sa-logic-568498cb4d-p4f8c      2/2       Running   0          12m
sa-web-app-599cf47c7c-s7cvd    2/2       Running   0          12m

рджреЗрдЦрдиреЗ рдореЗрдВ рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

рдЗрд╕реНрддрд┐рдпреЛ рдХреЗ рд╕рд╛рде рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕реЗрдЬ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВред рднрд╛рдЧ ---- рдкрд╣рд▓рд╛
рдкреЙрдбреНрд╕ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рджреВрдд рдкреНрд░реЙрдХреНрд╕реА

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

рдкреНрд░рд╡реЗрд╢ рджреНрд╡рд╛рд░

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

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

$ kubectl get svc -n istio-system -l istio=ingressgateway
NAME                   TYPE           CLUSTER-IP     EXTERNAL-IP
istio-ingressgateway   LoadBalancer   10.0.132.127   13.93.30.120

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

$ EXTERNAL_IP=$(kubectl get svc -n istio-system 
  -l app=istio-ingressgateway 
  -o jsonpath='{.items[0].status.loadBalancer.ingress[0].ip}')

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

рдЧреЗрдЯрд╡реЗ рд╕рдВрд╕рд╛рдзрди

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

рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рд╕рднреА рд╣реЛрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдкреЛрд░реНрдЯ 80 рдкрд░ HTTP рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдПрд╣рд╕рд╛рд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рднрд╛рд╖рд╛ рд╕реЗ рд╣реЛрддрд╛ рд╣реИ (http-gateway.yaml):

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: http-gateway
spec:
  selector:
    istio: ingressgateway
  servers:
  - port:
      number: 80
      name: http
      protocol: HTTP
    hosts:
- "*"

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

рдирд┐рдореНрди рдХрдорд╛рдВрдб рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

$ kubectl apply -f resource-manifests/istio/http-gateway.yaml gateway.networking.istio.io/http-gateway created

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

рдЖрднрд╛рд╕реА рд╕реЗрд╡рд╛ рд╕рдВрд╕рд╛рдзрди

рд╡рд░реНрдЪреБрдЕрд▓ рд╕рд░реНрд╡рд┐рд╕ рдЗрдирдЧреНрд░реЗрд╕ рдЧреЗрдЯрд╡реЗ рдХреЛ рдмрддрд╛рддреА рд╣реИ рдХрд┐ рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рднреАрддрд░ рдЕрдиреБрдордд рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдХреИрд╕реЗ рд░реВрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПред

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

рдЗрд╕реНрддрд┐рдпреЛ рдХреЗ рд╕рд╛рде рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕реЗрдЬ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВред рднрд╛рдЧ ---- рдкрд╣рд▓рд╛
рд╡рд░реНрдЪреБрдЕрд▓ рд╕рд░реНрд╡рд┐рд╕реЗрдЬ рдХреЗ рд╕рд╛рде рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд░реВрдЯ

рдЙрди рдЕрдиреБрд░реЛрдзреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдПрд╕рдП-рдлреНрд░рдВрдЯреЗрдВрдб рдХреЛ рднреЗрдЬрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:

  • рд░рд╛рд╕реНрддреЗ рдореЗрдВ рд╕рдЯреАрдХ рдорд┐рд▓рд╛рди / Index.html рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП SA-Frontend рдХреЛ рднреЗрдЬрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП;
  • рдЙрдкрд╕рд░реНрдЧ рдХреЗ рд╕рд╛рде рдкрде /static/* рд╕реАрдПрд╕рдПрд╕ рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреИрд╕реА рдлреНрд░рдВрдЯрдПрдВрдб рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕реНрдерд┐рд░ рдлрд╝рд╛рдЗрд▓реЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрд╕рдП-рдлреНрд░рдВрдЯреЗрдВрдб рдХреЛ рднреЗрдЬрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП;
  • рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╕реЗ рдореЗрд▓ рдЦрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкрде '^.*.(ico|png|jpg)$', рдПрд╕рдП-рдлреНрд░рдВрдЯреЗрдВрдб рдХреЛ рднреЗрдЬрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдпреЗ рдкреГрд╖реНрда рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдЪрд┐рддреНрд░ рд╣реИрдВред

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (sa-virtualservice-рдмрд╛рд╣рд░реА.yaml):

kind: VirtualService
metadata:
  name: sa-external-services
spec:
  hosts:
  - "*"
  gateways:
  - http-gateway                      # 1
  http:
  - match:
    - uri:
        exact: /
    - uri:
        exact: /callback
    - uri:
        prefix: /static
    - uri:
        regex: '^.*.(ico|png|jpg)$'
    route:
    - destination:
        host: sa-frontend             # 2
        port:
number: 80

рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ:

  1. рдпрд╣ рд╡рд░реНрдЪреБрдЕрд▓ рд╕реЗрд╡рд╛ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддреА рд╣реИ http-рдЧреЗрдЯрд╡реЗ;
  2. ╨Т destination рдЙрд╕ рд╕реЗрд╡рд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ рдЕрдиреБрд░реЛрдз рднреЗрдЬреЗ рдЬрд╛рддреЗ рд╣реИрдВред

рдиреЛрдЯ: рдЙрдкрд░реЛрдХреНрдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИ sa-virtualservice-external.yaml, рдЬрд┐рд╕рдореЗрдВ SA-WebApp рдФрд░ SA-рдлреАрдбрдмреИрдХ рдкрд░ рд░реВрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рдВрдХреНрд╖рд┐рдкреНрддрддрд╛ рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рд▓реЗрдЦ рдореЗрдВ рдЗрд╕реЗ рдЫреЛрдЯрд╛ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдХреЙрд▓ рдХрд░рдХреЗ рд╡рд░реНрдЪреБрдЕрд▓ рд╕реЗрд╡рд╛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ:

$ kubectl apply -f resource-manifests/istio/sa-virtualservice-external.yaml
virtualservice.networking.istio.io/sa-external-services created

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

рдЗрд╕реНрддрд┐рдпреЛ рдХреЗ рд╕рд╛рде рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕реЗрдЬ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВред рднрд╛рдЧ ---- рдкрд╣рд▓рд╛
рдЕрдиреБрд░реЛрдз рд░реВрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЗрд╕реНрддрд┐рдпреЛ-рдЗрдиреНрдЧреНрд░реЗрд╕рдЧреЗрдЯрд╡реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди

рднрд╛рд╡рдирд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЕрдм рдЙрдкрд▓рдмреНрдз рд╣реИ http://{EXTERNAL-IP}/. рдпрджрд┐ рдЖрдкрдХреЛ 'рдирд╣реАрдВ рдорд┐рд▓рд╛' рд╕реНрдерд┐рддрд┐ рдорд┐рд▓рддреА рд╣реИ рддреЛ рдЪрд┐рдВрддрд╛ рди рдХрд░реЗрдВ: рдХрднреА-рдХрднреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдкреНрд░рднрд╛рд╡реА рд╣реЛрдиреЗ рдФрд░ рдПрдиреНрд╡реЙрдп рдХреИрд╢ рдХреЛ рдЕрдкрдбреЗрдЯ рд╣реЛрдиреЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ.

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

рдХрд┐рдЖрд▓реА: рдЕрд╡рд▓реЛрдХрдиреАрдпрддрд╛

рдХрд┐рдЖрд▓реА рдПрдбрдорд┐рди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдБ:

$ kubectl port-forward 
    $(kubectl get pod -n istio-system -l app=kiali 
    -o jsonpath='{.items[0].metadata.name}') 
    -n istio-system 20001

...рдФрд░ рдЦреЛрд▓реЛ http://localhost:20001/рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ/рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд░рдХреЗред рдпрд╣рд╛рдВ рдЖрдкрдХреЛ рдХрдИ рдЙрдкрдпреЛрдЧреА рд╕реБрд╡рд┐рдзрд╛рдПрдВ рдорд┐рд▓реЗрдВрдЧреА, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕реНрддрд┐рдпреЛ рдШрдЯрдХреЛрдВ рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛, рдиреЗрдЯрд╡рд░реНрдХ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯ рдХрд░рдХреЗ рдПрдХрддреНрд░ рдХреА рдЧрдИ рдЬрд╛рдирдХрд╛рд░реА рд╕реЗ рд╕реЗрд╡рд╛рдУрдВ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рдирд╛, рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ "рдХреМрди рдХрд┐рд╕рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░ рд░рд╣рд╛ рд╣реИ?", "рд╕реЗрд╡рд╛ рдХрд╛ рдХреМрди рд╕рд╛ рд╕рдВрд╕реНрдХрд░рдг рдЕрдиреБрднрд╡ рдХрд░ рд░рд╣рд╛ рд╣реИ" рдЕрд╕рдлрд▓рддрд╛рдПрдБ?тАЭ рдФрд░ рдЗрд╕реА рддрд░рд╣ред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЧреНрд░рд╛рдлрд╛рдирд╛ рдХреЗ рд╕рд╛рде рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐рдЖрд▓реА рдХреА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВред

рдЗрд╕реНрддрд┐рдпреЛ рдХреЗ рд╕рд╛рде рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕реЗрдЬ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВред рднрд╛рдЧ ---- рдкрд╣рд▓рд╛

рдЧреНрд░рд╛рдлрд╛рдирд╛: рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдХрд╛ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди

рдЗрд╕реНрддрд┐рдпреЛ рдореЗрдВ рдПрдХрддреНрд░ рдХрд┐рдП рдЧрдП рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдЧреНрд░рд╛рдлрд╛рдирд╛ рдХреЗ рд╕рд╛рде рджреЗрдЦреЗ рдЬрд╛рддреЗ рд╣реИрдВред рдЧреНрд░рд╛рдлрд╛рдирд╛ рдПрдбрдорд┐рди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХрдорд╛рдВрдб рдХреЛ рдЪрд▓рд╛рдПрдБ, рдлрд┐рд░ рдЦреЛрд▓реЗрдВ http://localhost:3000/:

$ kubectl -n istio-system port-forward 
    $(kubectl -n istio-system get pod -l app=grafana 
    -o jsonpath={.items[0].metadata.name}) 3000

рдореЗрдиреВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рд╣реЛрдо рдКрдкрд░ рдмрд╛рдИрдВ рдУрд░ рдЪреБрдиреЗрдВ рдФрд░ рдЪреБрдиреЗрдВ рдЗрд╕реНрддрд┐рдпреЛ рд╕рд░реНрд╡рд┐рд╕ рдбреИрд╢рдмреЛрд░реНрдб рдКрдкрд░реА рдмрд╛рдПрдБ рдХреЛрдиреЗ рдореЗрдВ, рд╕реЗрд╡рд╛ рд╕реЗ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ рд╕рд╛-рд╡реЗрдм-рдРрдкрдПрдХрддреНрд░рд┐рдд рдореЗрдЯреНрд░рд┐рдХреНрд╕ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП:

рдЗрд╕реНрддрд┐рдпреЛ рдХреЗ рд╕рд╛рде рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕реЗрдЬ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВред рднрд╛рдЧ ---- рдкрд╣рд▓рд╛

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

$ while true; do 
    curl -i http://$EXTERNAL_IP/sentiment 
    -H "Content-type: application/json" 
    -d '{"sentence": "I love yogobella"}'; 
    sleep .8; done

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

рдЕрдВрдд рдореЗрдВ, рдЖрдЗрдП рд╕реЗрд╡рд╛рдУрдВ рдореЗрдВ рдЕрдиреБрд░реЛрдз рдЕрдиреБрд░реЗрдЦрдг рдХреЛ рджреЗрдЦреЗрдВред

рдЬреИрдЧрд░: рдЯреНрд░реЗрд╕рд┐рдВрдЧ

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

рдЗрд╕реНрддрд┐рдпреЛ рдХреЗ рд╕рд╛рде рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕реЗрдЬ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВред рднрд╛рдЧ ---- рдкрд╣рд▓рд╛
рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╡рд┐рдлрд▓ рдЕрдиреБрд░реЛрдз рдХрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг

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

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

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

рдЗрд╕реНрддрд┐рдпреЛ рдЬреИрдЧрд░ рдЯреНрд░реИрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рд╡рд┐рдХреНрд░реЗрддрд╛-рд╕реНрд╡рддрдВрддреНрд░ рдУрдкрдирдЯреНрд░реЗрд╕рд┐рдВрдЧ рдПрдкреАрдЖрдИ рдврд╛рдВрдЪреЗ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рд╕реЗ рдЬреИрдЧрд░ рдпреВрдЬрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ:

$ kubectl port-forward -n istio-system 
    $(kubectl get pod -n istio-system -l app=jaeger 
    -o jsonpath='{.items[0].metadata.name}') 16686

рдЕрдм рдЬрд╛рдУ http://localhost:16686/ рдФрд░ рдПрдХ рд╕реЗрд╡рд╛ рдЪреБрдиреЗрдВ рд╕рд╛-рд╡реЗрдм-рдРрдк. рдпрджрд┐ рд╕реЗрд╡рд╛ рдбреНрд░реЙрдкрдбрд╛рдЙрди рдореЗрдиреВ рдореЗрдВ рдирд╣реАрдВ рджрд┐рдЦрд╛рдИ рдЬрд╛рддреА рд╣реИ, рддреЛ рдкреГрд╖реНрда рдкрд░ рдЧрддрд┐рд╡рд┐рдзрд┐ рджрд┐рдЦрд╛рдПрдВ/рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВ рдФрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВред рдЗрд╕рдХреЗ рдмрд╛рдж рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдирд┐рд╢рд╛рди рдЦреЛрдЬреЗрдВ, рдЬреЛ рд╕рдмрд╕реЗ рд╣рд╛рд▓ рдХреЗ рдирд┐рд╢рд╛рди рджрд┐рдЦрд╛рдПрдЧрд╛ - рдХреЛрдИ рднреА рдЪреБрдиреЗрдВ - рд╕рднреА рдирд┐рд╢рд╛рдиреЛрдВ рдкрд░ рд╡рд┐рд╕реНрддреГрдд рдЬрд╛рдирдХрд╛рд░реА рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:

рдЗрд╕реНрддрд┐рдпреЛ рдХреЗ рд╕рд╛рде рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕реЗрдЬ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВред рднрд╛рдЧ ---- рдкрд╣рд▓рд╛

рдпрд╣ рдЯреНрд░реЗрд╕ рджрд┐рдЦрд╛рддрд╛ рд╣реИ:

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

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

рдЗрд╕реНрддрд┐рдпреЛ рдХреЗ рд╕рд╛рде рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕реЗрдЬ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВред рднрд╛рдЧ ---- рдкрд╣рд▓рд╛
(рдП) рд╣реЗрдбрд░ рдЕрдЧреНрд░реЗрд╖рдг рдЗрд╕реНрддрд┐рдпреЛ рдХреА рдЬрд┐рдореНрдореЗрджрд╛рд░реА рд╣реИ; (рдмреА) рд╕реЗрд╡рд╛рдПрдБ рд╣реЗрдбрд░ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИрдВ

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

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╢реАрд░реНрд╖рд▓реЗрдЦреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (рдЕрдЧреНрд░реЗрд╖рд┐рдд):

x-request-id
x-b3-traceid
x-b3-spanid
x-b3-parentspanid
x-b3-sampled
x-b3-flags
x-ot-span-context

рдпрд╣ рдПрдХ рд╕рд░рд▓ рдХрд╛рд░реНрдп рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреБрдЫ рд╣реИ рдХрдИ рдкреБрд╕реНрддрдХрд╛рд▓рдп - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, sa-рд╡реЗрдм-рдРрдк рд╕реЗрд╡рд╛ рдореЗрдВ, рдпрджрд┐ рдЖрдк рдмрд╕ рдЗрд╕рдореЗрдВ Jaeger рдФрд░ OpenTracing рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рд░реЗрд╕реНрдЯрдЯреЗрдореНрдкрд▓реЗрдЯ рдХреНрд▓рд╛рдЗрдВрдЯ рдЗрди рд╣реЗрдбрд░ рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЗрд╕рдХреА рдирд┐рд░реНрднрд░рддрд╛.

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╕реЗрдВрдЯреАрдореЗрдВрдЯ рдПрдирд╛рд▓рд┐рд╕рд┐рд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдлреНрд▓рд╛рд╕реНрдХ, рд╕реНрдкреНрд░рд┐рдВрдЧ рдФрд░ ASP.NET рдХреЛрд░ рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред

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

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

рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗ рдкреА.рдПрд╕

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

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ