Istio рд╕рдВрдЧ microservices рдорд╛ рдлрд░реНрдХрдиреБрд╣реЛрд╕реНред рднрд╛рдЧ 1

Istio рд╕рдВрдЧ microservices рдорд╛ рдлрд░реНрдХрдиреБрд╣реЛрд╕реНред рднрд╛рдЧ 1

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

рдЗрд╕реНрддрд┐рдУ тАФ рдЧреБрдЧрд▓, IBM рд░ Lyft рдХрд╛ рдЯреЛрд▓реАрд╣рд░реВрд╕рдБрдЧрдХреЛ рд╕рд╣рдХрд╛рд░реНрдпрдорд╛ рд╡рд┐рдХрд╕рд┐рдд рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдкрд░рд┐рдпреЛрдЬрдирд╛ред рдпрд╕рд▓реЗ рд╕реВрдХреНрд╖реНрдо рд╕реЗрд╡рд╛рд╣рд░реВрдорд╛ рдЖрдзрд╛рд░рд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрдорд╛ рдЙрддреНрдкрдиреНрди рд╣реБрдиреЗ рдЬрдЯрд┐рд▓рддрд╛рд╣рд░реВрд▓рд╛рдИ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрдЫ, рдЬрд╕реНрддреИ:

  • рдЯреНрд░рд╛рдлрд┐рдХ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди: рдЯрд╛рдЗрдордЖрдЙрдЯ, рдкреБрди: рдкреНрд░рдпрд╛рд╕, рд▓реЛрдб рд╕рдиреНрддреБрд▓рди;
  • рд╕реБрд░рдХреНрд╖рд╛: рдЕрдиреНрдд рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг;
  • рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдпрддрд╛: рдЯреНрд░реЗрд╕рд┐рдЩ, рдирд┐рдЧрд░рд╛рдиреА, тАЛтАЛрд▓рдЧрд┐рдЩред

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

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

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

рд╕рд╛рдВрд╕рдж: рдУрд╣, рддреНрдпрд╕реЛрднрдП рдЙрддреНрдкрд╛рджрди рд╕реЗрд╡рд╛рдорд╛ рдпреЛ рд╕реБрд╡рд┐рдзрд╛ рд╕рдореНрдорд┐рд▓рд┐рдд рдЧрд░реМрдВред

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

Istio рд╕рдВрдЧ microservices рдорд╛ рдлрд░реНрдХрдиреБрд╣реЛрд╕реНред рднрд╛рдЧ 1

рднрдиреНрдиреБ: рдпреЛ рд▓реЗрдЦрд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ Kubernetes рдХреЛ рдХрд╛рдо рдЧрд░реНрдиреЗ рдЬреНрдЮрд╛рди рдЫ рднрдиреА рдорд╛рдиреНрджрдЫред рдЕрдиреНрдпрдерд╛, рдо рдкрдвреНрди рд╕рд┐рдлрд╛рд░рд┐рд╕ рдЧрд░реНрджрдЫреБ Kubernetes рдХреЛ рдореЗрд░реЛ рдкрд░рд┐рдЪрдп рд░ рддреНрдпрд╕ рдкрдЫрд┐ рдорд╛рддреНрд░ рдпреЛ рд╕рд╛рдордЧреНрд░реА рдкрдвреНрди рдЬрд╛рд░реА рд░рд╛рдЦреНрдиреБрд╣реЛрд╕реНред

Istio рд╡рд┐рдЪрд╛рд░

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

Istio рд╕рдВрдЧ microservices рдорд╛ рдлрд░реНрдХрдиреБрд╣реЛрд╕реНред рднрд╛рдЧ 1
Kubernetes рдорд╛ рдиреЗрдЯрд╡рд░реНрдХ рдЯреНрд░рд╛рдлрд┐рдХ

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

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

рдпреА рдХреЗрд╣реА рд╕рдореНрднрд╛рд╡рдирд╛рд╣рд░реВ рдорд╛рддреНрд░ рд╣реБрдиреН (рд╡рд╛рд╕реНрддрд╡рдорд╛ рдХреЗрд╣реА!) рддрдкрд╛рдИрдВрд▓рд╛рдИ рдЪрд╛рд╕реЛ рджрд┐рдиред рдЕрдм рдкреНрд░рд╛рд╡рд┐рдзрд┐рдХ рд╡рд┐рд╡рд░рдгрд╣рд░реВрдорд╛ рдбреБрдмреМрдВ!

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

Istio рд▓реЗ рд╕рдмреИ рдиреЗрдЯрд╡рд░реНрдХ рдЯреНрд░рд╛рдлрд┐рдХрд▓рд╛рдИ рд░реЛрдХреНрдЫ рд░ рдпрд╕рдорд╛ рдирд┐рдпрдорд╣рд░реВрдХреЛ рд╕реЗрдЯ рд▓рд╛рдЧреВ рдЧрд░реНрджрдЫ, рдкреНрд░рддреНрдпреЗрдХ рдкреЛрдбрдорд╛ рд╕рд╛рдЗрдбрдХрд╛рд░ рдХрдиреНрдЯреЗрдирд░рдХреЛ рд░реВрдкрдорд╛ рд╕реНрдорд╛рд░реНрдЯ рдкреНрд░реЛрдХреНрд╕реА рдШреБрд╕рд╛рдЙрдБрдЫред рд╕рдмреИ рдХреНрд╖рдорддрд╛рд╣рд░реВ рд╕рдХреНрд░рд┐рдп рдЧрд░реНрдиреЗ рдкреНрд░реЛрдХреНрд╕реАрд╣рд░реВ рдлрд╛рд░рдо рдП рдбрд╛рдЯрд╛ рдкреНрд▓реЗрди, рд░ рддрд┐рдиреАрд╣рд░реВ рдЧрддрд┐рд╢реАрд▓ рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ рдирд┐рдпрдиреНрддреНрд░рдг рд╡рд┐рдорд╛рди.

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

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

