Istio рд╕рд╣ microservices рд╡рд░ рдкрд░рдд. рднрд╛рдЧ 1

Istio рд╕рд╣ microservices рд╡рд░ рдкрд░рдд. рднрд╛рдЧ 1

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

рдЗрд╕реНрдЯрд┐рдУ тАФ Google, IBM рдЖрдгрд┐ Lyft рдЪреНрдпрд╛ рд╕рдВрдШрд╛рдВрдЪреНрдпрд╛ рд╕рд╣рдХрд╛рд░реНрдпрд╛рдиреЗ рд╡рд┐рдХрд╕рд┐рдд рдХреЗрд▓реЗрд▓рд╛ рдореБрдХреНрдд рд╕реНрд░реЛрдд рдкреНрд░рдХрд▓реНрдк. рд╣реЗ рдорд╛рдпрдХреНрд░реЛрд╕рд░реНрд╡реНрд╣рд┐рд╕реЗрд╕-рдЖрдзрд╛рд░рд┐рдд рдНрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕рдордзреНрдпреЗ рдЙрджреНрднрд╡рдгрд╛рд▒реНрдпрд╛ рдЧреБрдВрддрд╛рдЧреБрдВрддреАрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХрд░рддреЗ, рдЬрд╕реЗ рдХреА:

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

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

рдкреНрд░рдХрд▓реНрдк рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ: рдлреАрдбрдмреЕрдХ рд╡реИрд╢рд┐рд╖реНрдЯреНрдп рдЬреЛрдбрдгреНрдпрд╛рд╕рд╛рдареА рдХрд┐рддреА рд╡реЗрд│ рд▓рд╛рдЧрддреЛ?
рд╡рд┐рдХрд╕рдХ: рджреЛрди рд╕реНрдкреНрд░рд┐рдВрдЯ.

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

рдЦрд╛рд╕рджрд╛рд░: рдЕрд░реЗ, рдордЧ рдЙрддреНрдкрд╛рджрди рд╕реЗрд╡реЗрдордзреНрдпреЗ рд╣реЗ рд╡реИрд╢рд┐рд╖реНрдЯреНрдп рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХрд░реВрдпрд╛.

рдорд▓рд╛ рд╡рд╛рдЯрддреЗ рдХреА рдХрд▓реНрдкрдирд╛ рд╕реНрдкрд╖реНрдЯ рдЖрд╣реЗ: рдПрдХ рд╕реЗрд╡рд╛ рдЬреЛрдбрдгреНрдпрд╛рд╕рд╛рдареА рдЖрд╡рд╢реНрдпрдХ рдкрд╛рд╡рд▓реЗ рдЖрдгрд┐ рдкреНрд░рдпрддреНрдирд╛рдВрдЪреА рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рдЪрдВрдб рдЖрд╣реЗ. рдпрд╛ рд▓реЗрдЦрд╛рдд, рд╕реЗрд╡рд╛рдВрдордзреВрди Istio рд╡рд░ рдирдореВрдж рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╕рд░реНрд╡ рдХреНрд▓рд┐рд╖реНрдЯрддрд╛ (рдЬреЗ рд╡реНрдпрд╡рд╕рд╛рдп рддрд░реНрдХ рдореНрд╣рдгреВрди рд╣реЗрддреВ рдирд╛рд╣реА) рдХрд╕реЗ рдХрд╛рдвреВрди рдЯрд╛рдХрддреЗ рддреЗ рдЖрдореНрд╣реА рдкрд╛рд╣реВ.

Istio рд╕рд╣ microservices рд╡рд░ рдкрд░рдд. рднрд╛рдЧ 1

рд╢реЗрд░рд╛: рд╣рд╛ рд▓реЗрдЦ рдЕрд╕реЗ рдЧреГрд╣реАрдд рдзрд░рддреЛ рдХреА рддреБрдореНрд╣рд╛рд▓рд╛ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдЪреЗ рдХрд╛рд░реНрдп рдЬреНрдЮрд╛рди рдЖрд╣реЗ. рдЕрдиреНрдпрдерд╛, рдореА рд╡рд╛рдЪрдгреНрдпрд╛рдЪреА рд╢рд┐рдлрд╛рд░рд╕ рдХрд░рддреЛ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рд╢реА рдорд╛рдЭрд╛ рдкрд░рд┐рдЪрдп рдЖрдгрд┐ рддреНрдпрд╛рдирдВрддрд░рдЪ рд╣реА рд╕рд╛рдордЧреНрд░реА рд╡рд╛рдЪрдгреЗ рд╕реБрд░реВ рдареЗрд╡рд╛.

Istio рдХрд▓реНрдкрдирд╛

Istio рдирд╕рд▓реЗрд▓реНрдпрд╛ рдЬрдЧрд╛рдд, рдПрдХ рд╕реЗрд╡рд╛ рджреБрд╕рд░реНтАНрдпрд╛рд▓рд╛ рдереЗрдЯ рд╡рд┐рдирдВрддреА рдХрд░рддреЗ рдЖрдгрд┐ рдЕрдпрд╢рд╕реНрд╡реА рдЭрд╛рд▓реНрдпрд╛рд╕, рд╕реЗрд╡реЗрдиреЗ рддреА рд╕реНрд╡рддрдГ рд╣рд╛рддрд╛рд│рд▓реА рдкрд╛рд╣рд┐рдЬреЗ: рдирд╡реАрди рдкреНрд░рдпрддреНрди рдХрд░рд╛, рдХрд╛рд▓рдмрд╛рд╣реНрдп рдкреНрд░рджрд╛рди рдХрд░рд╛, рд╕рд░реНрдХрд┐рдЯ рдмреНрд░реЗрдХрд░ рдЙрдШрдбрд╛ рдЗ.

