рд╡рд┐рддрд░рд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХрдиреЗрдХреНрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рд╕реБрд░рдХреНрд╖рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА Istio рдПрдХ рд╕реЛрдпреАрд╕реНрдХрд░ рд╕рд╛рдзрди рдЖрд╣реЗ. Istio рд╕реНрдХреЗрд▓рд╡рд░ рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░ рдЪрд╛рд▓рд╡рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд┐рд╡рд┐рдз рддрдВрддреНрд░рдЬреНрдЮрд╛рдирд╛рдЪрд╛ рд╡рд╛рдкрд░ рдХрд░рддреЗ, рдЬреНрдпрд╛рдд рдХрдВрдЯреЗрдирд░реНрд╕ рдкреЕрдХреЗрдЬ рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рдЖрдгрд┐ рдбрд┐рдкреНрд▓реЙрдпрдореЗрдВрдЯрд╕рд╛рдареА рдЕрд╡рд▓рдВрдмрд┐рддреНрд╡ рдЖрдгрд┐ рддреНрдпрд╛ рдХрдВрдЯреЗрдирд░рдЪреЗ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА Kubernetes рдпрд╛рдВрдЪрд╛ рд╕рдорд╛рд╡реЗрд╢ рдЖрд╣реЗ. рддреНрдпрд╛рдореБрд│реЗ, Istio рд╕реЛрдмрдд рдХрд╛рдо рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рддреБрдореНрд╣рд╛рд▓рд╛ рд╣реЗ рдорд╛рд╣рд┐рдд рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рдХреА рдпрд╛ рддрдВрддреНрд░рдЬреНрдЮрд╛рдирд╛рд╡рд░ рдЖрдзрд╛рд░рд┐рдд рдПрдХрд╛рдзрд┐рдХ рд╕реЗрд╡рд╛рдВрд╕рд╣ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддреЗ рди Istio. рд╣реА рд╕рд╛рдзрдиреЗ рдЖрдгрд┐ рд╕рдВрдХрд▓реНрдкрдирд╛ рддреБрдореНрд╣рд╛рд▓рд╛ рдЖрдзреАрдЪ рдкрд░рд┐рдЪрд┐рдд рдЕрд╕рд▓реНрдпрд╛рд╕, рд╣реЗ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рд╡рдЧрд│рдгреНрдпрд╛рд╕ рдореЛрдХрд│реНрдпрд╛ рдордирд╛рдиреЗ рдЖрдгрд┐ рдереЗрдЯ рд╡рд┐рднрд╛рдЧрд╛рдд рдЬрд╛.
рд╣реЗ рдПрдХ рдЪрд░рдг-рджрд░-рдЪрд░рдг рдорд╛рд░реНрдЧрджрд░реНрд╢рдХ рдЖрд╣реЗ рдЬрд┐рдереЗ рдЖрдореНрд╣реА рддреБрдореНрд╣рд╛рд▓рд╛ рдпрд╛ рддрдВрддреНрд░рдЬреНрдЮрд╛рдирд╛рдЪреА рдореВрд▓рднреВрдд рдорд╛рд╣рд┐рддреА рдЙрджрд╛рд╣рд░рдгрд╛рджреНрд╡рд╛рд░реЗ рджреЗрдгреНрдпрд╛рд╕рд╛рдареА рд╕реНрддреНрд░реЛрдд рдХреЛрдб рддреЗ GKE рдХрдВрдЯреЗрдирд░ рдкрд░реНрдпрдВрдд рд╕рдВрдкреВрд░реНрдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд╛рд╣реВ. Istio рдпрд╛ рддрдВрддреНрд░рдЬреНрдЮрд╛рдирд╛рдЪреНрдпрд╛ рд╕рд╛рдорд░реНрдереНрдпрд╛рдЪрд╛ рдХрд╕рд╛ рдлрд╛рдпрджрд╛ рдШреЗрддреЗ рд╣реЗ рджреЗрдЦреАрд▓ рддреБрдореНрд╣реА рдкрд╣рд╛рд▓. рд╣реЗ рдЧреГрд╣реАрдд рдзрд░рддреЗ рдХреА рддреБрдореНрд╣рд╛рд▓рд╛ рдХрдВрдЯреЗрдирд░, рдХреБрдмрд░реНрдиреЗрдЯреНрд╕, рд╕рд░реНрд╡реНрд╣рд┐рд╕ рдореЗрд╢ рдХрд┐рдВрд╡рд╛ рдЗрд╕реНрдЯрд┐рдУ рдмрджреНрджрд▓ рдХрд╛рд╣реАрд╣реА рдорд╛рд╣рд┐рддреА рдирд╛рд╣реА.
рдХрд╛рд░реНрдпреЗ
рдпрд╛ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓рдордзреНрдпреЗ, рддреБрдореНрд╣реА рдЦрд╛рд▓реАрд▓ рдХрд╛рд░реНрдпреЗ рдкреВрд░реНрдг рдХрд░рд╛рд▓:
- рдПрдХрд╛рдзрд┐рдХ рд╕реЗрд╡рд╛рдВрд╕рд╣ рдПрдХ рд╕рд╛рдзрд╛ рд╣реЕрд▓реЛ рд╡рд░реНрд▓реНрдб рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рди рд╢рд┐рдХрдгреЗ.
- рд╕реНрддреНрд░реЛрдд рдХреЛрдбрд╡рд░реВрди рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЪрд╛рд▓рд╡рд╛.
- рдХрдВрдЯреЗрдирд░рдордзреНрдпреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкреЕрдХреЗрдЬрд┐рдВрдЧ.
- рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдХреНрд▓рд╕реНрдЯрд░ рддрдпрд╛рд░ рдХрд░рдгреЗ.
- рдХрдВрдЯреЗрдирд░ рдХреНрд▓рд╕реНрдЯрд░рдордзреНрдпреЗ рддреИрдирд╛рдд рдХрд░рдгреЗ.
рдЖрдкрдг рдкреНрд░рд╛рд░рдВрдн рдХрд░рдгреНрдпрд╛рдкреВрд░реНрд╡реА
Kubernetes Engine API рд╕рдХреНрд╖рдо рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕реВрдЪрдирд╛рдВрдЪреЗ рдЕрдиреБрд╕рд░рдг рдХрд░рд╛:
- рдЬрд╛
рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдЗрдВрдЬрд┐рди рдкреГрд╖реНрда Google Cloud Platform рдХрдиреНрд╕реЛрд▓рдордзреНрдпреЗ. - рдПрдХ рдкреНрд░рдХрд▓реНрдк рддрдпрд╛рд░ рдХрд░рд╛ рдХрд┐рдВрд╡рд╛ рдирд┐рд╡рдбрд╛.
- API рдЖрдгрд┐ рд╕рдВрдмрдВрдзрд┐рдд рд╕реЗрд╡рд╛ рд╕рдХреНрд╖рдо рд╣реЛрдИрдкрд░реНрдпрдВрдд рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рд╛. рдпрд╛рд╕ рдХрд╛рд╣реА рдорд┐рдирд┐рдЯреЗ рд▓рд╛рдЧреВ рд╢рдХрддрд╛рдд.
- рддреБрдордЪреНрдпрд╛ Google Cloud Platform рдкреНрд░реЛрдЬреЗрдХреНрдЯрд╕рд╛рдареА рдмрд┐рд▓рд┐рдВрдЧ рд╕реЗрдЯ рдХреЗрд▓реЗ рдЕрд╕рд▓реНрдпрд╛рдЪреА рдЦрд╛рддреНрд░реА рдХрд░рд╛.
рдмрд┐рд▓рд┐рдВрдЧ рдХрд╕реЗ рд╕рдХреНрд╖рдо рдХрд░рд╛рдпрдЪреЗ рддреЗ рдЬрд╛рдгреВрди рдШреНрдпрд╛ .
рдпрд╛ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓рдордзреНрдпреЗ, рддреБрдореНрд╣реА рдХреНрд▓рд╛рдЙрдб рд╢реЗрд▓ рд╡рд╛рдкрд░реВ рд╢рдХрддрд╛, рдЬреЗ рдЖрднрд╛рд╕реА рдорд╢реАрди рддрдпрд╛рд░ рдХрд░рддреЗ
рдкрд░реНрдпрд╛рдп A: рдХреНрд▓рд╛рдЙрдб рд╢реЗрд▓ рд╡рд╛рдкрд░рдгреЗ
рдХреНрд▓рд╛рдЙрдб рд╢реЗрд▓ рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреЗ рдлрд╛рдпрджреЗ:
- рдкрд╛рдпрдерди 2 рдЖрдгрд┐ рдкрд╛рдпрдерди 3 рд╡рд┐рдХрд╛рд╕ рд╡рд╛рддрд╛рд╡рд░рдг (рдпрд╛рд╕рд╣ рд╡реНрд╣рд░реНрдЪреБрдПрд▓реЗрдирд╡реНрд╣) рдкреВрд░реНрдгрдкрдгреЗ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХреЗрд▓реЗрд▓реЗ рдЖрд╣реЗрдд.
- рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЯреВрд▓реНрд╕ gCloud, рдбреЙрдХрд░, рдЬрд╛ ╨╕ kubectl, рдЬреЗ рдЖрдореНрд╣реА рд╡рд╛рдкрд░рдгрд╛рд░ рдЖрд╣реЛрдд рддреЗ рдЖрдзреАрдЪ рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реЗ рдЖрд╣реЗрдд.
- рддреБрдордЪреНрдпрд╛рдХрдбреЗ рдирд┐рд╡рдбрдгреНрдпрд╛рд╕рд╛рдареА рдЕрдиреЗрдХ рдЖрд╣реЗрдд
рдордЬрдХреВрд░ рд╕рдВрдкрд╛рджрдХ :рдХреЛрдб рдПрдбрд┐рдЯрд░ , рдЬреЗ рдХреНрд▓рд╛рдЙрдб рд╢реЗрд▓ рд╡рд┐рдВрдбреЛрдЪреНрдпрд╛ рд╢реАрд░реНрд╖рд╕реНрдерд╛рдиреА рд╕рдВрдкрд╛рджрди рдЪрд┐рдиреНрд╣рд╛рд╕рд╣ рдЙрдШрдбрддреЗ.- Emacs, Vim рдХрд┐рдВрд╡рд╛ Nano, рдЬреЗ рдХреНрд▓рд╛рдЙрдб рд╢реЗрд▓рдордзреАрд▓ рдХрдорд╛рдВрдб рд▓рд╛рдЗрдирдордзреВрди рдЙрдШрдбрддрд╛рдд.
рд╡рд╛рдкрд░рдгреЗ
- GCP рдХрдиреНрд╕реЛрд▓рд╡рд░ рдЬрд╛.
- рдкреНрд░реЗрд╕ рдХреНрд▓рд╛рдЙрдб рд╢реЗрд▓ рд╕рдХреНрд░рд┐рдп рдХрд░рд╛ (рдХреНрд▓рд╛рдЙрдб рд╢реЗрд▓ рд╕рдХреНрд░рд┐рдп рдХрд░рд╛) GCP рдХрдиреНрд╕реЛрд▓ рд╡рд┐рдВрдбреЛрдЪреНрдпрд╛ рд╢реАрд░реНрд╖рд╕реНрдерд╛рдиреА.
рдЦрд╛рд▓рдЪреНрдпрд╛ рднрд╛рдЧрд╛рдд
рдкрд░реНрдпрд╛рдп B: рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЯреВрд▓реНрд╕ рд╕реНрдерд╛рдирд┐рдХ рдкрд╛рддрд│реАрд╡рд░ рд╡рд╛рдкрд░рдгреЗ
рддреБрдореНрд╣реА Linux рдХрд┐рдВрд╡рд╛ macOS рдЪрд╛рд▓рд╡рдгрд╛рд░реНтАНрдпрд╛ рд╕рдВрдЧрдгрдХрд╛рд╡рд░ рдХрд╛рдо рдХрд░рдд рдЕрд╕рд╛рд▓, рддрд░ рддреБрдореНрд╣рд╛рд▓рд╛ рдЦрд╛рд▓реАрд▓ рдШрдЯрдХ рдХреЙрдиреНрдлрд┐рдЧрд░ рдЖрдгрд┐ рдЗрдиреНрд╕реНрдЯреЙрд▓ рдХрд░рд╛рд╡реЗ рд▓рд╛рдЧрддреАрд▓:
-
рд╕рд╛рдиреБрдХреВрд▓ рдХрд░рд╛
рдкрд╛рдпрдерди 3 рдЖрдгрд┐ рдкрд╛рдпрдерди 2 рд╡рд┐рдХрд╛рд╕ рд╡рд╛рддрд╛рд╡рд░рдг . -
рдХреНрд▓рд╛рдЙрдб SDK рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рд╛ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЯреВрд▓рд╕рд╣ gCloud. -
рд╕реЗрдЯ kubectl - рдХрд╛рдо рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЯреВрд▓
рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ .gcloud components install kubectl
-
рд╕реЗрдЯ
рдбреЙрдХрд░ рд╕рдореБрджрд╛рдп рд╕рдВрд╕реНрдХрд░рдг (CE) . рддреБрдореНрд╣реА рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЯреВрд▓ рд╡рд╛рдкрд░рд╛рд▓ рдбреЙрдХрд░рдирдореБрдирд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рд╕рд╛рдареА рдХрдВрдЯреЗрдирд░ рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА. -
рд╕рд╛рдзрди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рд╛
Git рдЖрд╡реГрддреНрддреА рдирд┐рдпрдВрддреНрд░рдг GitHub рд╡рд░реВрди рдирдореБрдирд╛ рдЕрд░реНрдЬ рдорд┐рд│рд╡рд┐рдгреНрдпрд╛рд╕рд╛рдареА.
рдирдореБрдирд╛ рдХреЛрдб рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рд╛
-
рд╕реНрддреНрд░реЛрдд рдХреЛрдб рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рд╛ рд╣реЕрд▓реЛрд╕рд░реНрд╡реНрд╣рд░:
git clone https://github.com/GoogleCloudPlatform/istio-samples
-
рдЙрджрд╛рд╣рд░рдг рдХреЛрдб рдирд┐рд░реНрджреЗрд╢рд┐рдХреЗрд╡рд░ рдЬрд╛:
cd istio-samples/sample-apps/helloserver
рдПрдХрд╛рдзрд┐рдХ рд╕реЗрд╡рд╛рдВрд╕рд╣ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдПрдХреНрд╕рдкреНрд▓реЛрд░ рдХрд░рдгреЗ
рдирдореБрдирд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ Python рдордзреНрдпреЗ рд▓рд┐рд╣рд┐рд▓реЗрд▓рд╛ рдЖрд╣реЗ рдЖрдгрд┐ рддреНрдпрд╛рдд рджреЛрди рдШрдЯрдХ рдЕрд╕рддрд╛рдд рдЬреЗ рд╡рд╛рдкрд░реВрди рдкрд░рд╕реНрдкрд░ рд╕рдВрд╡рд╛рдж рд╕рд╛рдзрддрд╛рдд
- рд╕рд░реНрд╡реНрд╣рд░: рдПрдХрд╛ рдПрдВрдбрдкреЙрдЗрдВрдЯрд╕рд╣ рд╕рд╛рдзрд╛ рд╕рд░реНрд╡реНрд╣рд░ рдорд┐рд│рд╡рд╛, /, рдЬреЗ рдХрдиреНрд╕реЛрд▓рд╡рд░ "hello world" рдкреНрд░рд┐рдВрдЯ рдХрд░рддреЗ.
- рд▓реЛрдбрдЬрди: рдЯреНрд░реЕрдлрд┐рдХ рдкрд╛рдард╡рдгрд╛рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рд░реНрд╡реНрд╣рд░, рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдж рд╡рд┐рдирдВрддреНрдпрд╛ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рдгреНрдпрд╛рдпреЛрдЧреНрдп рд╕рдВрдЦреНрдпреЗрд╕рд╣.
рд╕реНрддреНрд░реЛрдд рдХреЛрдбрд╡рд░реВрди рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЪрд╛рд▓рд╡рд┐рдд рдЖрд╣реЗ
рдирдореБрдирд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдПрдХреНрд╕рдкреНрд▓реЛрд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рддреЛ рдХреНрд▓рд╛рдЙрдб рд╢реЗрд▓рдордзреНрдпреЗ рдХрд┐рдВрд╡рд╛ рддреБрдордЪреНрдпрд╛ рд╕рдВрдЧрдгрдХрд╛рд╡рд░ рдЪрд╛рд▓рд╡рд╛.
1) рдХреЕрдЯрд▓реЙрдЧрдордзреНрдпреЗ istio-samples/sample-apps/helloserver рдзрд╛рд╡рдгреЗ рд╕рд░реНрд╡реНрд╣рд░:
python3 server/server.py
рд╕реНрдЯрд╛рд░реНрдЯрдЕрдкрд╡рд░ рд╕рд░реНрд╡реНрд╣рд░ рдЦрд╛рд▓реАрд▓ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреЗрд▓реЗ рдЖрд╣реЗ:
INFO:root:Starting server...
2) рд╡рд┐рдирдВрддреНрдпрд╛ рдкрд╛рдард╡рдгреНрдпрд╛рд╕рд╛рдареА рджреБрд╕рд░реА рдЯрд░реНрдорд┐рдирд▓ рд╡рд┐рдВрдбреЛ рдЙрдШрдбрд╛ рд╕рд░реНрд╡реНрд╣рд░. рддреБрдореНрд╣реА рдХреНрд▓рд╛рдЙрдб рд╢реЗрд▓ рд╡рд╛рдкрд░рдд рдЕрд╕рд▓реНрдпрд╛рд╕, рджреБрд╕рд░реЗ рд╕рддреНрд░ рдЙрдШрдбрдгреНрдпрд╛рд╕рд╛рдареА рдЬреЛрдбрд╛ рдЪрд┐рдиреНрд╣рд╛рд╡рд░ рдХреНрд▓рд┐рдХ рдХрд░рд╛.
3) рдпрд╛рдВрдирд╛ рд╡рд┐рдирдВрддреА рдкрд╛рдард╡рд╛ рд╕рд░реНрд╡реНрд╣рд░:
curl http://localhost:8080
рд╕рд░реНрд╡реНрд╣рд░ рдЙрддреНрддрд░реЗ:
Hello World!
4) рдЬреНрдпрд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХреЗрддреВрди рддреБрдореНрд╣реА рдирдореБрдирд╛ рдХреЛрдб рдбрд╛рдЙрдирд▓реЛрдб рдХреЗрд▓рд╛ рд╣реЛрддрд╛, рддреНрдпрд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХреЗрд╡рд░ рдЬрд╛ рд▓реЛрдбрдЬрди:
cd YOUR_WORKING_DIRECTORY/istio-samples/sample-apps/helloserver/loadgen
5) рдЦрд╛рд▓реАрд▓ рдкрд░реНрдпрд╛рд╡рд░рдгреАрдп рдЪрд▓ рддрдпрд╛рд░ рдХрд░рд╛:
export SERVER_ADDR=http://localhost:8080
export REQUESTS_PER_SECOND=5
6) рд╡рд╛рдкрд░рд╛ рд╡реНрд╣рд░реНрдЪреБрдПрд▓реЗрдирд╡реНрд╣:
virtualenv --python python3 env
7) рдЖрднрд╛рд╕реА рд╡рд╛рддрд╛рд╡рд░рдг рд╕рдХреНрд░рд┐рдп рдХрд░рд╛:
source env/bin/activate
8) рд╕рд╛рдареА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗрдЯ рдХрд░рд╛ рд▓реЛрдбрдЬрди:
pip3 install -r requirements.txt
9) рд╡рд╛рдкрд░рд╛ рд▓реЛрдбрдЬрди:
python3 loadgen.py
рд╕реНрдЯрд╛рд░реНрдЯрдЕрдкрд╡рд░ рд▓реЛрдбрдЬрди рдЦрд╛рд▓реАрд▓ рд╕рдВрджреЗрд╢рд╛рд╕рд╛рд░рдЦреЗ рдХрд╛рд╣реАрддрд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ:
Starting loadgen: 2019-05-20 10:44:12.448415
5 request(s) complete to http://localhost:8080
рджреБрд╕рд▒реНрдпрд╛ рдЯрд░реНрдорд┐рдирд▓ рд╡рд┐рдВрдбреЛрдордзреНрдпреЗ рд╕рд░реНрд╡реНрд╣рд░ рдХрдиреНрд╕реЛрд▓рд╡рд░ рдЦрд╛рд▓реАрд▓ рд╕рдВрджреЗрд╢ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рддреЗ:
127.0.0.1 - - [21/Jun/2019 14:22:01] "GET / HTTP/1.1" 200 -
INFO:root:GET request,
Path: /
Headers:
Host: localhost:8080
User-Agent: python-requests/2.22.0
Accept-Encoding: gzip, deflate
Accept: */*
рдиреЗрдЯрд╡рд░реНрдХрд┐рдВрдЧрдЪреНрдпрд╛ рджреГрд╖реНрдЯреАрдХреЛрдирд╛рддреВрди, рд╕рдВрдкреВрд░реНрдг рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдПрдХрд╛рдЪ рд╣реЛрд╕реНрдЯрд╡рд░ рдЪрд╛рд▓рддреЛ (рд╕реНрдерд╛рдирд┐рдХ рд╕рдВрдЧрдгрдХ рдХрд┐рдВрд╡рд╛ рдХреНрд▓рд╛рдЙрдб рд╢реЗрд▓ рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдорд╢реАрди). рддреНрдпрд╛рдореБрд│реЗ рддреБрдореНрд╣реА рд╡рд╛рдкрд░реВ рд╢рдХрддрд╛ localhostрд╡рд┐рдирдВрддреНрдпрд╛ рдкрд╛рдард╡рдгреНрдпрд╛рд╕рд╛рдареА рд╕рд░реНрд╡реНрд╣рд░.
10) рдерд╛рдВрдмрдгреЗ рд▓реЛрдбрдЬрди ╨╕ рд╕рд░реНрд╡реНрд╣рд░, рдкреНрд░рд╡рд┐рд╖реНрдЯ рдХрд░рд╛ Ctrl-c рдкреНрд░рддреНрдпреЗрдХ рдЯрд░реНрдорд┐рдирд▓ рд╡рд┐рдВрдбреЛрдордзреНрдпреЗ.
11) рдЯрд░реНрдорд┐рдирд▓ рд╡рд┐рдВрдбреЛрдордзреНрдпреЗ рд▓реЛрдбрдЬрди рдЖрднрд╛рд╕реА рд╡рд╛рддрд╛рд╡рд░рдг рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░рд╛:
deactivate
рдХрдВрдЯреЗрдирд░рдордзреНрдпреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкреЕрдХреЗрдЬрд┐рдВрдЧ
GKE рд╡рд░ рдНрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реБрд░реВ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣рд╛рд▓рд╛ рдНрдкреНрд▓рд┐рдХреЗрд╢рдирдЪреЗ рдЙрджрд╛рд╣рд░рдг рдкреЕрдХ рдХрд░рд╛рд╡реЗ рд▓рд╛рдЧреЗрд▓ - рд╕рд░реНрд╡реНрд╣рд░ ╨╕ рд▓реЛрдбрдЬрди - рдордзреНрдпреЗ
рдХрдВрдЯреЗрдирд░рдордзреНрдпреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкреЕрдХреЗрдЬ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рдбреЙрдХрд░рдлрд╛рдЗрд▓. рдбреЙрдХрд░рдлрд╛рдЗрд▓ рд╣реА рдПрдХ рдордЬрдХреВрд░ рдлрд╛рдИрд▓ рдЖрд╣реЗ рдЬреА рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдЪрд╛ рд╕реНрддреНрд░реЛрдд рдХреЛрдб рдЖрдгрд┐ рддреНрдпрд╛рддреАрд▓ рдЕрд╡рд▓рдВрдмрди рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХрдорд╛рдВрдб рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ
рдЙрджрд╛рд╣рд░рдг рдЖрдзреАрдЪ рдЖрд╣реЗ рдбреЙрдХрд░рдлрд╛рдЗрд▓ рддреЗ рд╕рд░реНрд╡реНрд╣рд░ ╨╕ рд▓реЛрдбрдЬрди рдкреНрд░рддрд┐рдорд╛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕рд░реНрд╡ рдЖрд╡рд╢реНрдпрдХ рдЖрджреЗрд╢рд╛рдВрд╕рд╣. рдЦрд╛рд▓реА - рдбреЙрдХрд░рдлрд╛рдЗрд▓ рддреЗ рд╕рд░реНрд╡реНрд╣рд░:
FROM python:3-slim as base
FROM base as builder
RUN apt-get -qq update
&& apt-get install -y --no-install-recommends
g++
&& rm -rf /var/lib/apt/lists/*
# Enable unbuffered logging
FROM base as final
ENV PYTHONUNBUFFERED=1
RUN apt-get -qq update
&& apt-get install -y --no-install-recommends
wget
WORKDIR /helloserver
# Grab packages from builder
COPY --from=builder /usr/local/lib/python3.7/ /usr/local/lib/python3.7/
# Add the application
COPY . .
EXPOSE 8080
ENTRYPOINT [ "python", "server.py" ]
- рд╕рдВрдШ рдкрд╛рдпрдердирдкрд╛рд╕реВрди: 3-рдмреЗрд╕ рдореНрд╣рдгреВрди рд╕рдбрдкрд╛рддрд│ рдбреЙрдХрд░рд▓рд╛ рдирд╡реАрдирддрдо рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕ рд╕рд╛рдВрдЧрддреЗ
рдкрд╛рдпрдерди 3 рдкреНрд░рддрд┐рдорд╛ рдЖрдзрд╛рд░ рдореНрд╣рдгреВрди. - рд╕рдВрдШ рдХреЙрдкреА рдХрд░рд╛. . рд╕реНрддреНрд░реЛрдд рдлрд╛рдпрд▓реА рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд░рдд рдирд┐рд░реНрджреЗрд╢рд┐рдХреЗрдд рдХреЙрдкреА рдХрд░рддреЗ (рдХреЗрд╡рд│ рдЖрдордЪреНрдпрд╛ рдмрд╛рдмрддреАрдд server.py) рдХрдВрдЯреЗрдирд░рдЪреНрдпрд╛ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдорд╡рд░.
- ENTRYPOINT рдХрдВрдЯреЗрдирд░ рд╕реБрд░реВ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓реА рдЬрд╛рдгрд╛рд░реА рдХрдорд╛рдВрдб рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ. рдЖрдордЪреНрдпрд╛ рдмрд╛рдмрддреАрдд, рд╣реА рдЖрдЬреНрдЮрд╛ рддреБрдореНрд╣реА рдЪрд╛рд▓рд╡рд▓реНрдпрд╛рд╕рд╛рд░рдЦреАрдЪ рдЖрд╣реЗ server.py рд╕реНрддреНрд░реЛрдд рдХреЛрдб рд╡рд░реВрди.
- рд╕рдВрдШ рдЙрдШрдб рдХрд░рд╛ рдЕрд╕реЗ рд╕реВрдЪрд┐рдд рдХрд░рддреЗ рд╕рд░реНрд╡реНрд╣рд░ рдкреЛрд░реНрдЯрджреНрд╡рд╛рд░реЗ рдбреЗрдЯрд╛рдЪреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддреЗ 8080. рд╣рд╛ рд╕рдВрдШ рдирд╛рд╣реА
рдкреЛрд░реНрдЯ рдкреНрд░рджрд╛рди рдХрд░рддреЗ . рд╣реЗ рдХрд╛рд╣реА рдкреНрд░рдХрд╛рд░рдЪреЗ рджрд╕реНрддрдРрд╡рдЬреАрдХрд░рдг рдЖрд╣реЗ рдЬреЗ рдкреЛрд░реНрдЯ рдЙрдШрдбрдгреНрдпрд╛рд╕рд╛рдареА рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ 8080 рдХрдВрдЯреЗрдирд░ рд╕реБрд░реВ рдХрд░рддрд╛рдирд╛.
рддреБрдордЪрд╛ рдЕрд░реНрдЬ рдХрдВрдЯреЗрдирд░реАрдХреГрдд рдХрд░рдгреНрдпрд╛рдЪреА рддрдпрд╛рд░реА рдХрд░рдд рдЖрд╣реЗ
1) рдЦрд╛рд▓реАрд▓ рдкрд░реНрдпрд╛рд╡рд░рдг рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕ рд╕реЗрдЯ рдХрд░рд╛. рдмрджрд▓рд╛ PROJECT_ID рддреБрдордЪреНрдпрд╛ GCP рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЖрдпрдбреАрд╡рд░.
export PROJECT_ID="PROJECT_ID"
export GCR_REPO="preparing-istio"
рдореВрд▓реНрдпреЗ рд╡рд╛рдкрд░рдгреЗ PROJECT_ID ╨╕ GCR_REPO рдЬреЗрд╡реНрд╣рд╛ рдЖрдкрдг рддреЗ рддрдпрд╛рд░ рдХрд░рддрд╛ рддреЗрд╡реНрд╣рд╛ рдЖрдкрдг рдбреЙрдХрд░ рдкреНрд░рддрд┐рдорд╛ рдЯреЕрдЧ рдХрд░рд╛ рдЖрдгрд┐ рддреНрдпрд╛рд╕ рдЦрд╛рдЬрдЧреА рдХрдВрдЯреЗрдирд░ рд░реЗрдЬрд┐рд╕реНрдЯреНрд░реАрдордзреНрдпреЗ рдврдХрд▓рддрд╛.
2) рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЯреВрд▓рд╕рд╛рдареА рдбреАрдлреЙрд▓реНрдЯ GCP рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗрдЯ рдХрд░рд╛ gCloud.
gcloud config set project $PROJECT_ID
3) рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЯреВрд▓рд╕рд╛рдареА рдбреАрдлреЙрд▓реНрдЯ рдЭреЛрди рд╕реЗрдЯ рдХрд░рд╛ gCloud.
gcloud config set compute/zone us-central1-b
4) GCP рдкреНрд░рдХрд▓реНрдкрд╛рдордзреНрдпреЗ рдХрдВрдЯреЗрдирд░ рдиреЛрдВрджрдгреА рд╕реЗрд╡рд╛ рд╕рдХреНрд╖рдо рдЕрд╕рд▓реНрдпрд╛рдЪреА рдЦрд╛рддреНрд░реА рдХрд░рд╛.
gcloud services enable containerregistry.googleapis.com
рдХрдВрдЯреЗрдирд░рд╛рдпрдЭреЗрд╢рди рд╕рд░реНрд╡реНрд╣рд░
-
рдирд┐рд░реНрджреЗрд╢рд┐рдХреЗрд╡рд░ рдЬрд╛ рдЬреЗрдереЗ рдЙрджрд╛рд╣рд░рдг рдЖрд╣реЗ рд╕рд░реНрд╡реНрд╣рд░:
cd YOUR_WORKING_DIRECTORY/istio-samples/sample-apps/helloserver/server/
-
рд╡рд╛рдкрд░реВрди рдкреНрд░рддрд┐рдорд╛ рдПрдХрддреНрд░ рдХрд░рд╛ рдбреЙрдХрд░рдлрд╛рдЗрд▓ рдЖрдгрд┐ рддреБрдореНрд╣реА рдкреВрд░реНрд╡реА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреЗрд▓реЗрд▓реЗ рдкрд░реНрдпрд╛рд╡рд░рдгреАрдп рдЪрд▓:
docker build -t gcr.io/$PROJECT_ID/$GCR_REPO/helloserver:v0.0.1 .
рдкреЕрд░рд╛рдореАрдЯрд░ -t рдбреЙрдХрд░ рдЯреЕрдЧрдЪреЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ. рдХрдВрдЯреЗрдирд░ рддреИрдирд╛рдд рдХрд░рддрд╛рдирд╛ рддреБрдореНрд╣реА рд╡рд╛рдкрд░рдд рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдкреНрд░рддрд┐рдореЗрдЪреЗ рд╣реЗ рдирд╛рд╡ рдЖрд╣реЗ.
- рдХрдВрдЯреЗрдирд░ рд░реЗрдЬрд┐рд╕реНрдЯреНрд░реАрдордзреНрдпреЗ рдкреНрд░рддрд┐рдорд╛ рдЕрдкрд▓реЛрдб рдХрд░рд╛:
docker push gcr.io/$PROJECT_ID/$GCR_REPO/helloserver:v0.0.1
рд▓реЛрдбрдЬрдирдЪреЗ рдХрдВрдЯреЗрдирд░реАрдХрд░рдг
1) рдЙрджрд╛рд╣рд░рдг рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХреЗрд╡рд░ рдЬрд╛ рд▓реЛрдбрдЬрди:
cd ../loadgen
реи) рдкреНрд░рддрд┐рдорд╛ рдЧреЛрд│рд╛ рдХрд░рд╛:
docker build -t gcr.io/$PROJECT_ID/$GCR_REPO/loadgen:v0.0.1 .
3) рдХрдВрдЯреЗрдирд░ рдиреЛрдВрджрдгреАрд╡рд░ рдкреНрд░рддрд┐рдорд╛ рдЕрдкрд▓реЛрдб рдХрд░рд╛:
docker push gcr.io/$PROJECT_ID/$GCR_REPO/loadgen:v0.0.1
рдкреНрд░рддрд┐рдорд╛рдВрдЪреА рд╕реВрдЪреА рдкрд╣рд╛
рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдордзреАрд▓ рдкреНрд░рддрд┐рдорд╛рдВрдЪреНрдпрд╛ рд╕реВрдЪреАрдЪреЗ рдкреБрдирд░рд╛рд╡рд▓реЛрдХрди рдХрд░рд╛ рдЖрдгрд┐ рдкреНрд░рддрд┐рдорд╛ рдЕрдкрд▓реЛрдб рдХреЗрд▓реНрдпрд╛ рдЧреЗрд▓реНрдпрд╛ рдЖрд╣реЗрдд рд╣реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рд╛:
gcloud container images list --repository gcr.io/$PROJECT_ID/preparing-istio
рдХрдорд╛рдВрдб рдирд╡реАрди рдЕрдкрд▓реЛрдб рдХреЗрд▓реЗрд▓реНрдпрд╛ рдкреНрд░рддрд┐рдорд╛рдВрдЪреА рдирд╛рд╡реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ:
NAME
gcr.io/PROJECT_ID/preparing-istio/helloserver
gcr.io/PROJECT_ID/preparing-istio/loadgen
GKE рдХреНрд▓рд╕реНрдЯрд░ рддрдпрд╛рд░ рдХрд░рдд рдЖрд╣реЗ.
рд╣реЗ рдХрдВрдЯреЗрдирд░ рдХреНрд▓рд╛рдЙрдб рд╢реЗрд▓ рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдорд╢реАрдирд╡рд░ рдХрд┐рдВрд╡рд╛ рдХрдорд╛рдВрдбрд╕рд╣ рд╕рдВрдЧрдгрдХрд╛рд╡рд░ рдЪрд╛рд▓рд╡рд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд рдбреЙрдХрд░ рд░рди. рдкрд░рдВрддреБ рдЙрддреНрдкрд╛рджрди рд╡рд╛рддрд╛рд╡рд░рдгрд╛рдд, рддреБрдореНрд╣рд╛рд▓рд╛ рдХрдВрдЯреЗрдирд░ рдордзреНрдпрд╡рд░реНрддреА рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрдЯ рдХрд░рдгреНрдпрд╛рдЪрд╛ рдорд╛рд░реНрдЧ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рддреБрдореНрд╣рд╛рд▓рд╛ рдХрдВрдЯреЗрдирд░ рдиреЗрд╣рдореА рдЪрд╛рд▓реВ рдЕрд╕рд▓реНрдпрд╛рдЪреА рдЦрд╛рддреНрд░реА рдХрд░реВрди рджреЗрдгрд╛рд░реА рдкреНрд░рдгрд╛рд▓реА рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рдЖрдгрд┐ рдЯреНрд░реЕрдлрд┐рдХ рд╡рд╛рдврд▓реНрдпрд╛рд╕ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрдВрдЯреЗрдирд░ рдЙрджрд╛рд╣рд░рдгреЗ рд╡рд╛рдврд╡рдгреНрдпрд╛рдЪрд╛ рдЖрдгрд┐ рд╕реНрдкрд┐рди рдЕрдк рдХрд░рдгреНрдпрд╛рдЪрд╛ рдорд╛рд░реНрдЧ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.
рдХрдВрдЯреЗрдирд░реАрдХреГрдд рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЪрд╛рд▓рд╡рд┐рдгреНрдпрд╛рд╕рд╛рдареА рддреБрдореНрд╣реА рд╡рд╛рдкрд░реВ рд╢рдХрддрд╛
GKE рдХреНрд▓рд╕реНрдЯрд░ рддрдпрд╛рд░ рдХрд░рдгреЗ:
1) рдХреНрд▓рд╕реНрдЯрд░ рддрдпрд╛рд░ рдХрд░рд╛:
gcloud container clusters create istioready
--cluster-version latest
--machine-type=n1-standard-2
--num-nodes 4
рд╕рдВрдШ gCloud рддреБрдореНрд╣реА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реЗрд▓реНрдпрд╛ GCP рдкреНрд░рдХрд▓реНрдк рдЖрдгрд┐ рдбреАрдлреЙрд▓реНрдЯ рдЭреЛрдирдордзреНрдпреЗ рдПрдХ istioready рдХреНрд▓рд╕реНрдЯрд░ рддрдпрд╛рд░ рдХрд░рддреЛ. Istio рдЪрд╛рд▓рд╡рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдореНрд╣реА рдХрд┐рдорд╛рди 4 рдиреЛрдбреНрд╕ рдЖрдгрд┐ рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдорд╢реАрди рдЕрд╕рдгреНрдпрд╛рдЪреА рд╢рд┐рдлрд╛рд░рд╕ рдХрд░рддреЛ
рд╕рдВрдШ рдХрд╛рд╣реА рдорд┐рдирд┐рдЯрд╛рдВрдд рдХреНрд▓рд╕реНрдЯрд░ рддрдпрд╛рд░ рдХрд░рддреЛ. рдХреНрд▓рд╕реНрдЯрд░ рддрдпрд╛рд░ рдЭрд╛рд▓реНрдпрд╛рд╡рд░, рдХрдорд╛рдВрдб рдЕрд╕реЗ рдХрд╛рд╣реАрддрд░реА рдЖрдЙрдЯрдкреБрдЯ рдХрд░рддреЗ
2) рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЯреВрд▓рдордзреНрдпреЗ рдХреНрд░реЗрдбреЗрдиреНрд╢рд┐рдпрд▓ рдкреНрд░рджрд╛рди рдХрд░рд╛
gcloud container clusters get-credentials istioready
3) рдЖрддрд╛ рддреБрдореНрд╣реА рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рд╢реА рджреНрд╡рд╛рд░реЗ рд╕рдВрд╡рд╛рдж рд╕рд╛рдзреВ рд╢рдХрддрд╛ kubectl. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдЦрд╛рд▓реАрд▓ рдХрдорд╛рдВрдб рдиреЛрдбреНрд╕рдЪреА рд╕реНрдерд┐рддреА рд╢реЛрдзреВ рд╢рдХрддреЗ:
kubectl get nodes
рдХрдорд╛рдВрдб рдиреЛрдбреНрд╕рдЪреА рд╕реВрдЪреА рддрдпрд╛рд░ рдХрд░рддреЗ:
NAME STATUS ROLES AGE VERSION
gke-istoready-default-pool-dbeb23dc-1vg0 Ready <none> 99s v1.13.6-gke.13
gke-istoready-default-pool-dbeb23dc-36z5 Ready <none> 100s v1.13.6-gke.13
gke-istoready-default-pool-dbeb23dc-fj7s Ready <none> 99s v1.13.6-gke.13
gke-istoready-default-pool-dbeb23dc-wbjw Ready <none> 99s v1.13.6-gke.13
рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдореБрдЦреНрдп рд╕рдВрдХрд▓реНрдкрдирд╛
рдЖрдХреГрддреА GKE рд╡рд░ рдПрдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рджрд░реНрд╢рд╡рддреЗ:
рддреБрдореНрд╣реА GKE рдордзреНрдпреЗ рдХрдВрдЯреЗрдирд░ рддреИрдирд╛рдд рдХрд░рдгреНрдпрд╛рдкреВрд░реНрд╡реА, Kubernetes рдЪреНрдпрд╛ рдореБрдЦреНрдп рд╕рдВрдХрд▓реНрдкрдирд╛ рдЬрд╛рдгреВрди рдШреНрдпрд╛. рддреБрдореНрд╣рд╛рд▓рд╛ рдЕрдзрд┐рдХ рдЬрд╛рдгреВрди рдШреНрдпрд╛рдпрдЪреЗ рдЕрд╕рд▓реНрдпрд╛рд╕ рдЕрдЧрджреА рд╢реЗрд╡рдЯреА рджреБрд╡реЗ рдЖрд╣реЗрдд.
- рдиреЛрдбреНрд╕ рдЖрдгрд┐ рдХреНрд▓рд╕реНрдЯрд░реНрд╕. GKE рдордзреНрдпреЗ, рдиреЛрдб рдПрдХ рдЖрднрд╛рд╕реА рдорд╢реАрди рдЖрд╣реЗ. рдЗрддрд░ Kubernetes рдкреНрд▓реЕрдЯрдлреЙрд░реНрдорд╡рд░, рдиреЛрдб рд╕рдВрдЧрдгрдХ рдХрд┐рдВрд╡рд╛ рдЖрднрд╛рд╕реА рдорд╢реАрди рдЕрд╕реВ рд╢рдХрддреЗ. рдХреНрд▓рд╕реНрдЯрд░ рд╣рд╛ рдиреЛрдбреНрд╕рдЪрд╛ рд╕рдВрдЧреНрд░рд╣ рдЖрд╣реЗ рдЬреНрдпрд╛рд▓рд╛ рдПрдХрд▓ рдпреБрдирд┐рдЯ рдорд╛рдирд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ рдЬреЗрдереЗ рддреБрдореНрд╣реА рдХрдВрдЯреЗрдирд░рд╛рдЗрдЬреНрдб рдНрдкреНрд▓рд┐рдХреЗрд╢рди рддреИрдирд╛рдд рдХрд░рддрд╛.
- рд╢реЗрдВрдЧрд╛. рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдордзреНрдпреЗ, рдХрдВрдЯреЗрдирд░ рд╢реЗрдВрдЧрд╛рдВрдордзреНрдпреЗ рдЪрд╛рд▓рддрд╛рдд. рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдордзреАрд▓ рдкреЙрдб рд╣реЗ рдЕрд╡рд┐рднрд╛рдЬреНрдп рдПрдХрдХ рдЖрд╣реЗ. рдкреЙрдбрдордзреНрдпреЗ рдПрдХ рдХрд┐рдВрд╡рд╛ рдЕрдзрд┐рдХ рдХрдВрдЯреЗрдирд░ рдЕрд╕рддрд╛рдд. рдЖрдкрдг рд╕рд░реНрд╡реНрд╣рд░ рдХрдВрдЯреЗрдирд░ рддреИрдирд╛рдд рдЖрдгрд┐ рд▓реЛрдбрдЬрди рд╕реНрд╡рддрдВрддреНрд░ рд╢реЗрдВрдЧрд╛ рдордзреНрдпреЗ. рдЬреЗрд╡реНрд╣рд╛ рдкреЙрдбрдордзреНрдпреЗ рдЕрдиреЗрдХ рдХрдВрдЯреЗрдирд░ рдЕрд╕рддрд╛рдд (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдНрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд░реНрд╡реНрд╣рд░ рдЖрдгрд┐
рдкреНрд░реЙрдХреНрд╕реА рд╕рд░реНрд╡реНрд╣рд░ ), рдХрдВрдЯреЗрдирд░ рдПрдХрдЪ рдШрдЯрдХ рдореНрд╣рдгреВрди рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд рдЖрдгрд┐ рдкреЙрдб рд╕рдВрд╕рд╛рдзрдиреЗ рд╕рд╛рдорд╛рдпрд┐рдХ рдХрд░рддрд╛рдд. - рдЙрдкрдпреЛрдЬрди. Kubernetes рдордзреНрдпреЗ, рдЙрдкрдпреЛрдЬрди рд╣реА рдПрдХ рд╡рд╕реНрддреВ рдЖрд╣реЗ рдЬреА рдПрдХрд╕рд╛рд░рдЦреНрдпрд╛ рд╢реЗрдВрдЧрд╛рдВрдЪрд╛ рд╕рдВрдЧреНрд░рд╣ рдЖрд╣реЗ. рдбрд┐рдкреНрд▓реЙрдпрдореЗрдВрдЯ рдХреНрд▓рд╕реНрдЯрд░ рдиреЛрдбреНрд╕рдордзреНрдпреЗ рд╡рд┐рддрд░рд┐рдд рдХреЗрд▓реЗрд▓реНрдпрд╛ рдкреЙрдбреНрд╕рдЪреНрдпрд╛ рдЕрдиреЗрдХ рдкреНрд░рддрд┐рдХреГрддреА рд▓рд╛рдБрдЪ рдХрд░рддреЗ. рдЙрдкрдпреЛрдЬрди рдЕрдпрд╢рд╕реНрд╡реА рдЭрд╛рд▓реЗрд▓реНрдпрд╛ рдХрд┐рдВрд╡рд╛ рдкреНрд░рддрд┐рд╕рд╛рдж рди рджреЗрдгрд╛рд░реНтАНрдпрд╛ рдкреЙрдбреНрд╕ рдЖрдкреЛрдЖрдк рдмрджрд▓рддреЗ.
- рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рд╕реЗрд╡рд╛. рддреБрдореНрд╣реА GKE рдордзреНтАНрдпреЗ рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рдЪрд╛рд▓рд╡рддрд╛ рддреЗрд╡реНрд╣рд╛, рджрд░рдореНрдпрд╛рдирдЪреЗ рдХрдиреЗрдХреНрд╢рди рд▓реЛрдбрдЬрди ╨╕ рд╕рд░реНрд╡реНрд╣рд░. рддреБрдореНрд╣реА рдХреНрд▓рд╛рдЙрдб рд╢реЗрд▓ рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдорд╢реАрди рдХрд┐рдВрд╡рд╛ рдбреЗрд╕реНрдХрдЯреЙрдкрд╡рд░ рд╕реЗрд╡рд╛ рд╕реБрд░реВ рдХреЗрд▓реНрдпрд╛рд╡рд░, рддреБрдореНрд╣реА рддреНрдпрд╛рдВрдирд╛ рд╡рд┐рдирдВрддреНрдпрд╛ рдкрд╛рдард╡рд▓реНрдпрд╛ рд╕рд░реНрд╡реНрд╣рд░ рдкрддреНрддреНрдпрд╛рджреНрд╡рд╛рд░реЗ рд▓реЛрдХрд╣реЛрд╕реНрдЯрдГ 8080. GKE рдордзреНрдпреЗ рддреИрдирд╛рдд рдХреЗрд▓реНрдпрд╛рдирдВрддрд░, рдЙрдкрд▓рдмреНрдз рдиреЛрдбреНрд╕рд╡рд░ рдкреЙрдбреНрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд. рдбреАрдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░, рдкреЙрдб рдХреЛрдгрддреНрдпрд╛ рдиреЛрдбрд╡рд░ рдЪрд╛рд▓реВ рдЖрд╣реЗ рдпрд╛рд╡рд░ рддреБрдордЪреЗ рдХреЛрдгрддреЗрд╣реА рдирд┐рдпрдВрддреНрд░рдг рдирд╕рддреЗ, рддреНрдпрд╛рдореБрд│реЗ рддреБрдордЪреЗ
рд╢реЗрдВрдЧрд╛ рдХреЛрдгрддреЗрд╣реА рдХрд╛рдпрдордЪреЗ IP рдкрддреНрддреЗ рдирд╛рд╣реАрдд.
рд╕рд╛рдареА IP рдкрддреНрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕рд░реНрд╡реНрд╣рд░, рддреБрдореНрд╣рд╛рд▓рд╛ рдкреЙрдбреНрд╕рдЪреНрдпрд╛ рд╢реАрд░реНрд╖рд╕реНрдерд╛рдиреА рдиреЗрдЯрд╡рд░реНрдХ рдЕреЕрдмреНрд╕реНрдЯреНрд░реЕрдХреНрд╢рди рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рддреЗрдЪ рдЖрд╣реЗрдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рд╕реЗрд╡рд╛ . рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рд╕реЗрд╡рд╛ рдкреЙрдбреНрд╕рдЪреНрдпрд╛ рд╕рдВрдЪрд╛рд╕рд╛рдареА рдПрдХ рд╕рддрдд рдПрдВрдбрдкреЙрдЗрдВрдЯ рдкреНрд░рджрд╛рди рдХрд░рддреЗ. рдХрд╛рд╣реА рдЖрд╣реЗрддрд╕реЗрд╡рд╛рдВрдЪреЗ рдкреНрд░рдХрд╛рд░ . рд╕рд░реНрд╡реНрд╣рд░ рд╡рд╛рдкрд░рддреЗ рд▓реЛрдб рдмреЕрд▓рдиреНрд╕рд░, рдЬреЗ рд╕рдВрдкрд░реНрдХрд╛рд╕рд╛рдареА рдмрд╛рд╣реНрдп IP рдкрддреНрддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╕рд░реНрд╡реНрд╣рд░ рдХреНрд▓рд╕реНрдЯрд░рдЪреНрдпрд╛ рдмрд╛рд╣реЗрд░реВрди.
рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдордзреНрдпреЗ рдЕрдВрдЧрднреВрдд DNS рдкреНрд░рдгрд╛рд▓реА рджреЗрдЦреАрд▓ рдЖрд╣реЗ рдЬреА DNS рдирд╛рд╡реЗ рдирд┐рдпреБрдХреНрдд рдХрд░рддреЗ (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, helloserver.default.cluster.local) рд╕реЗрд╡рд╛. рдпрд╛рдмрджреНрджрд▓ рдзрдиреНрдпрд╡рд╛рдж, рдХреНрд▓рд╕реНрдЯрд░рдордзреАрд▓ рд╢реЗрдВрдЧрд╛ рдПрдХрд╛ рд╕реНрдерд┐рд░ рдкрддреНрддреНрдпрд╛рд╡рд░ рдХреНрд▓рд╕реНрдЯрд░рдордзреАрд▓ рдЗрддрд░ рд╢реЗрдВрдЧрд╛рдВрд╢реА рд╕рдВрд╡рд╛рдж рд╕рд╛рдзрддрд╛рдд. DNS рдирд╛рд╡ рдХреНрд▓рд╕реНрдЯрд░рдЪреНрдпрд╛ рдмрд╛рд╣реЗрд░ рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рдК рд╢рдХрдд рдирд╛рд╣реА, рдЬрд╕реЗ рдХреА рдХреНрд▓рд╛рдЙрдб рд╢реЗрд▓рдордзреНрдпреЗ рдХрд┐рдВрд╡рд╛ рд╕рдВрдЧрдгрдХрд╛рд╡рд░.
рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдкреНрд░рдХрдЯ рд╣реЛрддрд╛рдд
рдЬреЗрд╡реНрд╣рд╛ рддреБрдореНрд╣реА рд╕реНрддреНрд░реЛрддрд╛рд╡рд░реВрди рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЪрд╛рд▓рд╡рд▓рд╛, рддреЗрд╡реНрд╣рд╛ рддреБрдореНрд╣реА рдЕрдирд┐рд╡рд╛рд░реНрдп рдЖрджреЗрд╢ рд╡рд╛рдкрд░рд▓рд╛ рдкрд╛рдпрдерди 3
server.py
рдЕрддреНрдпрд╛рд╡рд╢реНрдпрдХ рдХреНрд░рд┐рдпрд╛рдкрдж рд╕реВрдЪрд┐рдд рдХрд░рддреЗ: "рд╣реЗ рдХрд░рд╛."
рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рд╡рд╛рдкрд░рддрд╛рдд
рддреБрдореНтАНрд╣реА рдореЕрдирд┐рдлреЗрд╕реНтАНрдЯ рдХрд┐рдВрд╡рд╛ рдлрд╛рдЗрд▓рдордзреНтАНрдпреЗ рдЗрдЪреНрдЫрд┐рдд рд╕реНрдерд┐рддреА рджрд░реНрд╢рд╡рддрд╛
рдЙрджрд╛рд╣рд░рдгрд╛рдордзреНрдпреЗ рд╕рд╛рдареА YAML рдлрд╛рдЗрд▓ рдЖрд╣реЗ рд╕рд░реНрд╡реНрд╣рд░ ╨╕ рд▓реЛрдбрдЬрди. рдкреНрд░рддреНрдпреЗрдХ YAML рдлрд╛рдЗрд▓ рдбрд┐рдкреНрд▓реЙрдпрдореЗрдВрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдЖрдгрд┐ Kubernetes рд╕реЗрд╡реЗрдЪреА рдЗрдЪреНрдЫрд┐рдд рд╕реНрдерд┐рддреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ.
рд╕рд░реНрд╡реНрд╣рд░.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: helloserver
spec:
selector:
matchLabels:
app: helloserver
replicas: 1
template:
metadata:
labels:
app: helloserver
spec:
terminationGracePeriodSeconds: 5
restartPolicy: Always
containers:
- name: main
image: gcr.io/google-samples/istio/helloserver:v0.0.1
imagePullPolicy: Always
- рдкреНрд░рдХрд╛рд░рдЪреА рдСрдмреНрдЬреЗрдХреНрдЯрдЪрд╛ рдкреНрд░рдХрд╛рд░ рджрд░реНрд╢рд╡рддреЛ.
- metadata.name рдЙрдкрдпреЛрдЬрдирд╛рдЪреЗ рдирд╛рд╡ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ.
- рдкрд╣рд┐рд▓реЗ рдлреАрд▓реНрдб рдЪрд╖реНрдорд╛ рдЗрдЪреНрдЫрд┐рдд рд╕реНрдерд┐рддреАрдЪреЗ рд╡рд░реНрдгрди рдЖрд╣реЗ.
- spec.replicas рд╢реЗрдВрдЧрд╛рдВрдЪреА рдЗрдЪреНрдЫрд┐рдд рд╕рдВрдЦреНрдпрд╛ рджрд░реНрд╢рд╡рддреЗ.
- рд╡рд┐рднрд╛рдЧ spec.template рдкреЙрдб рдЯреЗрдореНрдкрд▓реЗрдЯ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ. рдкреЙрдб рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рдирдордзреНрдпреЗ рдлреАрд▓реНрдб рдЖрд╣реЗ рдкреНрд░рддрд┐рдорд╛, рдЬреЗ рдХрдВрдЯреЗрдирд░ рд░реЗрдЬрд┐рд╕реНрдЯреНрд░реАрдордзреВрди рдХрд╛рдврд▓реЗ рдЬрд╛рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдкреНрд░рддрд┐рдореЗрдЪреЗ рдирд╛рд╡ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ.
рд╕реЗрд╡рд╛ рдЦрд╛рд▓реАрд▓рдкреНрд░рдорд╛рдгреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреЗрд▓реА рдЖрд╣реЗ:
apiVersion: v1
kind: Service
metadata:
name: hellosvc
spec:
type: LoadBalancer
selector:
app: helloserver
ports:
- name: http
port: 80
targetPort: 8080
- рд▓реЛрдб рдмреЕрд▓рдиреНрд╕рд░: рдХреНрд▓рд╛рдпрдВрдЯ рд▓реЛрдб рдмреЕрд▓рдиреНрд╕рд░рдЪреНрдпрд╛ IP рдкрддреНрддреНрдпрд╛рд╡рд░ рд╡рд┐рдирдВрддреНрдпрд╛ рдкрд╛рдард╡рддрд╛рдд, рдЬреНрдпрд╛рдЪрд╛ IP рдкрддреНрддрд╛ рдХрд╛рдпрдо рдЕрд╕рддреЛ рдЖрдгрд┐ рдХреНрд▓рд╕реНрдЯрд░рдЪреНрдпрд╛ рдмрд╛рд╣реЗрд░реВрди рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рдпреЗрддреЛ.
- рдЯрд╛рд░реНрдЧреЗрдЯрдкреЛрд░реНрдЯ: рдЬрд╕реЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдЖрдард╡рддреЗ, рд╕рдВрдШ рдПрдХреНрд╕рдкреЛрдЬ 8080 ╨▓ рдбреЙрдХрд░рдлрд╛рдЗрд▓ рдкреЛрд░реНрдЯ рдкреНрд░рджрд╛рди рдХреЗрд▓реЗ рдирд╛рд╣реАрдд. рдЖрдкрдг рдкреЛрд░реНрдЯ рдкреНрд░рджрд╛рди рдХрд░рд╛ 8080рдЬреЗрдгреЗрдХрд░реВрди рддреБрдореНрд╣реА рдХрдВрдЯреЗрдирд░рд╢реА рд╕рдВрдкрд░реНрдХ рд╕рд╛рдзреВ рд╢рдХрддрд╛ рд╕рд░реНрд╡реНрд╣рд░ рдХреНрд▓рд╕реНрдЯрд░рдЪреНрдпрд╛ рдмрд╛рд╣реЗрд░. рдЖрдордЪреНрдпрд╛ рдмрд╛рдмрддреАрдд hellosvc.default.cluster.local:80 (рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирд╛рд╡: рд╣реЕрд▓реЛрд╕рд╡реНрд╣реАрд╕реА) рдкреЛрд░реНрдЯрд╢реА рд╕рдВрдмрдВрдзрд┐рдд рдЖрд╣реЗ 8080 рдкреЙрдб рдЖрдпрдкреА рдкрддреНрддреЗ рд╣реЕрд▓реЛрд╕рд░реНрд╡реНрд╣рд░.
- рдкреЛрд░реНрдЯ: рд╣рд╛ рдкреЛрд░реНрдЯ рдХреНрд░рдорд╛рдВрдХ рдЖрд╣реЗ рдЬрд┐рдереЗ рдХреНрд▓рд╕реНрдЯрд░рдордзреАрд▓ рдЗрддрд░ рд╕реЗрд╡рд╛ рд╡рд┐рдирдВрддреНрдпрд╛ рдкрд╛рдард╡рддреАрд▓.
loadgen.yaml
рдЙрдкрдпреЛрдЬрди рдСрдмреНрдЬреЗрдХреНрдЯ loadgen.yaml рджрд┐рд╕рдд рд╕рд░реНрд╡реНрд╣рд░.yaml. рдлрд░рдХ рдЕрд╕рд╛ рдЖрд╣реЗ рдХреА рдЙрдкрдпреЛрдЬрди рдСрдмреНрдЬреЗрдХреНрдЯрдордзреНрдпреЗ рдПрдХ рд╡рд┐рднрд╛рдЧ рдЖрд╣реЗ env. рд╣реЗ рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдкрд░реНрдпрд╛рд╡рд░рдгреАрдп рдЪрд▓рд╛рдВрдЪреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рддреЗ рд▓реЛрдбрдЬрди рдЖрдгрд┐ рд╕реНрддреНрд░реЛрддрд╛рд╡рд░реВрди рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЪрд╛рд▓рд╡рддрд╛рдирд╛ рддреБрдореНрд╣реА рдЬреЗ рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реЗ рдЖрд╣реЗ.
apiVersion: apps/v1
kind: Deployment
metadata:
name: loadgenerator
spec:
selector:
matchLabels:
app: loadgenerator
replicas: 1
template:
metadata:
labels:
app: loadgenerator
spec:
terminationGracePeriodSeconds: 5
restartPolicy: Always
containers:
- name: main
image: gcr.io/google-samples/istio/loadgen:v0.0.1
imagePullPolicy: Always
env:
- name: SERVER_ADDR
value: "http://hellosvc:80/"
- name: REQUESTS_PER_SECOND
value: "10"
resources:
requests:
cpu: 300m
memory: 256Mi
limits:
cpu: 500m
memory: 512Mi
рдПрдХрджрд╛ рд▓реЛрдбрдЬрди рдлреАрд▓реНрдбрд╕рд╛рдареА рдпреЗрдгрд╛рд▒реНрдпрд╛ рд╡рд┐рдирдВрддреНрдпрд╛ рд╕реНрд╡реАрдХрд╛рд░рдд рдирд╛рд╣реА рдкреНрд░рдХрд╛рд░ рд╕реВрдЪрд┐рдд рдХреНрд▓рд╕реНрдЯрд░рдЖрдпрдкреА. рд╣рд╛ рдкреНрд░рдХрд╛рд░ рдПрдХ рд╕рддрддрдЪрд╛ IP рдкрддреНрддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЛ рдЬреЛ рдХреНрд▓рд╕реНрдЯрд░рдордзреАрд▓ рд╕реЗрд╡рд╛ рд╡рд╛рдкрд░реВ рд╢рдХрддрд╛рдд, рдкрд░рдВрддреБ рд╣рд╛ IP рдкрддреНрддрд╛ рдмрд╛рд╣реНрдп рдХреНрд▓рд╛рдпрдВрдЯрдЪреНрдпрд╛ рд╕рдВрдкрд░реНрдХрд╛рдд рдпреЗрдд рдирд╛рд╣реА.
apiVersion: v1
kind: Service
metadata:
name: loadgensvc
spec:
type: ClusterIP
selector:
app: loadgenerator
ports:
- name: http
port: 80
targetPort: 8080
GKE рдордзреНрдпреЗ рдХрдВрдЯреЗрдирд░ рддреИрдирд╛рдд рдХрд░рдгреЗ
1) рдЙрджрд╛рд╣рд░рдг рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХреЗрд╡рд░ рдЬрд╛ рд╕рд░реНрд╡реНрд╣рд░:
cd YOUR_WORKING_DIRECTORY/istio-samples/sample-apps/helloserver/server/
2) рдЙрдШрдбрд╛ рд╕рд░реНрд╡реНрд╣рд░.yaml рдордЬрдХреВрд░ рд╕рдВрдкрд╛рджрдХрд╛рдд.
3) рдлреАрд▓реНрдбрдордзреАрд▓ рдирд╛рд╡ рдмрджрд▓рд╛ рдкреНрд░рддрд┐рдорд╛ рддреБрдордЪреНрдпрд╛ рдбреЙрдХрд░ рдЗрдореЗрдЬрдЪреНрдпрд╛ рдирд╛рд╡рд╛рд╡рд░.
image: gcr.io/PROJECT_ID/preparing-istio/helloserver:v0.0.1
рдкреБрдирд░реНрд╕реНрдерд┐рдд рдХрд░рд╛ PROJECT_ID рддреБрдордЪреНрдпрд╛ GCP рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЖрдпрдбреАрд╡рд░.
4) рдЬрддрди рдХрд░рд╛ рдЖрдгрд┐ рдмрдВрдж рдХрд░рд╛ рд╕рд░реНрд╡реНрд╣рд░.yaml.
5) YAML рдлрд╛рдИрд▓ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рд╡рд░ рддреИрдирд╛рдд рдХрд░рд╛:
kubectl apply -f server.yaml
рдпрд╢рд╕реНрд╡реАрд░рд┐рддреНрдпрд╛ рдкреВрд░реНрдг рдЭрд╛рд▓реНрдпрд╛рд╡рд░, рдХрдорд╛рдВрдб рдЦрд╛рд▓реАрд▓ рдХреЛрдб рддрдпрд╛рд░ рдХрд░рддреЗ:
deployment.apps/helloserver created
service/hellosvc created
6) рдбрд┐рд░реЗрдХреНрдЯрд░реА рд╡рд░ рдЬрд╛ рдЬреЗрдереЗ рд▓реЛрдбрдЬрди:
cd ../loadgen
7) рдЙрдШрдбрд╛ loadgen.yaml рдордЬрдХреВрд░ рд╕рдВрдкрд╛рджрдХрд╛рдд.
8) рдлреАрд▓реНрдбрдордзреАрд▓ рдирд╛рд╡ рдмрджрд▓рд╛ рдкреНрд░рддрд┐рдорд╛ рддреБрдордЪреНрдпрд╛ рдбреЙрдХрд░ рдЗрдореЗрдЬрдЪреНрдпрд╛ рдирд╛рд╡рд╛рд╡рд░.
image: gcr.io/PROJECT_ID/preparing-istio/loadgenv0.0.1
рдкреБрдирд░реНрд╕реНрдерд┐рдд рдХрд░рд╛ PROJECT_ID рддреБрдордЪреНрдпрд╛ GCP рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЖрдпрдбреАрд╡рд░.
9) рдЬрддрди рдХрд░рд╛ рдЖрдгрд┐ рдмрдВрдж рдХрд░рд╛ loadgen.yaml, рдЯреЗрдХреНрд╕реНрдЯ рдПрдбрд┐рдЯрд░ рдмрдВрдж рдХрд░рд╛.
10) YAML рдлрд╛рдИрд▓ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рд╡рд░ рддреИрдирд╛рдд рдХрд░рд╛:
kubectl apply -f loadgen.yaml
рдпрд╢рд╕реНрд╡реАрд░рд┐рддреНрдпрд╛ рдкреВрд░реНрдг рдЭрд╛рд▓реНрдпрд╛рд╡рд░, рдХрдорд╛рдВрдб рдЦрд╛рд▓реАрд▓ рдХреЛрдб рддрдпрд╛рд░ рдХрд░рддреЗ:
deployment.apps/loadgenerator created
service/loadgensvc created
11) рд╢реЗрдВрдЧрд╛рдВрдЪреА рд╕реНрдерд┐рддреА рддрдкрд╛рд╕рд╛:
kubectl get pods
рдХрдорд╛рдВрдб рд╕реНрдерд┐рддреА рджрд░реНрд╢рд╡рддреЗ:
NAME READY STATUS RESTARTS AGE
helloserver-69b9576d96-mwtcj 1/1 Running 0 58s
loadgenerator-774dbc46fb-gpbrz 1/1 Running 0 57s
12) рдкреЙрдбрдордзреВрди рдНрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдЧ рдХрд╛рдврд╛ рд▓реЛрдбрдЬрди. рдмрджрд▓рд╛ POD_ID рдорд╛рдЧреАрд▓ рдЙрддреНрддрд░рд╛рддреАрд▓ рдЕрднрд┐рдЬреНрдЮрд╛рдкрдХрд╛рдХрдбреЗ.
kubectl logs loadgenerator-POD_ID
13) рдмрд╛рд╣реНрдп IP рдкрддреНрддреЗ рдорд┐рд│рд╡рд╛ рд╣реЕрд▓реЛрд╕рд╡реНрд╣реАрд╕реА:
kubectl get service
рдХрдорд╛рдВрдб рдкреНрд░рддрд┐рд╕рд╛рдж рдпрд╛рд╕рд╛рд░рдЦреЗ рдХрд╛рд╣реАрддрд░реА рджрд┐рд╕рддреЗ:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
hellosvc LoadBalancer 10.81.15.158 192.0.2.1 80:31127/TCP 33m
kubernetes ClusterIP 10.81.0.1 <none> 443/TCP 93m
loadgensvc ClusterIP 10.81.15.155 <none> 80/TCP 4m52s
14) рдпрд╛рдВрдирд╛ рд╡рд┐рдирдВрддреА рдкрд╛рдард╡рд╛ рд╣реЕрд▓реЛрд╕рд╡реНрд╣реАрд╕реА: рдмрджрд▓рд╛ рдмрд╛рд╣реНрдп_рдЖрдпрдкреА рдмрд╛рд╣реНрдп IP рдкрддреНрддреНрдпрд╛рд╡рд░ рд╣реЕрд▓реЛрд╕рд╡реНрд╣реАрд╕реА.
curl http://EXTERNAL_IP
рдЪрд▓рд╛ Istio рд╡рд░ рдШреЗрдК
рддреБрдордЪреНрдпрд╛рдХрдбреЗ рдЖрдзреАрдкрд╛рд╕реВрдирдЪ GKE рд╡рд░ рдПрдХ рдЕрд░реНрдЬ рддреИрдирд╛рдд рдЖрд╣реЗ. рд▓реЛрдбрдЬрди Kubernetes DNS рд╡рд╛рдкрд░реВ рд╢рдХрддрд╛ (hellosvc:80) рдпрд╛рдВрдирд╛ рд╡рд┐рдирдВрддреА рдкрд╛рдард╡рдгреНрдпрд╛рд╕рд╛рдареА рд╕рд░реНрд╡реНрд╣рд░рдЖрдгрд┐ рддреБрдореНрд╣реА рд╡рд┐рдирдВрддреНрдпрд╛ рдкрд╛рдард╡реВ рд╢рдХрддрд╛ рд╕рд░реНрд╡реНрд╣рд░ рдмрд╛рд╣реНрдп IP рдкрддреНрддреНрдпрд╛рджреНрд╡рд╛рд░реЗ. рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдордзреНрдпреЗ рдЕрдиреЗрдХ рд╡реИрд╢рд┐рд╖реНрдЯреНрдпреЗ рдЕрд╕рд▓реА рддрд░реА, рд╕реЗрд╡рд╛рдВрдмрджреНрджрд▓ рдХрд╛рд╣реА рдорд╛рд╣рд┐рддреА рдЧрд╣рд╛рд│ рдЖрд╣реЗ:
- рд╕реЗрд╡рд╛ рдХрд╢рд╛ рдкреНрд░рдХрд╛рд░реЗ рд╕рдВрд╡рд╛рдж рд╕рд╛рдзрддрд╛рдд? рд╕реЗрд╡рд╛рдВрдордзреАрд▓ рд╕рдВрдмрдВрдз рдХрд╛рдп рдЖрд╣реЗрдд? рд╕реЗрд╡рд╛ рджрд░рдореНрдпрд╛рди рд░рд╣рджрд╛рд░реА рдХрд╢реА рдЪрд╛рд▓рддреЗ? рдпрд╛рдЪреА рддреБрдореНрд╣рд╛рд▓рд╛ рдЬрд╛рдгреАрд╡ рдЖрд╣реЗ рдХрд╛ рд▓реЛрдбрдЬрди рд▓рд╛ рд╡рд┐рдирдВрддреНрдпрд╛ рдкрд╛рдард╡рддреЗ рд╕рд░реНрд╡реНрд╣рд░, рдкрд░рдВрддреБ рдХрд▓реНрдкрдирд╛ рдХрд░рд╛ рдХреА рддреБрдореНрд╣рд╛рд▓рд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдмрджреНрджрд▓ рдХрд╛рд╣реАрд╣реА рдорд╛рд╣рд┐рддреА рдирд╛рд╣реА. рдпрд╛ рдкреНрд░рд╢реНрдирд╛рдВрдЪреА рдЙрддреНрддрд░реЗ рджреЗрдгреНрдпрд╛рд╕рд╛рдареА, GKE рдордзреНрдпреЗ рдЪрд╛рд▓реВ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдкреЙрдбреНрд╕рдЪреА рдпрд╛рджреА рдкрд╛рд╣реВ.
- рдореЗрдЯреНрд░рд┐рдХреНрд╕. рдХрд┐рддреА рдХрд╛рд│ рд╕рд░реНрд╡реНрд╣рд░ рдпреЗрдгрд╛рд░реНтАНрдпрд╛ рд╡рд┐рдирдВрддреАрд▓рд╛ рдкреНрд░рддрд┐рд╕рд╛рдж рджреЗрддреЛ? рд╕рд░реНрд╡реНрд╣рд░рд▓рд╛ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдж рдХрд┐рддреА рд╡рд┐рдирдВрддреНрдпрд╛ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛рдд? рддреЗ рддреНрд░реБрдЯреА рд╕рдВрджреЗрд╢ рджреЗрддреЗ рдХрд╛?
- рд╕реБрд░рдХреНрд╖рд╛ рдорд╛рд╣рд┐рддреА. рджрд░рдореНрдпрд╛рди рд╡рд╛рд╣рддреВрдХ рд▓реЛрдбрдЬрди ╨╕ рд╕рд░реНрд╡реНрд╣рд░ рдлрдХреНрдд рдкрд╛рд░ рдХрд░рддреЗ HTTP рдХрд┐рдВрд╡рд╛ рджреНрд╡рд╛рд░реЗ
mTLS ?
Istio рдпрд╛ рд╕рд░реНрд╡ рдкреНрд░рд╢реНрдирд╛рдВрдЪреА рдЙрддреНрддрд░реЗ рджреЗрддреЗ. рд╣реЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, Istio рдПрдХ рд╕рд╛рдЗрдбрдХрд╛рд░ рдкреНрд░реЙрдХреНрд╕реА рдареЗрд╡рддреЛ
рджреВрдд рдкреНрд░реЙрдХреНрд╕реАрдВрдордзреАрд▓ рдХрдиреЗрдХреНрд╢рди рд╕реЗрд╡рд╛ рдЬрд╛рд│реА рддрдпрд╛рд░ рдХрд░рддрд╛рдд. рд╕рд░реНрд╡реНрд╣рд┐рд╕ рдореЗрд╢ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдЪреНрдпрд╛ рд╢реАрд░реНрд╖рд╕реНрдерд╛рдиреА рдирд┐рдпрдВрддреНрд░рдгрд╛рдЪрд╛ рдПрдХ рд╕реНрддрд░ рдкреНрд░рджрд╛рди рдХрд░рддреЗ.
рджреВрдд рдкреНрд░реЙрдХреНрд╕реА рддреНрдпрд╛рдВрдЪреНрдпрд╛ рд╕реНрд╡рддрдГрдЪреНрдпрд╛ рдХрдВрдЯреЗрдирд░рдордзреНрдпреЗ рдЪрд╛рд▓рдд рдЕрд╕рд▓реНрдпрд╛рдиреЗ, рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЛрдбрдордзреНрдпреЗ рдЬрд╡рд│рдЬрд╡рд│ рдХреЛрдгрддрд╛рд╣реА рдмрджрд▓ рди рдХрд░рддрд╛ Istio GKE рдХреНрд▓рд╕реНрдЯрд░рдЪреНрдпрд╛ рд╡рд░ рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ. рдкрд░рдВрддреБ рддреБрдордЪрд╛ рдЕрд░реНрдЬ Istio рджреНрд╡рд╛рд░реЗ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рддреБрдореНрд╣реА рдХрд╛рд╣реА рдХрд╛рдо рдХреЗрд▓реЗ рдЖрд╣реЗ:
- рд╕рд░реНрд╡ рдХрдВрдЯреЗрдирд░рд╕рд╛рдареА рд╕реЗрд╡рд╛. рдЙрдкрдпреЛрдЬрдирд╛рдВрдирд╛ рд╕рд░реНрд╡реНрд╣рд░ ╨╕ рд▓реЛрдбрдЬрди Kubernetes рд╕реЗрд╡реЗрд╢реА рдЬреЛрдбрд▓реЗрд▓реЗ. рдЕрдЧрджреА рд▓реЛрдбрдЬрди, рдЬреНрдпрд╛рдВрдирд╛ рдпреЗрдгрд╛рд░реНтАНрдпрд╛ рд╡рд┐рдирдВрддреНрдпрд╛ рдорд┐рд│рдд рдирд╛рд╣реАрдд, рддреЗрдереЗ рдПрдХ рд╕реЗрд╡рд╛ рдЖрд╣реЗ.
- рд╕реЗрд╡рд╛рдВрдордзреАрд▓ рдмрдВрджрд░рд╛рдВрдирд╛ рдирд╛рд╡реЗ рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдЬрд░реА рд╕реЗрд╡рд╛ рдкреЛрд░реНрдЯ GKE рдордзреНрдпреЗ рдЕрдирд╛рдорд┐рдд рд╕реЛрдбрд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд, Istio рд▓рд╛ рддреБрдореНрд╣реА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ
рдкреЛрд░реНрдЯ рдирд╛рд╡ рддреНрдпрд╛рдЪреНрдпрд╛ рдкреНрд░реЛрдЯреЛрдХреЙрд▓рдЪреНрдпрд╛ рдЕрдиреБрд╖рдВрдЧрд╛рдиреЗ. YAML рдлрд╛рдИрд▓ рдордзреНрдпреЗ рдмрдВрджрд░ рд╕рд░реНрд╡реНрд╣рд░ рдореНрд╣рдгрддрд╛рдд httpрдХрд╛рд░рдг рд╕рд░реНрд╡реНрд╣рд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╡рд╛рдкрд░рддреЛ HTTP... рддрд░ рд╕реЗрд╡рд╛ рд╡рд╛рдкрд░рд▓реЗ gRPC, рддреБрдореНрд╣реА рдмрдВрджрд░рд╛рд▓рд╛ рдирд╛рд╡ рджреНрдпрд╛рд▓ grpc. - рддреИрдирд╛рддреА рдзреНрд╡рдЬрд╛рдВрдХрд┐рдд рдЖрд╣реЗрдд. рдореНрд╣рдгреВрди, рддреБрдореНрд╣реА Istio рдЪреА рд░рд╣рджрд╛рд░реА рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рд╡реИрд╢рд┐рд╖реНрдЯреНрдпреЗ рд╡рд╛рдкрд░реВ рд╢рдХрддрд╛, рдЬрд╕реЗ рдХреА рд╕рдорд╛рди рд╕реЗрд╡реЗрдЪреНрдпрд╛ рдЖрд╡реГрддреНрддреНрдпрд╛рдВрдордзреНрдпреЗ рд░рд╣рджрд╛рд░реА рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдгреЗ.
Istio рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдд рдЖрд╣реЗ
Istio рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рдЪреЗ рджреЛрди рдорд╛рд░реНрдЧ рдЖрд╣реЗрдд. рдХрд░реВ рд╢рдХрддреЛ
рдПрдХ рдкрд░реНрдпрд╛рдп рдирд┐рд╡рдбрд╛, рдпреЛрдЧреНрдп рдорд╛рд░реНрдЧрджрд░реНрд╢рдХрд╛рдЪреЗ рдкреБрдирд░рд╛рд╡рд▓реЛрдХрди рдХрд░рд╛ рдЖрдгрд┐ рддреБрдордЪреНрдпрд╛ рдХреНрд▓рд╕реНрдЯрд░рд╡рд░ Istio рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕реВрдЪрдирд╛рдВрдЪреЗ рдЕрдиреБрд╕рд░рдг рдХрд░рд╛. рддреБрдореНрд╣рд╛рд▓рд╛ рддреБрдордЪреНрдпрд╛ рдирд╡реНрдпрд╛рдиреЗ рддреИрдирд╛рдд рдХреЗрд▓реЗрд▓реНрдпрд╛ рдНрдкреНрд▓рд┐рдХреЗрд╢рдирд╕рд╣ Istio рд╡рд╛рдкрд░рд╛рдпрдЪреЗ рдЕрд╕рд▓реНрдпрд╛рд╕,
рд╕реНрд╡рдЪреНрдЫрддрд╛
рддреБрдореНрд╣реА рдпрд╛ рдЯреНрдпреБрдЯреЛрд░рд┐рдпрд▓рдордзреНрдпреЗ рд╡рд╛рдкрд░рд▓реЗрд▓реНрдпрд╛ рд╕рдВрд╕рд╛рдзрдирд╛рдВрд╕рд╛рдареА рддреБрдордЪреНрдпрд╛ Google рдХреНрд▓рд╛рдЙрдб рдкреНрд▓реЕрдЯрдлреЙрд░реНрдо рдЦрд╛рддреНрдпрд╛рд╡рд░ рд╢реБрд▓реНрдХ рдЖрдХрд╛рд░рд▓реЗ рдЬрд╛рдгреЗ рдЯрд╛рд│рдгреНрдпрд╛рд╕рд╛рдареА, рдПрдХрджрд╛ рддреБрдореНрд╣реА Istio рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реНрдпрд╛рдирдВрддрд░ рдЖрдгрд┐ рдирдореБрдирд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рд╕рд╣ рдкреНрд▓реЗ рдХреЗрд▓реНрдпрд╛рдирдВрддрд░ рдХрдВрдЯреЗрдирд░ рдХреНрд▓рд╕реНрдЯрд░ рд╣рдЯрд╡рд╛. рд╣реЗ рд╕рд░реНрд╡ рдХреНрд▓рд╕реНрдЯрд░ рд╕рдВрд╕рд╛рдзрдиреЗ рдХрд╛рдвреВрди рдЯрд╛рдХреЗрд▓, рдЬрд╕реЗ рдХреА рдЧрдгрдирд╛ рдЙрджрд╛рд╣рд░рдгреЗ, рдбрд┐рд╕реНрдХ рдЖрдгрд┐ рдиреЗрдЯрд╡рд░реНрдХ рд╕рдВрд╕рд╛рдзрдиреЗ.
рдкреБрдвреАрд▓ рдХрд╛рдп рдЖрд╣реЗ?
-
рдЦрд╛рд▓реАрд▓ рддрдВрддреНрд░рдЬреНрдЮрд╛рди рдПрдХреНрд╕рдкреНрд▓реЛрд░ рдХрд░рд╛:
рдЧреЛрджреА рдХрд╛рдордЧрд╛рд░ рдХрдВрдЯреЗрдирд░ рдХрдВрдЯреЗрдирд░ рдиреЛрдВрджрдгреА рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ G.K.E. рд╕реЗрд╡рд╛ рдЬрд╛рд│реА рдЗрд╕реНрдЯрд┐рдУ
-
рдЦрд╛рд▓реАрд▓ рд╕рд╛рдзрдиреЗ рдПрдХреНрд╕рдкреНрд▓реЛрд░ рдХрд░рд╛:
-
рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рд╕рдВрдХрд▓реНрдкрдирд╛ рдЬрд╛рдгреВрди рдШреНрдпрд╛:
рд╕реНрддреНрд░реЛрдд: www.habr.com