Istio рд╕рдВрдЧ microservices рдорд╛ рдлрд░реНрдХрдиреБрд╣реЛрд╕реНред рднрд╛рдЧ 1
рдкреБрди: рдкреНрд░рдпрд╛рд╕ рд░ рд╕рд░реНрдХрд┐рдЯ рдмреНрд░реЗрдХрд┐рдЩ рдХрд╕рд░реА Envoy рдорд╛ рд▓рд╛рдЧреВ рдЧрд░рд┐рдиреНрдЫ

рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЧрд░реНрди:

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

рдпрд╕рдХреЛ рдорддрд▓рдм рдпреЛ рд╣реЛ рдХрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдЕрд░реНрдХреЛ рдкреБрди: рдкреНрд░рдпрд╛рд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБ рдкрд░реНрджреИрди, рддрдкрд╛рдИрдВрд▓реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩ рднрд╛рд╖рд╛ X, Y рд╡рд╛ Z рдорд╛ рд╕рд░реНрдХрд┐рдЯ рдмреНрд░реЗрдХрд┐рдЩ рд░ рд╕реЗрд╡рд╛ рдЦреЛрдЬрдХреЛ рдЖрдлреНрдиреИ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрдиреБ рдкрд░реНрджреИрдиред рдпреА рд╕рдмреИ рд░ рдзреЗрд░реИ рдХреБрд░рд╛рд╣рд░реВ рдмрдХреНрд╕ рдмрд╛рд╣рд┐рд░ рдЙрдкрд▓рдмреНрдз рдЫрдиреНред Istio рдорд╛ рд░ рдЖрд╡рд╢реНрдпрдХ рдЫреИрди рд╣реЛрдИрди рдХреЛрдб рдорд╛ рдкрд░рд┐рд╡рд░реНрддрдиред

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

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

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

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

рдпреЛ рддреАрди рдШрдЯрдХ рд╕рдорд╛рд╡реЗрд╢: рдкрд╛рдпрд▓рдЯ, рдорд┐рдХреНрд╕рд░ ╨╕ Citadel, рдЬрд╕рд▓реЗ рдорд╛рд░реНрдЧ рдЯреНрд░рд╛рдлрд┐рдХ, рдиреАрддрд┐рд╣рд░реВ рд▓рд╛рдЧреВ рдЧрд░реНрди, рд░ рдЯреЗрд▓рд┐рдореЗрдЯреНрд░реА рдбреЗрдЯрд╛ рд╕рдЩреНрдХрд▓рди рдЧрд░реНрди рд░рд╛рдЬрджреВрддрд╣рд░реВрд▓рд╛рдИ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрди рд╕рдБрдЧреИ рдХрд╛рдо рдЧрд░реНрджрдЫред рдпреЛрдЬрдирд╛рдмрджреНрдз рд░реВрдкрдорд╛ рдпреЛ рд╕рдмреИ рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ:

Istio рд╕рдВрдЧ microservices рдорд╛ рдлрд░реНрдХрдиреБрд╣реЛрд╕реНред рднрд╛рдЧ 1
рдбрд╛рдЯрд╛ рдкреНрд▓реЗрди рд╕рдВрдЧ рдирд┐рдпрдиреНрддреНрд░рдг рд╡рд┐рдорд╛рди рдХреЛ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛

рджреВрддрд╣рд░реВ (рдЬрд╕реНрддреИ рдбрд╛рдЯрд╛ рдкреНрд▓реЗрди) рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░рд┐рдПрдХреЛ рдЫ Kubernetes CRD (рдХрд╕реНрдЯрдо рд░рд┐рд╕реЛрд░реНрд╕ рдкрд░рд┐рднрд╛рд╖рд╛рд╣рд░реВ) Istio рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдкрдорд╛ рдпрд╕ рдЙрджреНрджреЗрд╢реНрдпрдХреЛ рд▓рд╛рдЧрд┐ рдЕрднрд┐рдкреНрд░реЗрд░рд┐рддред рддрдкрд╛рдИрдХрд╛ рд▓рд╛рдЧрд┐ рдпрд╕рдХреЛ рдЕрд░реНрде рдХреЗ рд╣реЛ рднрдиреЗ рддрд┐рдиреАрд╣рд░реВ рдкрд░рд┐рдЪрд┐рдд рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕рдХреЛ рд╕рд╛рде Kubernetes рдорд╛ рдЕрд░реНрдХреЛ рд╕реНрд░реЛрдд рдорд╛рддреНрд░ рджреЗрдЦрд┐рдиреНрдЫрдиреНред рдПрдХ рдкрдЯрдХ рд╕рд┐рд░реНрдЬрдирд╛ рднрдПрдкрдЫрд┐, рдпреЛ рд╕реНрд░реЛрдд рдирд┐рдпрдиреНрддреНрд░рдг рд╡рд┐рдорд╛рди рджреНрд╡рд╛рд░рд╛ рдЙрдард╛рдЗрдиреЗрдЫ рд░ рд░рд╛рдЬрджреВрддрд╣рд░реВрдорд╛ рд▓рд╛рдЧреВ рдЧрд░рд┐рдиреЗрдЫред

Istio рд╕реЗрд╡рд╛рд╣рд░реВрдХреЛ рд╕рдореНрдмрдиреНрдз

рд╣рд╛рдореАрд▓реЗ рд╕реЗрд╡рд╛рд╣рд░реВрд╕рдБрдЧ Istio рдХреЛ рд╕рдореНрдмрдиреНрдз рд╡рд░реНрдгрди рдЧрд░реЗрдХрд╛ рдЫреМрдВ, рддрд░ рдЙрд▓реНрдЯреЛ рд╣реЛрдЗрди: рд╕реЗрд╡рд╛рд╣рд░реВ рдХрд╕рд░реА Istio рд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рдЫрдиреН?