Istio рд╕рд╣ microservices рд╡рд░ рдкрд░рдд. рднрд╛рдЧ 1
Kubernetes рдордзреНрдпреЗ рдиреЗрдЯрд╡рд░реНрдХ рд░рд╣рджрд╛рд░реА

Istio рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЙрдкрд╛рдп рдСрдлрд░ рдХрд░рддреЗ, рдиреЗрдЯрд╡рд░реНрдХ рд╕рдВрдкреНрд░реЗрд╖рдгрд╛рдордзреНрдпреЗ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд░реВрди рд╕реЗрд╡рд╛рдВрдкрд╛рд╕реВрди рдкреВрд░реНрдгрдкрдгреЗ рд╡рд┐рднрдХреНрдд рдЖрдгрд┐ рдХрд╛рд░реНрдп рдХрд░рддреЗ. рдЖрдгрд┐ рдЕрд╢рд╛ рдкреНрд░рдХрд╛рд░реЗ рддреЗ рд▓рд╛рдЧреВ рдХрд░рддреЗ:

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

рдпрд╛ рдлрдХреНрдд рдХрд╛рд╣реА рд╢рдХреНрдпрддрд╛ рдЖрд╣реЗрдд (рдЦрд░реЛрдЦрд░ рдлрдХреНрдд рдХрд╛рд╣реА!) рддреБрдореНрд╣рд╛рд▓рд╛ рд╡реЗрдзрдгреНрдпрд╛рд╕рд╛рдареА. рдЖрддрд╛ рддрд╛рдВрддреНрд░рд┐рдХ рддрдкрд╢реАрд▓рд╛рдд рдЬрд╛рдКрдпрд╛!

Istio рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░

Istio рд╕рд░реНрд╡ рдиреЗрдЯрд╡рд░реНрдХ рдЯреНрд░реЕрдлрд┐рдХрдордзреНрдпреЗ рдЕрдбрдерд│рд╛ рдЖрдгрддреЗ рдЖрдгрд┐ рдкреНрд░рддреНрдпреЗрдХ рдкреЙрдбрдордзреНрдпреЗ рд╕рд╛рдЗрдбрдХрд╛рд░ рдХрдВрдЯреЗрдирд░рдЪреНрдпрд╛ рд╕реНрд╡рд░реВрдкрд╛рдд рдПрдХ рд╕реНрдорд╛рд░реНрдЯ рдкреНрд░реЙрдХреНрд╕реА рдЯрд╛рдХреВрди рддреНрдпрд╛рд╡рд░ рдирд┐рдпрдорд╛рдВрдЪрд╛ рд╕рдВрдЪ рд▓рд╛рдЧреВ рдХрд░рддреЗ. рд╕рд░реНрд╡ рдХреНрд╖рдорддрд╛ рд╕рдХреНрд░рд┐рдп рдХрд░рдгрд╛рд░реЗ рдкреНрд░реЙрдХреНрд╕реА рдлреЙрд░реНрдо a рдбреЗрдЯрд╛ рдкреНрд▓реЗрди, рдЖрдгрд┐ рддреЗ рд╡рд╛рдкрд░реВрди рдЧрддрд┐рд╢реАрд▓рдкрдгреЗ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд рдирд┐рдпрдВрддреНрд░рдг рд╡рд┐рдорд╛рди.

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

рдкреЙрдбреНрд╕рдордзреНрдпреЗ рдШрд╛рддрд▓реЗрд▓реНрдпрд╛ рдкреНрд░реЙрдХреНрд╕реА рдЗрд╕реНрдЯрд┐рдУрд▓рд╛ рдЖрдореНрд╣рд╛рд▓рд╛ рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдЧрд░рдЬрд╛ рд╕рд╣рдЬрдкрдгреЗ рдкреВрд░реНрдг рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддрд╛рдд. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдкреБрдиреНрд╣рд╛ рдкреНрд░рдпрддреНрди рдЖрдгрд┐ рд╕рд░реНрдХрд┐рдЯ рдмреНрд░реЗрдХрд░ рдлрдВрдХреНрд╢рдиреНрд╕ рддрдкрд╛рд╕реВ.

Istio рд╕рд╣ microservices рд╡рд░ рдкрд░рдд. рднрд╛рдЧ 1
рдПрдиреНрд╡реНрд╣реЙрдпрдордзреНрдпреЗ рдкреБрдиреНрд╣рд╛ рдкреНрд░рдпрддреНрди рдЖрдгрд┐ рд╕рд░реНрдХрд┐рдЯ рдмреНрд░реЗрдХрд┐рдВрдЧ рдХрд╕реЗ рд▓рд╛рдЧреВ рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд

рд╕рд╛рд░рд╛рдВрд╢

  1. рджреВрдд (рдЖрдореНрд╣реА рд╕рд╛рдЗрдбрдХрд╛рд░ рдХрдВрдЯреЗрдирд░рдордзреНрдпреЗ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдкреНрд░реЙрдХреНрд╕реАрдмрджреНрджрд▓ рдмреЛрд▓рдд рдЖрд╣реЛрдд, рдЬреЗ рдореНрд╣рдгреВрди рд╡рд┐рддрд░реАрдд рдХреЗрд▓реЗ рдЬрд╛рддреЗ рд╕реНрд╡рддрдВрддреНрд░ рдЙрддреНрдкрд╛рджрди - рдЕрдВрджрд╛рдЬреЗ рдЕрдиреБрд╡рд╛рдж.) рд╕реЗрд╡реЗрдЪреНрдпрд╛ рдкрд╣рд┐рд▓реНрдпрд╛ рдЙрджрд╛рд╣рд░рдгрд╛рд╕ рд╡рд┐рдирдВрддреА рдкрд╛рдард╡рддреЗ рдЖрдгрд┐ рдЕрдпрд╢рд╕реНрд╡реА рд╣реЛрддреЗ.
  2. рджреВрдд рд╕рд╛рдЗрдбрдХрд╛рд░ рдкреБрдиреНрд╣рд╛ рдкреНрд░рдпрддреНрди рдХрд░рддреЛ (рдкреБрдиреНрд╣рд╛ рдкреНрд░рдпрддреНрди рдХрд░рд╛). (1)
  3. рд╡рд┐рдирдВрддреА рдЕрдпрд╢рд╕реНрд╡реА рдЭрд╛рд▓реА рдЖрдгрд┐ рддреА рдХреЙрд▓ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдкреНрд░реЙрдХреНрд╕реАрдХрдбреЗ рдкрд░рдд рдХреЗрд▓реА рдЬрд╛рддреЗ.
  4. рд╣реЗ рд╕рд░реНрдХрд┐рдЯ рдмреНрд░реЗрдХрд░ рдЙрдШрдбрддреЗ рдЖрдгрд┐ рддреНрдпрд╛рдирдВрддрд░рдЪреНрдпрд╛ рд╡рд┐рдирдВрддреНрдпрд╛рдВрд╕рд╛рдареА рдкреБрдвреАрд▓ рд╕реЗрд╡реЗрд▓рд╛ рдХреЙрд▓ рдХрд░рддреЗ. (2)

рдпрд╛рдЪрд╛ рдЕрд░реНрде рдЕрд╕рд╛ рдХреА рддреБрдореНрд╣рд╛рд▓рд╛ рджреБрд╕рд░реА рдкреБрдиреНрд╣рд╛ рдкреНрд░рдпрддреНрди рдХрд░рдгреНрдпрд╛рдЪреА рд▓рд╛рдпрдмреНрд░рд░реА рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреА рдЧрд░рдЬ рдирд╛рд╣реА, рддреБрдореНрд╣рд╛рд▓рд╛ рд╕рд░реНрдХрд┐рдЯ рдмреНрд░реЗрдХрд┐рдВрдЧ рдЖрдгрд┐ рд╕рд░реНрд╡реНрд╣рд┐рд╕ рдбрд┐рд╕реНрдХрд╡рд░реАрдЪреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ X, Y рдХрд┐рдВрд╡рд╛ Z рдордзреНрдпреЗ рд╕реНрд╡рддрдГрдЪреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдХрд░рдгреНрдпрд╛рдЪреА рдЧрд░рдЬ рдирд╛рд╣реА. рд╣реЗ рд╕рд░реНрд╡ рдЖрдгрд┐ рдмрд░реЗрдЪ рдХрд╛рд╣реА рдмреЙрдХреНрд╕рдЪреНрдпрд╛ рдмрд╛рд╣реЗрд░ рдЙрдкрд▓рдмреНрдз рдЖрд╣реЗ. Istio рдордзреНрдпреЗ рдЖрдгрд┐ рдЖрд╡рд╢реНрдпрдХ рдирд╛рд╣реА рдирд╛рд╣реА рдХреЛрдбрдордзреАрд▓ рдмрджрд▓.

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

рдЖрдгрд┐ рд╢реЗрд╡рдЯреА рддреБрдореНрд╣реА рд╡рд┐рдЪрд╛рд░рд╛рд▓: "рддреЗ рд╕рд╛рдиреБрдХреВрд▓ рдХрд░рдгреНрдпрд╛рдпреЛрдЧреНрдп рдЖрд╣реЗ рдХрд╛?"

рдЖрддрд╛ рддреБрдореНрд╣реА рд╕рдореБрджреНрд░рд╛рдЪреНрдпрд╛ рдкреНрд░рд╡рд╛рд╕рд╛рд╕рд╛рдареА рддрдпрд╛рд░ рдЖрд╣рд╛рдд, рдЪрд▓рд╛ рдХрдВрдЯреНрд░реЛрд▓ рдкреНрд▓реЗрдирд╢реА рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдК рдпрд╛.

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

рдпрд╛рдд рддреАрди рдШрдЯрдХ рдЕрд╕рддрд╛рдд: рдкрд╛рдпрд▓рдЯ, рдорд┐рдХреНрд╕рд░ ╨╕ рдХрд┐рд▓реНрд▓рд╛, рдЬреЗ рдорд╛рд░реНрдЧ рд░рд╣рджрд╛рд░реАрд╕рд╛рдареА рджреВрддрд╛рдВрдирд╛ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдзреЛрд░рдгрд╛рдВрдЪреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рдЯреЗрд▓рд┐рдореЗрдЯреНрд░реА рдбреЗрдЯрд╛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдПрдХрддреНрд░ рдХрд╛рдо рдХрд░рддрд╛рдд. рдпреЛрдЬрдирд╛рдмрджреНрдзрд░рд┐рддреНрдпрд╛ рд╣реЗ рд╕рд░реНрд╡ рдЕрд╕реЗ рджрд┐рд╕рддреЗ:

Istio рд╕рд╣ microservices рд╡рд░ рдкрд░рдд. рднрд╛рдЧ 1
рдбреЗрдЯрд╛ рдкреНрд▓реЗрдирд╕рд╣ рдирд┐рдпрдВрддреНрд░рдг рд╡рд┐рдорд╛рдирд╛рдЪрд╛ рдкрд░рд╕реНрдкрд░рд╕рдВрд╡рд╛рдж

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

Istio рд╕реЗрд╡рд╛рдВрдЪрд╛ рд╕рдВрдмрдВрдз

рдЖрдореНрд╣реА рд╕реЗрд╡рд╛рдВрд╢реА рдЗрд╕реНрдЯрд┐рдУрдЪрд╛ рд╕рдВрдмрдВрдз рд╡рд░реНрдгрди рдХреЗрд▓рд╛ рдЖрд╣реЗ, рдкрд░рдВрддреБ рдЙрд▓рдЯ рдирд╛рд╣реА: рд╕реЗрд╡рд╛ рдЗрд╕реНрдЯрд┐рдУрд╢реА рдХрд╢рд╛ рд╕рдВрдмрдВрдзрд┐рдд рдЖрд╣реЗрдд?

рдкреНрд░рд╛рдорд╛рдгрд┐рдХрдкрдгреЗ рд╕рд╛рдВрдЧрд╛рдпрдЪреЗ рддрд░, рд╕реЗрд╡рд╛рдВрдирд╛ рдЗрд╕реНрдЯрд┐рдУрдЪреНрдпрд╛ рдЙрдкрд╕реНрдерд┐рддреАрдЪреА рдЬрд╛рдгреАрд╡ рдЕрд╕рддреЗ рдЬрд╕реЗ рдорд╛рд╕реЗ рдкрд╛рдгреНрдпрд╛рдЪреЗ рдЕрд╕рддрд╛рдд рдЬреЗрд╡реНрд╣рд╛ рддреЗ рд╕реНрд╡рддрдГрд▓рд╛ рд╡рд┐рдЪрд╛рд░рддрд╛рдд, "рддрд░реАрд╣реА рдкрд╛рдгреА рдХрд╛рдп рдЖрд╣реЗ?"

Istio рд╕рд╣ microservices рд╡рд░ рдкрд░рдд. рднрд╛рдЧ 1
рдЪрд┐рддреНрд░рдг рд╡реНрд╣рд┐рдХреНрдЯреЛрд░рд┐рдпрд╛ рджрд┐рдорд┐рддреНрд░рдХреЛрдкреМрд▓реЛрд╕:- рддреБрд▓рд╛ рдкрд╛рдгреА рдХрд╕рдВ рдЖрд╡рдбрддрдВ? - рддрд░реАрд╣реА рдкрд╛рдгреА рдореНрд╣рдгрдЬреЗ рдХрд╛рдп?

рдЕрд╢рд╛ рдкреНрд░рдХрд╛рд░реЗ, рдЖрдкрдг рдХрд╛рд░реНрдпрд░рдд рдХреНрд▓рд╕реНрдЯрд░ рдШреЗрдК рд╢рдХрддрд╛ рдЖрдгрд┐ Istio рдШрдЯрдХ рддреИрдирд╛рдд рдХреЗрд▓реНрдпрд╛рдирдВрддрд░, рддреНрдпрд╛рдордзреНрдпреЗ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рд╕реЗрд╡рд╛ рдХрд╛рд░реНрдп рдХрд░рдд рд░рд╛рд╣рддреАрд▓ рдЖрдгрд┐ рд╣реЗ рдШрдЯрдХ рдХрд╛рдвреВрди рдЯрд╛рдХрд▓реНрдпрд╛рдирдВрддрд░, рд╕рд░реНрд╡рдХрд╛рд╣реА рдкреБрдиреНрд╣рд╛ рдареАрдХ рд╣реЛрдИрд▓. рд╣реЗ рд╕реНрдкрд╖реНрдЯ рдЖрд╣реЗ рдХреА рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд рдЖрдкрдг Istio рджреНрд╡рд╛рд░реЗ рдкреНрд░рджрд╛рди рдХреЗрд▓реЗрд▓реНрдпрд╛ рдХреНрд╖рдорддрд╛ рдЧрдорд╛рд╡рд╛рд▓.

рдкреБрд░реЗрд╕рд╛ рд╕рд┐рджреНрдзрд╛рдВрдд - рдЪрд▓рд╛ рд╣реЗ рдЬреНрдЮрд╛рди рд╡реНрдпрд╡рд╣рд╛рд░рд╛рдд рдЖрдгреВрдпрд╛!

рд╕рд░рд╛рд╡ рдордзреНрдпреЗ Istio

Istio рд▓рд╛ рдХрд┐рдорд╛рди 4 vCPUs рдЖрдгрд┐ 8 GB RAM рдЙрдкрд▓рдмреНрдз рдЕрд╕рд▓реЗрд▓реЗ Kubernetes рдХреНрд▓рд╕реНрдЯрд░ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдХреНрд▓рд╕реНрдЯрд░ рджреНрд░реБрддрдкрдгреЗ рд╕реЗрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рд▓реЗрдЦрд╛рддреАрд▓ рд╕реВрдЪрдирд╛рдВрдЪреЗ рдЕрдиреБрд╕рд░рдг рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдореА Google рдХреНрд▓рд╛рдЙрдб рдкреНрд▓реЕрдЯрдлреЙрд░реНрдо рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреА рд╢рд┐рдлрд╛рд░рд╕ рдХрд░рддреЛ, рдЬреЗ рдирд╡реАрди рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдирд╛ рдСрдлрд░ рдХрд░рддреЗ рд╡рд┐рдирд╛рдореВрд▓реНрдп $300.

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

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