рдЗрдорд╛рдирджрд╛рд░реАрдкреВрд░реНрд╡рдХ рднрдиреНрдиреБрдкрд░реНрджрд╛, рд╕реЗрд╡рд╛рд╣рд░реВ Istio рдХреЛ рдЙрдкрд╕реНрдерд┐рддрд┐рдХреЛ рдмрд╛рд░реЗрдорд╛ рд╕рдЪреЗрдд рд╣реБрдиреНрдЫрдиреН рдЬрд╕реНрддреИ рдорд╛рдЫрд╛рд╣рд░реВ рдкрд╛рдиреАрдХрд╛ рд╣реБрдиреНрдЫрдиреН рдЬрдм рддрд┐рдиреАрд╣рд░реВрд▓реЗ рдЖрдлреИрд▓рд╛рдИ рд╕реЛрдзреНрдЫрдиреН, "рдЬреЗ рднрдП рдкрдирд┐ рдкрд╛рдиреА рдХреЗ рд╣реЛ?"

Istio рд╕рдВрдЧ microservices рдорд╛ рдлрд░реНрдХрдиреБрд╣реЛрд╕реНред рднрд╛рдЧ 1
рджреГрд╖реНрдЯрд╛рдиреНрдд рднрд┐рдХреНрдЯреЛрд░рд┐рдпрд╛ рджрд┐рдорд┐рддреНрд░рд╛рдХреЛрдкреМрд▓реЛрд╕:- рдкрд╛рдиреА рдХрд╕реНрддреЛ рд▓рд╛рдЧреНрдЫ ? - рдЬреЗ рднрдП рдкрдирд┐ рдкрд╛рдиреА рдХреЗ рд╣реЛ?

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

рдкрд░реНрдпрд╛рдкреНрдд рд╕рд┐рджреНрдзрд╛рдиреНрдд - рдпреЛ рдЬреНрдЮрд╛рди рд╡реНрдпрд╡рд╣рд╛рд░рдорд╛ рд░рд╛рдЦреМрдВ!

рдЕрднреНрдпрд╛рд╕рдорд╛ Istio

Istio рд▓рд╛рдИ рдХрдореНрддрд┐рдорд╛ 4 vCPU рд░ 8 GB RAM рдЙрдкрд▓рдмреНрдз рднрдПрдХреЛ Kubernetes рдХреНрд▓рд╕реНрдЯрд░ рдЪрд╛рд╣рд┐рдиреНрдЫред рджреНрд░реБрдд рд░реВрдкрдорд╛ рдХреНрд▓рд╕реНрдЯрд░ рд╕реЗрдЯрдЕрдк рдЧрд░реНрди рд░ рд▓реЗрдЦрдмрд╛рдЯ рдирд┐рд░реНрджреЗрд╢рдирд╣рд░реВ рдкрд╛рд▓рдирд╛ рдЧрд░реНрди, рдо Google рдХреНрд▓рд╛рдЙрдб рдкреНрд▓реЗрдЯрдлрд░реНрдо рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рд┐рдлрд╛рд░рд┐рд╕ рдЧрд░реНрджрдЫреБ, рдЬрд╕рд▓реЗ рдирдпрд╛рдБ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрд▓рд╛рдИ рдкреНрд░рд╕реНрддрд╛рд╡ рдЧрд░реНрджрдЫред рдирд┐: рд╢реБрд▓реНрдХ $ 300.

рдХреНрд▓рд╕реНрдЯрд░ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реЗрдкрдЫрд┐ рд░ рдХрдиреНрд╕реЛрд▓ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдорд╛рд░реНрдлрдд Kubernetes рдкрд╣реБрдБрдЪ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реЗрдкрдЫрд┐, рддрдкрд╛рдИрдВрд▓реЗ Helm рдкреНрдпрд╛рдХреЗрдЬ рдкреНрд░рдмрдиреНрдзрдХ рдорд╛рд░реНрдлрдд Istio рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

рд╣реЗрд▓рдо рд╕реНрдерд╛рдкрдирд╛

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

Istio рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрджреИ

рдмрд╛рдЯ Istio рд╕реНрд░реЛрддрд╣рд░реВ рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░реНрдиреБрд╣реЛрд╕реН рдкрдЫрд┐рд▓реНрд▓реЛ рд░рд┐рд▓реАрдЬ (рд╕рдВрд╕реНрдХрд░рдг рез.реж.рел рдорд╛ рдореВрд▓ рд▓реЗрдЦрдХрдХреЛ рд▓рд┐рдЩреНрдХ рд╣рд╛рд▓рдХреЛрдорд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░рд┐рдПрдХреЛ рдЫ, рдЕрд░реНрдерд╛рддреН рез.реж.рем - рд▓рдЧрднрдЧ рдЕрдиреБрд╡рд╛рджред), рд╕рд╛рдордЧреНрд░реАрд╣рд░реВ рдПрдХ рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реАрдорд╛ рдирд┐рдХрд╛рд▓реНрдиреБрд╣реЛрд╕реН, рдЬреБрди рдо рдЕрдмрджреЗрдЦрд┐ рдХрд▓ рдЧрд░реНрдиреЗрдЫреБ [istio-resources].

Istio рд╕реНрд░реЛрддрд╣рд░реВ рд╕рдЬрд┐рд▓реИ рдкрд╣рд┐рдЪрд╛рди рдЧрд░реНрди, 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 рдХреЛ рдкреНрд░рдореБрдЦ рдШрдЯрдХрд╣рд░реВ рдЖрдЙрдЯрдкреБрдЯ рдЧрд░реНрдиреЗрдЫ istio.yamlред рд╣рд╛рдореАрд▓реЗ рдирд┐рдореНрди рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрджреИ рдорд╛рдирдХ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдЖрдлреИрд▓рд╛рдИ рдЕрдиреБрд░реВрдк рдкрд░рд┐рдорд╛рд░реНрдЬрди рдЧрд░реНрдпреМрдВ:

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

рдЖрджреЗрд╢рдХреЛ рд╕рд╛рде рдЙрддреНрдкрдиреНрди рд╕реНрд░реЛрддрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реМрдВ:

$ kubectl apply -f istio.yaml

рдХреНрд▓рд╕реНрдЯрд░рдорд╛ Istio рдХреЛ рд╕реНрдерд╛рдкрдирд╛ рдкреВрд░рд╛ рднрдпреЛ! рд╕рдмреИ рдкреЛрдбрд╣рд░реВ рдиреЗрдорд╕реНрдкреЗрд╕рдорд╛ рдирднрдПрд╕рдореНрдо рдкрд░реНрдЦрдиреБрд╣реЛрд╕реН istio-system рдЧрд░реНрди рд╕рдХреНрд╖рдо рд╣реБрдиреЗрдЫ Running рд╡рд╛ Completedрддрд▓рдХреЛ рдЖрджреЗрд╢ рдЪрд▓рд╛рдПрд░:

$ kubectl get pods -n istio-system

рдЕрдм рд╣рд╛рдореА рдЕрд░реНрдХреЛ рдЦрдгреНрдбрдорд╛ рдЬрд╛рд░реА рд░рд╛рдЦреНрдирдХреЛ рд▓рд╛рдЧрд┐ рддрдпрд╛рд░ рдЫреМрдВ, рдЬрд╣рд╛рдБ рд╣рд╛рдореА рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреЗрдЫреМрдВ рд░ рдЪрд▓реНрдиреЗрдЫреМрдВред

рднрд╛рд╡рдирд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЖрд╡реЗрджрди рдХреЛ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛

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

рдПрдкреНрд▓рд┐рдХреЗрд╕рдирдорд╛ рдЪрд╛рд░ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрднрд┐рд╕реЗрд╕рд╣рд░реВ рдЫрдиреН:

  1. рд╕реЗрд╡рд╛ SA-рдлреНрд░рдиреНрдЯрдПрдиреНрдб, рдЬрд╕рд▓реЗ Reactjs рдПрдкреНрд▓рд┐рдХреЗрд╕рдирдХреЛ рдлреНрд░рдиреНрдЯрдПрдиреНрдб рд╕реЗрд╡рд╛ рдЧрд░реНрджрдЫ;
  2. рд╕реЗрд╡рд╛ SA-WebApp, рдЬрд╕рд▓реЗ рднрд╛рд╡рдирд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкреНрд░рд╢реНрдирд╣рд░реВ рд╕реЗрд╡рд╛ рдЧрд░реНрджрдЫ;
  3. рд╕реЗрд╡рд╛ SA- рддрд░реНрдХ, рдЬрд╕рд▓реЗ рдЖрдлреИрдВ рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрдЫ рднрд╛рд╡рдирд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг;
  4. рд╕реЗрд╡рд╛ SA-рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛, рдЬрд╕рд▓реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрдХреЛ рд╢реБрджреНрдзрддрд╛ рдмрд╛рд░реЗ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрдмрд╛рдЯ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрджрдЫред

Istio рд╕рдВрдЧ microservices рдорд╛ рдлрд░реНрдХрдиреБрд╣реЛрд╕реНред рднрд╛рдЧ 1

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

Istio рдмрд╛рдЯ рдкреНрд░реЛрдХреНрд╕реАрдХреЛ рд╕рд╛рде рдПрдЙрдЯрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЪрд▓рд╛рдЙрдБрджреИ

рд▓реЗрдЦрдорд╛ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдердк рдХрд╛рд░реНрдпрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐, рддрдкрд╛рдИрдВрдХреЛ рднрдгреНрдбрд╛рд░ рдХреНрд▓реЛрди рдЧрд░реНрдиреБрд╣реЛрд╕реН istio-masteryред рдпрд╕рд▓реЗ Kubernetes рд░ Istio рдХреЛ рд▓рд╛рдЧреА рдЖрд╡реЗрджрди рд░ рдкреНрд░рдХрдЯ рдЧрд░реНрджрдЫред

рд╕рд╛рдЗрдбрдХрд╛рд░рд╣рд░реВ рдШреБрд╕рд╛рдЙрдБрджреИ

рд╕рдореНрдорд┐рд▓рди рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ рд╕реНрд╡рдд: рд╡рд╛ рдореНрдпрд╛рдиреБрдЕрд▓реАред рд╕рд╛рдЗрдбрдХрд╛рд░ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрдорд╛ рд╕рдореНрдорд┐рд▓рд┐рдд рдЧрд░реНрди, рддрдкрд╛рдИрдВрд▓реЗ рдирд╛рдо рд╕реНрдерд╛рдирдорд╛ рд▓реЗрдмрд▓ рд╕реЗрдЯ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ 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

рджреГрд╖реНрдЯрд┐рдЧрдд рд░реВрдкрдорд╛ рдпреЛ рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ:

Istio рд╕рдВрдЧ microservices рдорд╛ рдлрд░реНрдХрдиреБрд╣реЛрд╕реНред рднрд╛рдЧ 1
рдПрдЙрдЯрд╛ рдкреЛрдбрдорд╛ рджреВрдд рдкреНрд░реЛрдХреНрд╕реА

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

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

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