рддреБрдордЪреНрдпрд╛ рд╕рдВрдЧрдгрдХрд╛рд╡рд░ рд╣реЗрд▓реНрдо рдХреНрд▓рд╛рдпрдВрдЯ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рд╛, рдЬрд╕реЗ рдордзреНрдпреЗ рд╡рд░реНрдгрди рдХреЗрд▓реЗ рдЖрд╣реЗ рдЕрдзрд┐рдХреГрдд рджрд╕реНрддрдРрд╡рдЬреАрдХрд░рдг. рдЖрдореНрд╣реА рдкреБрдвреАрд▓ рд╡рд┐рднрд╛рдЧрд╛рдд Istio рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рд╡реНрдпреБрддреНрдкрдиреНрди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдпрд╛рдЪрд╛ рд╡рд╛рдкрд░ рдХрд░реВ.

Istio рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдд рдЖрд╣реЗ

рд╡рд░реВрди Istio рд╕рдВрд╕рд╛рдзрдиреЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рд╛ рдирд╡реАрдирддрдо рдкреНрд░рдХрд╛рд╢рди (1.0.5 рдЖрд╡реГрддреНрддреАрдЪрд╛ рдореВрд│ рд▓реЗрдЦрдХрд╛рдЪрд╛ рджреБрд╡рд╛ рд╕рдзреНрдпрд╛рдЪреНрдпрд╛ рдЖрд╡реГрддреНрддреАрд╡рд░ рдмрджрд▓рд▓рд╛ рдЖрд╣реЗ, рдореНрд╣рдгрдЬреЗ 1.0.6 - рдЕрдВрджрд╛рдЬреЗ рдЕрдиреБрд╡рд╛рдж.), рд╕рд╛рдордЧреНрд░реА рдПрдХрд╛ рдбрд┐рд░реЗрдХреНрдЯрд░реАрдордзреНрдпреЗ рдХрд╛рдврд╛, рдЬреНрдпрд╛рд▓рд╛ рдореА рдпрд╛рдкреБрдвреЗ рдХреЙрд▓ рдХрд░реЗрди [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

рдЖрддрд╛ рдЖрдореНрд╣реА рдкреБрдвреАрд▓ рд╡рд┐рднрд╛рдЧрд╛рдд рд╕реБрд░реВ рдареЗрд╡рдгреНрдпрд╛рд╕рд╛рдареА рддрдпрд╛рд░ рдЖрд╣реЛрдд, рдЬрд┐рдереЗ рдЖрдореНрд╣реА рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реБрд░реВ рдХрд░реВ.

рд╕реЗрдВрдЯрд┐рдореЗрдВрдЯ рдЕреЕрдирд╛рд▓рд┐рд╕рд┐рд╕ рдНрдкреНрд▓рд┐рдХреЗрд╢рдирдЪреЗ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░

рдЖрдзреАрдЪ рдирдореВрдж рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╕реЗрдВрдЯрд┐рдореЗрдВрдЯ рдЕреЕрдирд╛рд▓рд┐рд╕рд┐рд╕ рдорд╛рдпрдХреНрд░реЛрд╕рд░реНрд╡реНрд╣рд┐рд╕ рдНрдкреНрд▓рд┐рдХреЗрд╢рдирдЪреЗ рдЙрджрд╛рд╣рд░рдг рд╡рд╛рдкрд░реВ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдЪрд╛ рдкрд░рд┐рдЪрдп рд▓реЗрдЦ. рд╕рд░рд╛рд╡ рдордзреНрдпреЗ Istio рдЪреНрдпрд╛ рдХреНрд╖рдорддрд╛ рджрд░реНрд╢рд╡рд┐рдгреНрдпрд╛рд╕рд╛рдареА рддреЗ рдкреБрд░реЗрд╕реЗ рдЬрдЯрд┐рд▓ рдЖрд╣реЗ.

рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдд рдЪрд╛рд░ рд╕реВрдХреНрд╖реНрдо рд╕реЗрд╡рд╛рдВрдЪрд╛ рд╕рдорд╛рд╡реЗрд╢ рдЖрд╣реЗ:

  1. рд╕реЗрд╡рд╛ рдПрд╕рдП-рдлреНрд░рдВрдЯрдПрдВрдб, рдЬреЗ Reactjs рдНрдкреНрд▓рд┐рдХреЗрд╢рдирдЪреНрдпрд╛ рдлреНрд░рдВрдЯрдПрдВрдбрд▓рд╛ рд╕рд░реНрд╡реНрд╣ рдХрд░рддреЗ;
  2. рд╕реЗрд╡рд╛ SA-WebApp, рдЬреЗ рднрд╛рд╡рдирд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкреНрд░рд╢реНрдирд╛рдВрдЪреА рд╕реЗрд╡рд╛ рджреЗрддреЗ;
  3. рд╕реЗрд╡рд╛ рдПрд╕рдП- рддрд░реНрдХрд╢рд╛рд╕реНрддреНрд░, рдЬреЗ рд╕реНрд╡рддрдГ рдХрд╛рд░реНрдп рдХрд░рддреЗ рднрд╛рд╡рдирд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг;
  4. рд╕реЗрд╡рд╛ SA- рдЕрднрд┐рдкреНрд░рд╛рдп, рдЬреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рдЪреНрдпрд╛ рдЕрдЪреВрдХрддреЗрдмрджреНрджрд▓ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдХрдбреВрди рдЕрднрд┐рдкреНрд░рд╛рдп рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ.

Istio рд╕рд╣ microservices рд╡рд░ рдкрд░рдд. рднрд╛рдЧ 1

рдпрд╛ рдЖрдХреГрддреАрдордзреНрдпреЗ, рд╕реЗрд╡рд╛рдВрд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, рдЖрдореНрд╣реА рдЗрдВрдЧреНрд░реЗрд╕ рдХрдВрдЯреНрд░реЛрд▓рд░ рджреЗрдЦреАрд▓ рдкрд╛рд╣рддреЛ, рдЬреЛ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдордзреНрдпреЗ рдпреЛрдЧреНрдп рд╕реЗрд╡рд╛рдВрд╕рд╛рдареА рдпреЗрдгрд╛рд░реНтАНрдпрд╛ рд╡рд┐рдирдВрддреНрдпрд╛ рдкрд╛рдард╡рддреЛ. Istio рддреНрдпрд╛рдЪреНрдпрд╛ Ingress Gateway рдордзреНрдпреЗ рд╕рдорд╛рди рд╕рдВрдХрд▓реНрдкрдирд╛ рд╡рд╛рдкрд░рддреЗ, рдЬреНрдпрд╛рдЪреЗ рдЕрдзрд┐рдХ рддрдкрд╢реАрд▓ рдкреБрдвреЗ рдпреЗрддреАрд▓.

Istio рдХрдбреВрди рдкреНрд░реЙрдХреНрд╕реАрд╕рд╣ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЪрд╛рд▓рд╡рд┐рдд рдЖрд╣реЗ

рд▓реЗрдЦрд╛рдд рдирдореВрдж рдХреЗрд▓реЗрд▓реНрдпрд╛ рдкреБрдвреАрд▓ рдСрдкрд░реЗрд╢рдиреНрд╕рд╕рд╛рдареА, рддреБрдордЪреЗ рднрд╛рдВрдбрд╛рд░ рдХреНрд▓реЛрди рдХрд░рд╛ istio-mastery. рдпрд╛рдд рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдЖрдгрд┐ рдЗрд╕реНрдЯрд┐рдУрд╕рд╛рдареА рдНрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрдгрд┐ рдореЕрдирд┐рдлреЗрд╕реНрдЯ рдЖрд╣реЗрдд.

рд╕рд╛рдЗрдбрдХрд╛рд░ рдШрд╛рд▓рдд рдЖрд╣реЗ

рдЕрдВрддрд░реНрднреВрдд рдХрд░рддрд╛ рдпреЗрддреЗ рдЖрдкреЛрдЖрдк рдХрд┐рдВрд╡рд╛ рд╕реНрд╡рд╣рд╕реНрддреЗ. рд╕рд╛рдЗрдбрдХрд╛рд░ рдХрдВрдЯреЗрдирд░ рд╕реНрд╡рдпрдВрдЪрд▓рд┐рддрдкрдгреЗ рдШрд╛рд▓рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣рд╛рд▓рд╛ рдиреЗрдорд╕реНрдкреЗрд╕рд╡рд░ рд▓реЗрдмрд▓ рд╕реЗрдЯ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ 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 рд╡реИрд╢рд┐рд╖реНрдЯреНрдпреЗ рдЬрд╕реЗ рдХреА рд░рд╛рдЙрдЯрд┐рдВрдЧ, рд▓реЛрдб рдмреЕрд▓рдиреНрд╕рд┐рдВрдЧ, рд╕реБрд░рдХреНрд╖рд╛ рдЖрдгрд┐ рдЗрдирдХрдорд┐рдВрдЧ рдЯреНрд░реЕрдлрд┐рдХрд╕рд╛рдареА рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ рд╕рдХреНрд╖рдо рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ.

рдЗрдВрдЧреНрд░реЗрд╕ рдЧреЗрдЯрд╡реЗ рдШрдЯрдХ рдЖрдгрд┐ рддреЗ рдмрд╛рд╣реЗрд░реВрди рдкреБрдвреЗ рдиреЗрдгрд╛рд░реА рд╕реЗрд╡рд╛ рдХреНрд▓рд╕реНрдЯрд░рдордзреНрдпреЗ 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

рдЖрдореНрд╣реА рд╣рд╛ IP рд╡рд╛рдкрд░реВрди рдНрдкреНрд▓рд┐рдХреЗрд╢рди рдНрдХреНрд╕реЗрд╕ рдХрд░рдгреЗ рд╕реБрд░реВ рдареЗрд╡реВ (рдореА рддреНрдпрд╛рдЪрд╛ рд╕рдВрджрд░реНрдн EXTERNAL-IP рдореНрд╣рдгреВрди рджреЗрдИрди), рддреНрдпрд╛рдореБрд│реЗ рд╕реЛрдпреАрд╕рд╛рдареА рдЖрдореНрд╣реА рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓рдордзреНрдпреЗ рдореВрд▓реНрдп рд▓рд┐рд╣реВ:

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

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

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

рдЧреЗрдЯрд╡реЗ рд╣реЗ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдордзреАрд▓ рдПрдХ 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. рдпрд╛ рд╕рд┐рд▓реЗрдХреНрдЯрд░рдЪреНрдпрд╛ рд╕рд╣рд╛рдпреНрдпрд╛рдиреЗ рдЖрдкрдг рдХреЛрдгрддреНрдпрд╛ рдЗрдВрдЧреНрд░реЗрд╕ рдЧреЗрдЯрд╡реЗрд╡рд░ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рд▓рд╛рдЧреВ рдХрд░рд╛рдпрдЪреЗ рддреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реВ рд╢рдХрддреЛ. рдЖрдордЪреНрдпрд╛ рдмрд╛рдмрддреАрдд, рд╣реЗ рдЗрдВрдЧреНрд░реЗрд╕ рдЧреЗрдЯрд╡реЗ рдХрдВрдЯреНрд░реЛрд▓рд░ рдЖрд╣реЗ, рдЬреЗ рдЗрд╕реНрдЯрд┐рдУрдордзреНрдпреЗ рдбреАрдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░ рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рд╣реЛрддреЗ.

рдЦрд╛рд▓реАрд▓ рдХрдорд╛рдВрдб рдХреЙрд▓ рдХрд░реВрди рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рд▓рд╛рдЧреВ рдХреЗрд▓реЗ рдЬрд╛рддреЗ:

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

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

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

рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рд╕рд░реНрд╡реНрд╣рд┐рд╕ рдХреНрд▓рд╕реНрдЯрд░рдордзреНрдпреЗ рдкрд░рд╡рд╛рдирдЧреА рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рд╡рд┐рдирдВрддреНрдпрд╛ рдХрд╢рд╛ рдорд╛рд░реНрдЧрд╛рдиреЗ рдХрд░рд╛рдпрдЪреНрдпрд╛ рд╣реЗ рдЗрдВрдЧреНрд░реЗрд╕ рдЧреЗрдЯрд╡реЗрд▓рд╛ рд╕рд╛рдВрдЧрддреЗ.

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. рдпрд╛ рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рд╕рд░реНрд╡реНрд╣рд┐рд╕рджреНрд╡рд╛рд░реЗ рдпреЗрдгрд╛рд▒реНрдпрд╛ рд╡рд┐рдирдВрддреНрдпрд╛рдВрдЪрд╛ рд╕рдВрджрд░реНрдн рдЖрд╣реЗ 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

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

Istio рд╕рд╣ microservices рд╡рд░ рдкрд░рдд. рднрд╛рдЧ 1
рд╡рд┐рдирдВрддреА рд░рд╛рдЙрдЯрд┐рдВрдЧрд╕рд╛рдареА Istio-IngressGateway рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди

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

рдкреБрдвреЗ рдЬрд╛рдгреНрдпрд╛рдкреВрд░реНрд╡реА, рд░рд╣рджрд╛рд░реА рдирд┐рд░реНрдорд╛рдг рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЕреЕрдкрд╕рд╣ рдереЛрдбрд╛рд╕рд╛ рдЦреЗрд│рд╛. (рддреНрдпрд╛рдЪреА рдЙрдкрд╕реНрдерд┐рддреА рдкреБрдвреАрд▓ рдХреНрд░рд┐рдпрд╛рдВрдордзреНрдпреЗ рд╕реНрдкрд╖реНрдЯрддреЗрд╕рд╛рдареА рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ - рдЕрдВрджрд╛рдЬреЗ рднрд╛рд╖рд╛рдВрддрд░.).

рдХрд┐рдпрд╛рд▓реА: рдирд┐рд░реАрдХреНрд╖рдгрдХреНрд╖рдорддрд╛

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/, рдкреНрд░рд╢рд╛рд╕рдХ/рдкреНрд░рд╢рд╛рд╕рдХ рдореНрд╣рдгреВрди рд▓реЙрдЧ рдЗрди рдХрд░рд╛. рдпреЗрдереЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдЕрдиреЗрдХ рдЙрдкрдпреБрдХреНрдд рд╡реИрд╢рд┐рд╖реНрдЯреНрдпреЗ рдЖрдврд│рддреАрд▓, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, 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. (рдХрд╛рд▓рд╛рд╡рдзреА - рдЬреЗрдЧрд░рдордзреАрд▓ рдХрд╛рдорд╛рдЪреЗ рддрд╛рд░реНрдХрд┐рдХ рдпреБрдирд┐рдЯ, рдЬреНрдпрд╛рдЪреЗ рдирд╛рд╡, рдСрдкрд░реЗрд╢рди рд╕реБрд░реВ рд╣реЛрдгреНрдпрд╛рдЪреА рд╡реЗрд│ рдЖрдгрд┐ рддреНрдпрд╛рдЪрд╛ рдХрд╛рд▓рд╛рд╡рдзреА рдЖрд╣реЗ. рд╕реНрдкреЕрди рдиреЗрд╕реНрдЯреЗрдб рдЖрдгрд┐ рдСрд░реНрдбрд░ рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд. рд╕реНрдкреЕрдиреНрд╕рдЪрд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдЕреЕрд╕рд╛рдпрдХреНрд▓рд┐рдХ рдЖрд▓реЗрдЦ рдЯреНрд░реЗрд╕ рдмрдирд╡рддреЛ. - рдЕрдВрджрд╛рдЬреЗ рдЕрдиреБрд╡рд╛рдж.)
  3. рдпреЗрдереЗ рд╡рд┐рдирдВрддреА рдкрджреНрдзрддреАрджреНрд╡рд╛рд░реЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗрд▓реА рдЬрд╛рддреЗ рднрд╛рд╡рдирд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг. рд╣реЗ рдЯреНрд░реЗрд╕ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рджреНрд╡рд╛рд░реЗ рдЖрдзреАрдЪ рд╡реНрдпреБрддреНрдкрдиреНрди рдХреЗрд▓реЗ рдЖрд╣реЗрдд, рдореНрд╣рдгрдЬреЗ. рддреНрдпрд╛рдВрдирд╛ рдХреЛрдб рдмрджрд▓ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗрдд.
  4. рдпрд╛ рдХреНрд╖рдгрд╛рдкрд╛рд╕реВрди, POST рд╡рд┐рдирдВрддреА рд╕реБрд░реВ рдХреЗрд▓реА рдЖрд╣реЗ рддрд░реНрдХрд╢рд╛рд╕реНрддреНрд░. рдЯреНрд░реЗрд╕ рдЖрдпрдбреА рдХрдбреВрди рдлреЙрд░рд╡рд░реНрдб рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ sa-web-app.
  5. ...

рд╢реЗрд░рд╛: рдЪрд░рдг 4 рдордзреНрдпреЗ, рдНрдкреНрд▓рд┐рдХреЗрд╢рдирдиреЗ Istio рджреНрд╡рд╛рд░реЗ рд╡реНрдпреБрддреНрдкрдиреНрди рдХреЗрд▓реЗрд▓реЗ рд╢реАрд░реНрд╖рд▓реЗрдЦ рдкрд╣рд╛рд╡реЗ рдЖрдгрд┐ рдЦрд╛рд▓реАрд▓ рдкреНрд░рддрд┐рдореЗрдордзреНрдпреЗ рджрд░реНрд╢рд╡рд┐рд▓реНрдпрд╛рдкреНрд░рдорд╛рдгреЗ рддреНрдпрд╛рдВрдирд╛ рдкреБрдвреАрд▓ рд╡рд┐рдирдВрддреНрдпрд╛рдВрдХрдбреЗ рдкрд╛рдард╡рд╛рд╡реЗ:

Istio рд╕рд╣ microservices рд╡рд░ рдкрд░рдд. рднрд╛рдЧ 1
(рдП) рд╣реЗрдбрд░ рдлреЙрд░рд╡рд░реНрдб рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА Istio рдЬрдмрд╛рдмрджрд╛рд░ рдЖрд╣реЗ; (рдм) рд╕реЗрд╡рд╛ рд╢реАрд░реНрд╖рд▓реЗрдЦрд╛рдВрд╕рд╛рдареА рдЬрдмрд╛рдмрджрд╛рд░ рдЖрд╣реЗрдд

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 рд╕реЗрд╡реЗрдордзреНрдпреЗ, рддреБрдореНрд╣реА рдлрдХреНрдд Jaeger рдЖрдгрд┐ OpenTracing рд▓рд╛рдпрдмреНрд░рд░реА рдЬреЛрдбрд▓реНрдпрд╛рд╕, RestTemplate рдХреНрд▓рд╛рдпрдВрдЯ рд╣реЗ рд╣реЗрдбрд░ рдлреЙрд░рд╡рд░реНрдб рдХрд░рддреЛ рддреНрдпрд╛рдЪреА рд╡реНрдпрд╕рдиреЗ.

рд▓рдХреНрд╖рд╛рдд рдШреНрдпрд╛ рдХреА рд╕реЗрдВрдЯрд┐рдореЗрдВрдЯ рдЕреЕрдирд╛рд▓рд┐рд╕рд┐рд╕ рдНрдкреНрд▓рд┐рдХреЗрд╢рди рдлреНрд▓рд╛рд╕реНрдХ, рд╕реНрдкреНрд░рд┐рдВрдЧ рдЖрдгрд┐ ASP.NET рдХреЛрдЕрд░рдордзреНрдпреЗ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдЪреЗ рдкреНрд░рджрд░реНрд╢рди рдХрд░рддреЗ.

рдЖрддрд╛ рд╣реЗ рд╕реНрдкрд╖реНрдЯ рдЭрд╛рд▓реЗ рдЖрд╣реЗ рдХреА рдЖрдкрдг рдмреЙрдХреНрд╕рдордзреВрди рдХрд╛рдп рдорд┐рд│рд╡реВ рд╢рдХрддреЛ (рдХрд┐рдВрд╡рд╛ рдЬрд╡рд│рдЬрд╡рд│ рдмреЙрдХреНрд╕рдЪреНрдпрд╛ рдмрд╛рд╣реЗрд░), рдЪрд▓рд╛ рдлрд╛рдИрди-рдЯреНрдпреВрди рдХреЗрд▓реЗрд▓реЗ рд░реВрдЯрд┐рдВрдЧ, рдиреЗрдЯрд╡рд░реНрдХ рдЯреНрд░реЕрдлрд┐рдХ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди, рд╕реБрд░рдХреНрд╖рд╛ рдЗрддреНрдпрд╛рджреА рдкрд╛рд╣реВрдпрд╛!

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

рдЕрдиреБрд╡рд╛рджрдХрд╛рдХрдбреВрди рдкреБрдирд╢реНрдЪ

рдЖрдордЪреНрдпрд╛ рдмреНрд▓реЙрдЧрд╡рд░ рджреЗрдЦреАрд▓ рд╡рд╛рдЪрд╛:

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