Ingress рдЧреЗрдЯрд╡реЗ рдХрдореНрдкреЛрдиреЗрдиреНрдЯ рд░ рдпрд╕рд▓рд╛рдИ рдмрд╛рд╣рд┐рд░реА рд░реВрдкрдорд╛ рдлрд░реНрд╡рд╛рд░реНрдб рдЧрд░реНрдиреЗ рд╕реЗрд╡рд╛ Istio рд╕реНрдерд╛рдкрдирд╛рдХреЛ рдХреНрд░рдордорд╛ рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛред рд╕реЗрд╡рд╛рдХреЛ рдмрд╛рд╣реНрдп IP рдареЗрдЧрд╛рдирд╛ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрди, рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН:

$ 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}')

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

рдЧреЗрдЯрд╡реЗ рд╕реНрд░реЛрдд

рдЧреЗрдЯрд╡реЗ Kubernetes рдорд╛ CRD (рдХрд╕реНрдЯрдо рд░рд┐рд╕реЛрд░реНрд╕ рдбреЗрдлрд┐рдирд┐рд╢рди) рд╣реЛ, рдХреНрд▓рд╕реНрдЯрд░рдорд╛ Istio рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реЗрдкрдЫрд┐ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдЫ рд░ рдкреЛрд░реНрдЯрд╣рд░реВ, рдкреНрд░реЛрдЯреЛрдХрд▓ рд░ рд╣реЛрд╕реНрдЯрд╣рд░реВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрдиреЗ рдХреНрд╖рдорддрд╛ рд╕рдХреНрд╖рдо рдкрд╛рд░реЗрд░ рд╣рд╛рдореА рдЖрдЧрдорди рдЯреНрд░рд╛рдлрд┐рдХрд▓рд╛рдИ рдЕрдиреБрдорддрд┐ рджрд┐рди рдЪрд╛рд╣рдиреНрдЫреМрдВред

рд╣рд╛рдореНрд░реЛ рдЕрд╡рд╕реНрдерд╛рдорд╛, рд╣рд╛рдореА рд╕рдмреИ рд╣реЛрд╕реНрдЯрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдкреЛрд░реНрдЯ 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ред рдпрд╕ рдЪрдпрдирдХрд░реНрддрд╛рдХреЛ рд╕рд╛рде рд╣рд╛рдореА рдХреБрди рдЗрдиреНрдЧреНрд░реЗрд╕ рдЧреЗрдЯрд╡реЗрдорд╛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рд▓рд╛рдЧреВ рдЧрд░реНрдиреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВред рд╣рд╛рдореНрд░реЛ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдпреЛ Ingress рдЧреЗрдЯрд╡реЗ рдирд┐рдпрдиреНрддреНрд░рдХ рд╣реЛ, рдЬреБрди рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛ Istio рдорд╛ рд╕реНрдерд╛рдкрд┐рдд рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛред

рдирд┐рдореНрди рдЖрджреЗрд╢рд▓рд╛рдИ рдХрд▓ рдЧрд░реЗрд░ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рд▓рд╛рдЧреВ рдЧрд░рд┐рдПрдХреЛ рдЫ:

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

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

рднрд░реНрдЪреБрдЕрд▓ рд╕реЗрд╡рд╛ рд╕реНрд░реЛрдд

VirtualService рд▓реЗ Ingress Gateway рд▓рд╛рдИ рдХреНрд▓рд╕реНрдЯрд░ рднрд┐рддреНрд░ рдЕрдиреБрдорддрд┐ рджрд┐рдЗрдПрдХрд╛ рдЕрдиреБрд░реЛрдзрд╣рд░реВрд▓рд╛рдИ рдХрд╕рд░реА рд░реБрдЯ рдЧрд░реНрдиреЗ рднрдиреЗрд░ рдмрддрд╛рдЙрдБрдЫред

http-рдЧреЗрдЯрд╡реЗ рдорд╛рд░реНрдлрдд рдЖрдЙрдиреЗ рд╣рд╛рдореНрд░реЛ рдЖрд╡реЗрджрдирдХрд╛ рд▓рд╛рдЧрд┐ рдЕрдиреБрд░реЛрдзрд╣рд░реВ sa-frontend, sa-web-app рд░ sa-feedback рд╕реЗрд╡рд╛рд╣рд░реВрдорд╛ рдкрдард╛рдЗрдиреБрдкрд░реНрдЫ:

Istio рд╕рдВрдЧ microservices рдорд╛ рдлрд░реНрдХрдиреБрд╣реЛрд╕реНред рднрд╛рдЧ 1
VirtualServices рд╕рдВрдЧ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдорд╛рд░реНрдЧрд╣рд░реВ

SA-Frontend рдорд╛ рдкрдард╛рдЗрдиреБ рдкрд░реНрдиреЗ рдЕрдиреБрд░реЛрдзрд╣рд░реВ рд╣реЗрд░реМрдВ:

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

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдирд┐рдореНрди рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдЫ (sa-virtualservice-external.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. рдпреЛ VirtualService рдорд╛рд░реНрдлрдд рдЖрдЙрдиреЗ рдЕрдиреБрд░реЛрдзрд╣рд░реВрд▓рд╛рдИ рдЬрдирд╛рдЙрдБрдЫ http-рдЧреЗрдЯрд╡реЗ;
  2. ╨Т destination рдЕрдиреБрд░реЛрдз рдкрдард╛рдЗрдиреЗ рд╕реЗрд╡рд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░рд┐рдПрдХреЛ рдЫред

рднрдиреНрдиреБ: рдорд╛рдерд┐рдХреЛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдлрд╛рдЗрд▓рдорд╛ рднрдгреНрдбрд╛рд░ рдЧрд░рд┐рдПрдХреЛ рдЫ sa-virtualservice-external.yaml, рдЬрд╕рдорд╛ SA-WebApp рд░ SA-feedback рдорд╛ рд░рд╛рдЙрдЯрд┐рдЩрдХрд╛ тАЛтАЛрд▓рд╛рдЧрд┐ рд╕реЗрдЯрд┐рдЩрд╣рд░реВ рдкрдирд┐ рд╕рдорд╛рд╡реЗрд╢ рдЫрдиреН, рддрд░ рд╕рдВрдХреНрд╖рд┐рдкреНрддрддрд╛рдХрд╛ рд▓рд╛рдЧрд┐ рдпрд╣рд╛рдБ рд▓реЗрдЦрдорд╛ рдЫреЛрдЯреЛ рдкрд╛рд░рд┐рдПрдХреЛ рдЫред

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

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

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

Istio рд╕рдВрдЧ microservices рдорд╛ рдлрд░реНрдХрдиреБрд╣реЛрд╕реНред рднрд╛рдЧ 1
рдЕрдиреБрд░реЛрдз рдорд╛рд░реНрдЧрдХреЛ рд▓рд╛рдЧрд┐ Istio-IngressGateway рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди

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

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

Kiali: рдЕрд╡рд▓реЛрдХрди рдХреНрд╖рдорддрд╛

Kiali рдкреНрд░рд╢рд╛рд╕рдирд┐рдХ рдЗрдиреНрдЯрд░рдлреЗрд╕ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди, рдирд┐рдореНрди рдЖрджреЗрд╢ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН:

$ 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/, admin/admin рдХреЛ рд░реВрдкрдорд╛ рд▓рдЧ рдЗрди рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдпрд╣рд╛рдБ рддрдкрд╛рдИрдВрд▓реЗ рдзреЗрд░реИ рдЙрдкрдпреЛрдЧреА рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рдкрд╛рдЙрдиреБрд╣реБрдиреЗрдЫ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, Istio рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВрдХреЛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдЬрд╛рдБрдЪ рдЧрд░реНрди, рдиреЗрдЯрд╡рд░реНрдХ рдЕрдиреБрд░реЛрдзрд╣рд░реВ рдЕрд╡рд░реЛрдз рдЧрд░реНрдиреЗрдмрд╛рдЯ рд╕рдЩреНрдХрд▓рди рдЧрд░рд┐рдПрдХреЛ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕реЗрд╡рд╛рд╣рд░реВ рдХрд▓реНрдкрдирд╛ рдЧрд░реНрди, "рдХрд╕рд▓реЗ рдХрд╕рд▓рд╛рдИ рд╕рдореНрдкрд░реНрдХ рдЧрд░реНрджреИ рд╣реБрдиреБрд╣реБрдиреНрдЫ?", "рд╕реЗрд╡рд╛рдХреЛ рдХреБрди рд╕рдВрд╕реНрдХрд░рдг рдЕрдиреБрднрд╡ рдЧрд░рд┐рд░рд╣реЗрдХреЛ рдЫ рднрдиреНрдиреЗ рдкреНрд░рд╢реНрдирд╣рд░реВрдХреЛ рдЬрд╡рд╛рдл рдкрд╛рдЙрдиреБрд╣реЛрд╕реНред рдЕрд╕рдлрд▓рддрд╛?" рд░ рдпрд╕реНрддреИред рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, Grafana рдХреЛ рд╕рд╛рде рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рджреГрд╢реНрдп рдорд╛ рдЬрд╛рдиреБ рдЕрдШрд┐ Kiali рдХреЛ рдХреНрд╖рдорддрд╛рд╣рд░реБ рдХреЛ рдЕрдиреНрд╡реЗрд╖рдг рдЧрд░реНрдиреБрд╣реЛрд╕реНред

Istio рд╕рдВрдЧ microservices рдорд╛ рдлрд░реНрдХрдиреБрд╣реЛрд╕реНред рднрд╛рдЧ 1

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

Istio рдорд╛ рд╕рдВрдХрд▓рд┐рдд рдореЗрдЯреНрд░рд┐рдХреНрд╕ Prometheus рдорд╛ рдЬрд╛рдиреНрдЫ рд░ Grafana рд╕рдВрдЧ рдХрд▓реНрдкрдирд╛ рдЧрд░рд┐рдиреНрдЫред Grafana рдкреНрд░рд╢рд╛рд╕рдирд┐рдХ рдЗрдиреНрдЯрд░рдлреЗрд╕рдорд╛ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди, рддрд▓рдХреЛ рдЖрджреЗрд╢ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН рд░ рддреНрдпрд╕рдкрдЫрд┐ рдЦреЛрд▓реНрдиреБрд╣реЛрд╕реН 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

рдореЗрдиреБрдорд╛ рдХреНрд▓рд┐рдХ рдЧрд░реНрджреИ рдЧреГрд╣рдкреГрд╖реНрда рд╢реАрд░реНрд╖ рдмрд╛рдпрд╛рдБ рд░ рдЪрдпрди Istio рд╕реЗрд╡рд╛ рдбреНрдпрд╛рд╕рдмреЛрд░реНрдб рд╢реАрд░реНрд╖ рдмрд╛рдпрд╛рдБ рдХреБрдирд╛рдорд╛, рд╕реЗрд╡рд╛рдХреЛ рд╕рд╛рде рд╕реБрд░реБ рдЧрд░реНрдиреБрд╣реЛрд╕реН sa-web-appрд╕рдЩреНрдХрд▓рди рдореЗрдЯреНрд░рд┐рдХреНрд╕ рд╣реЗрд░реНрди:

Istio рд╕рдВрдЧ microservices рдорд╛ рдлрд░реНрдХрдиреБрд╣реЛрд╕реНред рднрд╛рдЧ 1

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

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

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

рдЕрдиреНрддрдорд╛, рд╕реЗрд╡рд╛рд╣рд░реВрдорд╛ рдЯреНрд░реЗрд╕рд┐рдЩ рдЕрдиреБрд░реЛрдзрд╣рд░реВ рд╣реЗрд░реМрдВред

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

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

Istio рд╕рдВрдЧ microservices рдорд╛ рдлрд░реНрдХрдиреБрд╣реЛрд╕реНред рднрд╛рдЧ 1
рдЕрдирд┐рдпрдорд┐рдд рдЕрд╕рдлрд▓ рдЕрдиреБрд░реЛрдзрдХреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг

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

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

Istio рд╕рдВрдЧ microservices рдорд╛ рдлрд░реНрдХрдиреБрд╣реЛрд╕реНред рднрд╛рдЧ 1
TraceId рдЕрдиреБрд░реЛрдз рдкрд╣рд┐рдЪрд╛рди рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ

Istio рд▓реЗ Jaeger Tracer рдХреЛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫ, рдЬрд╕рд▓реЗ рд╡рд┐рдХреНрд░реЗрддрд╛-рд╕реНрд╡рддрдиреНрддреНрд░ OpenTracing API рдлреНрд░реЗрдорд╡рд░реНрдХ рд▓рд╛рдЧреВ рдЧрд░реНрджрдЫред рддрдкрд╛рдЗрдБ рдирд┐рдореНрди рдЖрджреЗрд╢ рд╕рдВрдЧ Jaeger рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдиреНрдЯрд░рдлреЗрд╕ рдкрд╣реБрдБрдЪ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ:

$ 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/ рд░ рд╕реЗрд╡рд╛ рдЪрдпрди рдЧрд░реНрдиреБрд╣реЛрд╕реН sa-web-appред рдпрджрд┐ рд╕реЗрд╡рд╛ рдбреНрд░рдк-рдбрд╛рдЙрди рдореЗрдиреБрдорд╛ рджреЗрдЦрд╛рдЗрдПрдХреЛ рдЫреИрди рднрдиреЗ, рдкреГрд╖реНрдардорд╛ рдЧрддрд┐рд╡рд┐рдзрд┐ рджреЗрдЦрд╛рдЙрдиреБрд╣реЛрд╕реН/рдЙрддреНрдкрдиреНрди рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдЗрдиреНрдЯрд░рдлреЗрд╕ рдЕрдкрдбреЗрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рддреНрдпрд╕ рдкрдЫрд┐, рдмрдЯрдирдорд╛ рдХреНрд▓рд┐рдХ рдЧрд░реНрдиреБрд╣реЛрд╕реН рдЯреНрд░реЗрд╕рд╣рд░реВ рдлреЗрд▓рд╛ рдкрд╛рд░реНрдиреБрд╣реЛрд╕реН, рдЬрд╕рд▓реЗ рдирд╡реАрдирддрдо рдЯреНрд░реЗрд╕рд╣рд░реВ рджреЗрдЦрд╛рдЙрдиреЗрдЫ - рдХреБрдиреИ рдкрдирд┐ рдЪрдпрди рдЧрд░реНрдиреБрд╣реЛрд╕реН - рд╕рдмреИ рдЯреНрд░реЗрд╕рд╣рд░реВрдорд╛ рд╡рд┐рд╕реНрддреГрдд рдЬрд╛рдирдХрд╛рд░реА рджреЗрдЦрд╛ рдкрд░реНрдиреЗрдЫ:

Istio рд╕рдВрдЧ microservices рдорд╛ рдлрд░реНрдХрдиреБрд╣реЛрд╕реНред рднрд╛рдЧ 1

рдпреЛ рдЯреНрд░реЗрд╕рд▓реЗ рджреЗрдЦрд╛рдЙрдБрдЫ:

  1. рдЕрдиреБрд░реЛрдз рдЖрдЙрдБрдЫ istio-ingressgateway (рдпреЛ рдХреБрдиреИ рдПрдХ рд╕реЗрд╡рд╛рд╕рдБрдЧрдХреЛ рдкрд╣рд┐рд▓реЛ рдЕрдиреНрддрд░реНрдХреНрд░рд┐рдпрд╛ рд╣реЛ, рд░ рдЕрдиреБрд░реЛрдзрдХреЛ рд▓рд╛рдЧрд┐ рдЯреНрд░реЗрд╕ рдЖрдИрдбреА рдЙрддреНрдкрдиреНрди рд╣реБрдиреНрдЫ), рддреНрдпрд╕рдкрдЫрд┐ рдЧреЗрдЯрд╡реЗрд▓реЗ рд╕реЗрд╡рд╛рдорд╛ рдЕрдиреБрд░реЛрдз рдкрдард╛рдЙрдБрдЫред sa-web-app.
  2. рд╕реЗрд╡рд╛рдорд╛ sa-web-app рдЕрдиреБрд░реЛрдз рджреВрдд рд╕рд╛рдЗрдбрдХрд╛рд░ рджреНрд╡рд╛рд░рд╛ рдЙрдард╛рдЗрдиреНрдЫ, рд╕реНрдкреНрдпрд╛рдирдорд╛ "рдмрдЪреНрдЪрд╛" рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдиреНрдЫ (рдпрд╕реИрд▓реЗ рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ рдЯреНрд░реЗрд╕рд╣рд░реВрдорд╛ рджреЗрдЦреНрдЫреМрдВ) рд░ рдХрдиреНрдЯреЗрдирд░рдорд╛ рдкреБрди: рдирд┐рд░реНрджреЗрд╢рд┐рдд рдЧрд░рд┐рдиреНрдЫред sa-web-app. (span - Jaeger рдорд╛ рдХрд╛рдордХреЛ рддрд╛рд░реНрдХрд┐рдХ рдПрдХрд╛рдЗ, рдЬрд╕рдХреЛ рдирд╛рдо, рд╕рдЮреНрдЪрд╛рд▓рдирдХреЛ рд╕реБрд░реБ рд╕рдордп рд░ рдпрд╕рдХреЛ рдЕрд╡рдзрд┐ рдЫред рд╕реНрдкреНрдпрд╛рдирд╣рд░реВ рдиреЗрд╕реНрдЯ рд░ рдЕрд░реНрдбрд░ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рд╕реНрдкреНрдпрд╛рдирдХреЛ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдПрд╕рд╛рдЗрдХреНрд▓рд┐рдХ рдЧреНрд░рд╛рдлрд▓реЗ рдЯреНрд░реЗрд╕ рдмрдирд╛рдЙрдБрдЫред - рд▓рдЧрднрдЧред рдЕрдиреБрд╡рд╛рджред)
  3. рдпрд╣рд╛рдБ рдЕрдиреБрд░реЛрдз рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╢реЛрдзрди рдЧрд░рд┐рдПрдХреЛ рдЫ рднрд╛рд╡рдирд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдгред рдпреА рдЯреНрд░реЗрд╕рд╣рд░реВ рдкрд╣рд┐рд▓реЗ рдиреИ рдПрдкреНрд▓рд┐рдХреЗрд╕рдирджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рднрдЗрд╕рдХреЗрдХрд╛ рдЫрдиреН, рдЕрд░реНрдерд╛рддреН рддрд┐рдиреАрд╣рд░реВрд▓реЗ рдХреЛрдб рдкрд░рд┐рд╡рд░реНрддрди рдЖрд╡рд╢реНрдпрдХ рдЫред
  4. рдпрд╕ рдХреНрд╖рдг рджреЗрдЦрд┐, рдПрдХ POST рдЕрдиреБрд░реЛрдз рдорд╛ рдкреНрд░рд╛рд░рдореНрдн рдЧрд░рд┐рдПрдХреЛ рдЫ рд╕рд╛-рддрд░реНрдХред рдЯреНрд░реЗрд╕ рдЖрдИрдбреА рдмрд╛рдЯ рдлрд░реНрд╡рд╛рд░реНрдб рд╣реБрдиреБрдкрд░реНрдЫ sa-web-app.
  5. ...

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

Istio рд╕рдВрдЧ microservices рдорд╛ рдлрд░реНрдХрдиреБрд╣реЛрд╕реНред рднрд╛рдЧ 1
(A) Istio рд╣реЗрдбрд░рд╣рд░реВ рдлрд░реНрд╡рд╛рд░реНрдб рдЧрд░реНрди рдЬрд┐рдореНрдореЗрд╡рд╛рд░ рдЫ; (B) рд╕реЗрд╡рд╛рд╣рд░реВ рд╣реЗрдбрд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЬрд┐рдореНрдореЗрд╡рд╛рд░ рдЫрдиреН

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

рдирд┐рдореНрди рд╣реЗрдбрд░рд╣рд░реВрд▓рд╛рдИ рдзреНрдпрд╛рдирдорд╛ рд░рд╛рдЦреНрдиреБрдкрд░реНрдЫ:

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

рдпреЛ рдХреБрдиреИ рдЧрд╛рд╣реНрд░реЛ рдХрд╛рдо рдЫреИрди, рддрд░ рдпрд╕рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирд▓рд╛рдИ рд╕рд░рд▓ рдмрдирд╛рдЙрди рдкрд╣рд┐рд▓реЗ рдиреИ рдЫ рдзреЗрд░реИ рдкреБрд╕реНрддрдХрд╛рд▓рдпрд╣рд░реВ - рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, sa-web-app рд╕реЗрд╡рд╛рдорд╛, RestTemplate рдХреНрд▓рд╛рдЗрдиреНрдЯрд▓реЗ рдпреА рд╣реЗрдбрд░рд╣рд░реВ рдлрд░реНрд╡рд╛рд░реНрдб рдЧрд░реНрдЫ рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдХреЗрд╡рд▓ Jaeger рд░ OpenTracing рдкреБрд╕реНрддрдХрд╛рд▓рдпрд╣рд░реВ рдердкреНрдиреБрднрдпреЛ рднрдиреЗред рдЙрд╕рдХреЛ рд▓рдд.

рдзреНрдпрд╛рди рджрд┐рдиреБрд╣реЛрд╕реН рдХрд┐ рднрд╛рд╡рдирд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЕрдиреБрдкреНрд░рдпреЛрдЧрд▓реЗ рдлреНрд▓рд╛рд╕реНрдХ, рд╡рд╕рдиреНрдд, рд░ ASP.NET рдХреЛрд░рдорд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирд╣рд░реВ рджреЗрдЦрд╛рдЙрдБрдЫред

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

рдиреЛрдЯред рдЕрдиреБрд╡рд╛рджред: рдпрд╕ рдмрд╛рд░реЗ Rinor Maloku рдмрд╛рдЯ Istio рдорд╛ рд╕рд╛рдордЧреНрд░реАрдХреЛ рдЕрд░реНрдХреЛ рднрд╛рдЧрдорд╛ рдкрдвреНрдиреБрд╣реЛрд╕реН, рдЬрд╕рдХрд╛ рдЕрдиреБрд╡рд╛рджрд╣рд░реВ рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдпрдорд╛ рд╣рд╛рдореНрд░реЛ рдмреНрд▓рдЧрдорд╛ рдкрдЫреНрдпрд╛рдЙрдиреЗрдЫрдиреНред рдЕрджреНрдпрддрди (рдорд╛рд░реНрдЪ резрек): рдХреЛ рджреЛрд╕реНрд░реЛ рднрд╛рдЧ рдкрд╣рд┐рд▓реЗ рдиреИ рдкреНрд░рдХрд╛рд╢рд┐рдд рднрдПрдХреЛ рдЫред

рдЕрдиреБрд╡рд╛рджрдХрдмрд╛рдЯ PS

рд╣рд╛рдореНрд░реЛ рдмреНрд▓рдЧрдорд╛ рдкрдирд┐ рдкрдвреНрдиреБрд╣реЛрд╕реН:

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

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