Istio рд╡рд┐рддрд░рд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рдЬрдбрд╛рди, рд╕реБрд░рдХреНрд╖рд┐рдд рд░ рдирд┐рдЧрд░рд╛рдиреАрдХреЛ рд▓рд╛рдЧрд┐ рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЙрдкрдХрд░рдг рд╣реЛред Istio рд▓реЗ рд╕реНрдХреЗрд▓рдорд╛ рд╕рдлреНрдЯрд╡реЗрдпрд░ рдЪрд▓рд╛рдЙрди рд░ рдкреНрд░рдмрдиреНрдз рдЧрд░реНрди рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░рдХрд╛ рдкреНрд░рд╡рд┐рдзрд┐рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫ, рдЬрд╕рдорд╛ рдкреНрдпрд╛рдХреЗрдЬ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЛрдб рд░ рдбрд┐рдкреНрд▓реЛрдпрдореЗрдиреНрдЯрдХрд╛ рд▓рд╛рдЧрд┐ рдирд┐рд░реНрднрд░рддрд╛рд╣рд░реВ, рд░ рддреА рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЧрд░реНрди Kubernetes рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫред рддрд╕рд░реНрде, Istio рд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рддрдкрд╛рдИрд▓реЗ рдпреА рдкреНрд░рд╡рд┐рдзрд┐рд╣рд░реВрдорд╛ рдЖрдзрд╛рд░рд┐рдд рдмрд╣реБрд╡рд┐рдз рд╕реЗрд╡рд╛рд╣рд░реВрд╕рдБрдЧрдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╕рдирд▓реЗ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫ рднрдиреНрдиреЗ рдерд╛рд╣рд╛ рд╣реБрдиреБрдкрд░реНрдЫ рдмрд┐рдирд╛ Istioред рдпрджрд┐ рдпреА рдЙрдкрдХрд░рдгрд╣рд░реВ рд░ рдЕрд╡рдзрд╛рд░рдгрд╛рд╣рд░реВ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдкрд╣рд┐рд▓реЗ рдиреИ рдкрд░рд┐рдЪрд┐рдд рдЫрдиреН рднрдиреЗ, рдпреЛ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдЫреЛрдбреНрди рд╕реНрд╡рддрдиреНрддреНрд░ рдорд╣рд╕реБрд╕ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рд╕реАрдзрд╛ рдЦрдгреНрдбрдорд╛ рдЬрд╛рдиреБрд╣реЛрд╕реНред
рдпреЛ рдПрдХ рдЪрд░рдг-рджрд░-рдЪрд░рдг рдЧрд╛рдЗрдб рд╣реЛ рдЬрд╣рд╛рдБ рд╣рд╛рдореА рд╕реНрд░реЛрдд рдХреЛрдб рджреЗрдЦрд┐ GKE рдХрдиреНрдЯреЗрдирд░ рд╕рдореНрдо рд╕рдореНрдкреВрд░реНрдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдорд╛рд░реНрдлрдд рддрдкрд╛рдИрд▓рд╛рдИ рдЙрджрд╛рд╣рд░рдг рдорд╛рд░реНрдлрдд рдпреА рдкреНрд░рд╡рд┐рдзрд┐рд╣рд░реВрдХреЛ рдЖрдзрд╛рд░рднреВрдд рдмреБрдЭрд╛рдЗ рджрд┐рдиреЗрдЫреМрдВред рддрдкрд╛рдИрд▓реЗ рдпреЛ рдкрдирд┐ рджреЗрдЦреНрдиреБрд╣реБрдиреЗрдЫ рдХрд┐ рдХрд╕рд░реА Istio рд▓реЗ рдпреА рдкреНрд░рд╡рд┐рдзрд┐рд╣рд░реВрдХреЛ рд╢рдХреНрддрд┐рдХреЛ рд▓рд╛рдн рдЙрдард╛рдЙрдБрдЫред рдпрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ, рдХреБрдмрд░реНрдиреЗрдЯреНрд╕, рд╕реЗрд╡рд╛ рдореЗрд╕рд╣рд░реВ, рд╡рд╛ Istio рдмрд╛рд░реЗ рдХреЗрд╣реА рдерд╛рд╣рд╛ рдЫреИрди рднрдиреА рдорд╛рдиреНрджрдЫред
рдХрд╛рд░реНрдпрд╣рд░реВ
рдпрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓рдорд╛, рддрдкрд╛рдИрдВрд▓реЗ рдирд┐рдореНрди рдХрд╛рд░реНрдпрд╣рд░реВ рдкреВрд░рд╛ рдЧрд░реНрдиреБрд╣реБрдиреЗрдЫ:
- рдзреЗрд░реИ рд╕реЗрд╡рд╛рд╣рд░реВрдХреЛ рд╕рд╛рде рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдирдорд╕реНрдХрд╛рд░ рд╕рдВрд╕рд╛рд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕рд┐рдХреНрджреИред
- рд╕реНрд░реЛрдд рдХреЛрдбрдмрд╛рдЯ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реНред
- рдХрдиреНрдЯреЗрдирд░рд╣рд░реВрдорд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкреНрдпрд╛рдХреЗрдЬ рдЧрд░реНрджреИред
- Kubernetes рдХреНрд▓рд╕реНрдЯрд░ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджреИред
- рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ рддреИрдирд╛рде рдЧрд░реНрджреИред
рд╕реБрд░реБ рдЧрд░реНрдиреБ рднрдиреНрджрд╛ рдкрд╣рд┐рд▓реЗ
Kubernetes рдЗрдиреНрдЬрд┐рди API рд╕рдХреНрд╖рдо рдЧрд░реНрди рдирд┐рд░реНрджреЗрд╢рдирд╣рд░реВ рдкрд╛рд▓рдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН:
- рдЬрд╛рдиреБрд╣реЛрд╕реН
Kubernetes рдЗрдиреНрдЬрд┐рди рдкреГрд╖реНрда рдЧреБрдЧрд▓ рдХреНрд▓рд╛рдЙрдб рдкреНрд▓реЗрдЯрдлрд░реНрдо рдХрдиреНрд╕реЛрд▓рдорд╛ред - рдПрдЙрдЯрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд╡рд╛ рдЪрдпрди рдЧрд░реНрдиреБрд╣реЛрд╕реНред
- API рд░ рд╕рдореНрдмрдиреНрдзрд┐рдд рд╕реЗрд╡рд╛рд╣рд░реВ рд╕рдХреНрд╖рдо рдирднрдПрд╕рдореНрдо рдкрд░реНрдЦрдиреБрд╣реЛрд╕реНред рдпрд╕рд▓реЗ рдХреЗрд╣реА рдорд┐рдиреЗрдЯ рд▓рд┐рди рд╕рдХреНрдЫред
- рддрдкрд╛рдИрдВрдХреЛ Google рдХреНрд▓рд╛рдЙрдб рдкреНрд▓реЗрдЯрдлрд░реНрдо рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рд▓рд╛рдЧрд┐ рдмрд┐рд▓рд┐рдЩ рд╕реЗрдЯ рдЕрдк рдЧрд░рд┐рдПрдХреЛ рдЫ рднрдиреА рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрдиреБрд╣реЛрд╕реНред
рдмрд┐рд▓рд┐рдЩ рд╕рдХреНрд╖рдо рдЧрд░реНрдиреЗ рддрд░рд┐рдХрд╛ рдЬрд╛рдиреНрдиреБрд╣реЛрд╕реН .
рдпрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓рдорд╛, рддрдкрд╛рдЗрдБ рдХреНрд▓рд╛рдЙрдб рд╢реЗрд▓ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдЬрд╕рд▓реЗ рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рди рддрдпрд╛рд░ рдЧрд░реНрджрдЫ
рд╡рд┐рдХрд▓реНрдк A: рдХреНрд▓рд╛рдЙрдб рд╢реЗрд▓ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИ
рдХреНрд▓рд╛рдЙрдб рд╢реЗрд▓ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдлрд╛рдЗрджрд╛рд╣рд░реВ:
- Python 2 рд░ Python 3 рд╡рд┐рдХрд╛рд╕ рд╡рд╛рддрд╛рд╡рд░рдг (рд╕рд╣рд┐рдд рднреНрд░реБрдг) рдкреВрд░реНрдг рд░реВрдкрдорд╛ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░рд┐рдПрдХреЛ рдЫред
- рдХрдорд╛рдгреНрдб рд▓рд╛рдЗрди рдЙрдкрдХрд░рдгрд╣рд░реВ gCloud, рдбрдХрд░, рдЬрд╛рдиреБрд╣реЛрд╕реН ╨╕ kubectl, рдЬреБрди рд╣рд╛рдореАрд▓реЗ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗрдЫреМрдВ рдкрд╣рд┐рд▓реЗ рдиреИ рд╕реНрдерд╛рдкрд┐рдд рдЫред
- рддрдкрд╛рдИрдВрд╕рдБрдЧ рдЫрдиреМрдЯ рдЧрд░реНрди рдзреЗрд░реИ рдЫ
рдкрд╛рда рд╕рдореНрдкрд╛рджрдХрд╣рд░реВ :рдХреЛрдб рд╕рдореНрдкрд╛рджрдХ , рдЬреБрди рдХреНрд▓рд╛рдЙрдб рд╢реЗрд▓ рд╡рд┐рдиреНрдбреЛрдХреЛ рд╢реАрд░реНрд╖рдорд╛ рд░рд╣реЗрдХреЛ рд╕рдореНрдкрд╛рджрди рдЖрдЗрдХрдирд╕рдБрдЧ рдЦреБрд▓реНрдЫред- Emacs, Vim рд╡рд╛ Nano, рдЬреБрди рдХреНрд▓рд╛рдЙрдб рд╢реЗрд▓рдорд╛ рдХрдорд╛рдгреНрдб рд▓рд╛рдЗрдирдмрд╛рдЯ рдЦреБрд▓реНрдЫред
рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди
- GCP рдХрдиреНрд╕реЛрд▓рдорд╛ рдЬрд╛рдиреБрд╣реЛрд╕реНред
- рдмрдЯрди рдХреНрд▓рд┐рдХ рдЧрд░реНрдиреБрд╣реЛрд╕реН рдХреНрд▓рд╛рдЙрдб рд╢реЗрд▓ рд╕рдХреНрд░рд┐рдп рдЧрд░реНрдиреБрд╣реЛрд╕реН (рдХреНрд▓рд╛рдЙрдб рд╢реЗрд▓ рд╕рдХреНрд░рд┐рдп рдЧрд░реНрдиреБрд╣реЛрд╕реН) GCP рдХрдиреНрд╕реЛрд▓ рд╡рд┐рдиреНрдбреЛрдХреЛ рд╢реАрд░реНрд╖рдорд╛ред
рддрд▓реНрд▓реЛ рднрд╛рдЧрдорд╛
рд╡рд┐рдХрд▓реНрдк B: рд╕реНрдерд╛рдиреАрдп рд░реВрдкрдорд╛ рдХрдорд╛рдгреНрдб рд▓рд╛рдЗрди рдЙрдкрдХрд░рдгрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИ
рдпрджрд┐ рддрдкрд╛рдЗрдБ рд▓рд┐рдирдХреНрд╕ рд╡рд╛ 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
рдзреЗрд░реИ рд╕реЗрд╡рд╛рд╣рд░реВрдХреЛ рд╕рд╛рде рдПрдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЕрдиреНрд╡реЗрд╖рдг
рдирдореВрдирд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкрд╛рдЗрдердирдорд╛ рд▓реЗрдЦрд┐рдПрдХреЛ рдЫ рд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реА рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛ рдЧрд░реНрдиреЗ рджреБрдИрд╡рдЯрд╛ рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЫрдиреН
- рд╕рд░реНрднрд░: рдПрдХ рдЕрдиреНрдд рдмрд┐рдиреНрджреБ рд╕рдВрдЧ рд╕рд░рд▓ рд╕рд░реНрднрд░ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреБрд╣реЛрд╕реН, /, рдЬрд╕рд▓реЗ рдХрдиреНрд╕реЛрд▓рдорд╛ "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: */*
рдиреЗрдЯрд╡рд░реНрдХрд┐рдЩ рдкрд░рд┐рдкреНрд░реЗрдХреНрд╖реНрдпрдмрд╛рдЯ, рд╕рдореНрдкреВрд░реНрдг рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдПрдХрд▓ рд╣реЛрд╕реНрдЯ (рд╕реНрдерд╛рдиреАрдп рдХрдореНрдкреНрдпреБрдЯрд░ рд╡рд╛ рдХреНрд▓рд╛рдЙрдб рд╢реЗрд▓ рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рди) рдорд╛ рдЪрд▓реНрдЫред рддреНрдпрд╕реИрд▓реЗ рддрдкрд╛рдИрдВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯрдорд╛ рдЕрдиреБрд░реЛрдз рдкрдард╛рдЙрди рд╕рд░реНрднрд░.
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" ]
- рдЯреЛрд▓реА рдкрд╛рдЗрдердирдмрд╛рдЯ: рдЖрдзрд╛рд░рдХреЛ рд░реВрдкрдорд╛ рей-рдкрд╛рддрд▓реЛ рдбрдХрд░рд▓рд╛рдИ рдирд╡реАрдирддрдо рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдмрддрд╛рдЙрдБрдЫ
Python 3 рдЫрд╡рд┐ рдЖрдзрд╛рд░рдХреЛ рд░реВрдкрдорд╛ред - рдЯреЛрд▓реА рдХрд╛рдкреАред ред рд╣рд╛рд▓рдХреЛ рдХрд╛рд░реНрдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдорд╛ рд╕реНрд░реЛрдд рдлрд╛рдЗрд▓рд╣рд░реВ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реНрджрдЫ (рд╣рд╛рдореНрд░реЛ рдЕрд╡рд╕реНрдерд╛рдорд╛ рдорд╛рддреНрд░ server.py) рдХрдиреНрдЯреЗрдирд░рдХреЛ рдлрд╛рдЗрд▓ рдкреНрд░рдгрд╛рд▓реАрдорд╛ред
- ENTRYPOINT рдХрдиреНрдЯреЗрдирд░ рд╕реБрд░реБ рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреЗ рдЖрджреЗрд╢ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реНрджрдЫред рд╣рд╛рдореНрд░реЛ рдХреЗрд╕рдорд╛, рдпреЛ рдЖрджреЗрд╢ рд▓рдЧрднрдЧ рддрдкрд╛рдИрд▓реЗ рдЪрд▓рд╛рдЙрдиреБ рднрдПрдХреЛ рдЬрд╕реНрддреИ рд╣реЛ server.py рд╕реНрд░реЛрдд рдХреЛрдбрдмрд╛рдЯред
- рдЯреЛрд▓реА ExposE рднрдиреНрдиреЗ рд╕рдВрдХреЗрдд рдЧрд░реНрдЫ рд╕рд░реНрднрд░ рдкреЛрд░реНрдЯ рдорд╛рд░реНрдлрдд рдбрд╛рдЯрд╛рдХреЛ рд▓рд╛рдЧрд┐ рдкрд░реНрдЦрдиреНрдЫ 8080ред рдпреЛ рдЯреЛрд▓реА рд╣реЛрдЗрди
рдкреЛрд░реНрдЯрд╣рд░реВ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ ред рдпреЛ рдХреЗрд╣рд┐ рдкреНрд░рдХрд╛рд░рдХреЛ рдХрд╛рдЧрдЬрд╛рдд рд╣реЛ рдЬреБрди рдкреЛрд░реНрдЯ рдЦреЛрд▓реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ 8080 рдХрдиреНрдЯреЗрдирд░ рд╕реБрд░реБ рдЧрд░реНрджрд╛ред
рддрдкрд╛рдИрдВрдХреЛ рдЖрд╡реЗрджрди рдХрдиреНрдЯреЗрдирд░рд╛рдЗрдЬ рдЧрд░реНрдиреЗ рддрдпрд╛рд░реА рдЧрд░реНрджреИ
1) рдирд┐рдореНрди рд╡рд╛рддрд╛рд╡рд░рдг рдЪрд░ рд╕реЗрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЧрд░реНрдиреБрд╣реЛрд╕реН PROJECT_ID рддрдкрд╛рдИрдВрдХреЛ GCP рдкрд░рд┐рдпреЛрдЬрдирд╛ ID рдорд╛ред
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
рд▓реЛрдбрдЬреЗрдирдХреЛ рдХрдиреНрдЯреЗрдирд░рд╛рдЗрдЬреЗрд╢рди
рез) рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реАрдорд╛ рдЬрд╛рдиреБрд╣реЛрд╕реН рдЬрд╣рд╛рдБ рдЙрджрд╛рд╣рд░рдг рдЕрд╡рд╕реНрдерд┐рдд рдЫ рд▓реЛрдбрдЬрди:
cd ../loadgen
2) рдЫрд╡рд┐ рд╕рдЩреНрдХрд▓рди:
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 рдХреНрд▓рд╕реНрдЯрд░ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджреИ:
рез) рдХреНрд▓рд╕реНрдЯрд░ рдмрдирд╛рдЙрдиреБрд╣реЛрд╕реН:
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) рдЕрдм рддрдкрд╛рдИрдВ Kubernetes рдорд╛рд░реНрдлрдд рдХреБрд░рд╛рдХрд╛рдиреА рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ 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
Kubernetes рдкреНрд░рдореБрдЦ рдЕрд╡рдзрд╛рд░рдгрд╛рд╣рд░реВ
рд░реЗрдЦрд╛рдЪрд┐рддреНрд░рд▓реЗ GKE рдорд╛ рдПрдЙрдЯрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рджреЗрдЦрд╛рдЙрдБрдЫ:
рддрдкрд╛рдИрдВрд▓реЗ GKE рдорд╛ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБ рдЕрдШрд┐, Kubernetes рдХреЛ рдореБрдЦреНрдп рдЕрд╡рдзрд╛рд░рдгрд╛рд╣рд░реВ рд╕рд┐рдХреНрдиреБрд╣реЛрд╕реНред рддреНрдпрд╣рд╛рдБ рдзреЗрд░реИ рдЕрдиреНрддрдорд╛ рд▓рд┐рдЩреНрдХрд╣рд░реВ рдЫрдиреН рдпрджрд┐ рддрдкрд╛рдИрдВ рдердк рдЬрд╛рдиреНрди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫ рднрдиреЗред
- рдиреЛрдбреНрд╕ рд░ рдХреНрд▓рд╕реНрдЯрд░рд╣рд░реВред GKE рдорд╛, рдиреЛрдб рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рди рд╣реЛред рдЕрдиреНрдп Kubernetes рдкреНрд▓реЗрдЯрдлрд░реНрдорд╣рд░реВрдорд╛, рдиреЛрдб рдХрдореНрдкреНрдпреБрдЯрд░ рд╡рд╛ рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рди рд╣реБрди рд╕рдХреНрдЫред рдХреНрд▓рд╕реНрдЯрд░ рдиреЛрдбрд╣рд░реВрдХреЛ рд╕рдВрдЧреНрд░рд╣ рд╣реЛ рдЬрд╕рд▓рд╛рдИ рдПрдХрд▓ рдПрдХрд╛рдЗ рдорд╛рдиреНрди рд╕рдХрд┐рдиреНрдЫ рдЬрд╣рд╛рдБ рддрдкрд╛рдЗрдБ рдХрдиреНрдЯреЗрдирд░рд╛рдЗрдЬреНрдб рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реБрдиреНрдЫред
- рдлрд▓реАрд╣рд░реВред Kubernetes рдорд╛, рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ рдкреЛрдбрд╣рд░реВрдорд╛ рдЪрд▓реНрдЫрдиреНред Kubernetes рдорд╛ Pod рдПрдХ рдЕрд╡рд┐рднрд╛рдЬреНрдп рдПрдХрд╛рдИ рд╣реЛред рдкреЛрдбрд▓реЗ рдПрдХ рд╡рд╛ рдзреЗрд░реИ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ рд░рд╛рдЦреНрдЫред рддрдкрд╛рдЗрдБ рд╕рд░реНрднрд░ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ рддреИрдирд╛рдд рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ рд░ рд▓реЛрдбрдЬрди рдЕрд▓рдЧ рдкреЛрдбрд╣рд░реВрдорд╛ред рдЬрдм рдкреЛрдбрдорд╛ рдзреЗрд░реИ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ рд╣реБрдиреНрдЫрдиреН (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдПрдкреНрд▓рд┐рдХреЗрд╕рди рд╕рд░реНрднрд░ рд░
рдкреНрд░реЛрдХреНрд╕реА рд╕рд░реНрднрд░ ), рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ рдПрдХрд▓ рдЗрдХрд╛рдИрдХреЛ рд░реВрдкрдорд╛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рд╣реБрдиреНрдЫрдиреН рд░ рдкреЛрдб рд╕реНрд░реЛрддрд╣рд░реВ рд╕рд╛рдЭрд╛ рдЧрд░реНрдЫрдиреНред - рдкрд░рд┐рдирд┐рдпреЛрдЬрдирд╣рд░реВред Kubernetes рдорд╛, рдПрдХ рддреИрдирд╛рддреА рдПрдХ рд╡рд╕реНрддреБ рд╣реЛ рдЬреБрди рд╕рдорд╛рди рдкреЛрдбрд╣рд░реВрдХреЛ рд╕рдВрдЧреНрд░рд╣ рд╣реЛред рдбрд┐рдкреНрд▓реЛрдпрдореЗрдиреНрдЯрд▓реЗ рдХреНрд▓рд╕реНрдЯрд░ рдиреЛрдбрд╣рд░реВрдорд╛ рд╡рд┐рддрд░рд┐рдд рдкреЛрдбрд╣рд░реВрдХреЛ рдмрд╣реБ рдкреНрд░рддрд┐рдХреГрддрд┐рд╣рд░реВ рд▓рдиреНрдЪ рдЧрд░реНрджрдЫред рдбрд┐рдкреНрд▓реЛрдпрдореЗрдиреНрдЯрд▓реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрдорд╛ рдкреЛрдбрд╣рд░реВ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЧрд░реНрджрдЫ рдЬреБрди рдЕрд╕рдлрд▓ рд╡рд╛ рдЕрдиреБрддреНрддрд░рджрд╛рдпреА рдЫрдиреНред
- Kubernetes рд╕реЗрд╡рд╛ред GKE рдорд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЛрдб рдЪрд▓рд╛рдЙрдБрджрд╛, рдмреАрдЪрдХреЛ рдЬрдбрд╛рди рд▓реЛрдбрдЬрди ╨╕ рд╕рд░реНрднрд░ред рдЬрдм рддрдкрд╛рдИрдВрд▓реЗ рдХреНрд▓рд╛рдЙрдб рд╢реЗрд▓ рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рди рд╡рд╛ рдбреЗрд╕реНрдХрдЯрдкрдорд╛ рд╕реЗрд╡рд╛рд╣рд░реВ рд╕реБрд░реБ рдЧрд░реНрдиреБрднрдпреЛ, рддрдкрд╛рдИрдВрд▓реЗ рдЕрдиреБрд░реЛрдзрд╣рд░реВ рдкрдард╛рдЙрдиреБрднрдпреЛ рд╕рд░реНрднрд░ рдорд╛ рд╕реНрдерд╛рдиреАрдпрд╣реЛрд╕реНрдЯ: 8080ред рдПрдХ рдкрдЯрдХ GKE рдорд╛ рддреИрдирд╛рдд рдЧрд░рд┐рд╕рдХреЗрдкрдЫрд┐, рдЙрдкрд▓рдмреНрдз рдиреЛрдбрд╣рд░реВрдорд╛ рдкреЛрдбрд╣рд░реВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░рд┐рдиреНрдЫред рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛, рддрдкрд╛рдЗрдБрд╕рдБрдЧ рдкреЛрдб рдХреБрди рдиреЛрдбрдорд╛ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдЫ рднрдиреНрдиреЗрдорд╛ рдХреБрдиреИ рдирд┐рдпрдиреНрддреНрд░рдг рдЫреИрди, рддреНрдпрд╕реИрд▓реЗ рддрдкрд╛рдЗрдБ
рдлрд▓реАрд╣рд░реВ рдХреБрдиреИ рд╕реНрдерд╛рдпреА рдЖрдИрдкреА рдареЗрдЧрд╛рдирд╛рд╣рд░реВ рдЫреИрдирдиреНред
рдХреЛ рд▓рд╛рдЧрд┐ рдПрдХ рдЖрдИрдкреА рдареЗрдЧрд╛рдирд╛ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд╕рд░реНрднрд░, рддрдкрд╛рдИрдВрд▓реЗ рдкреЛрдбрдХреЛ рд╢реАрд░реНрд╖рдорд╛ рдиреЗрдЯрд╡рд░реНрдХ рдЕрдореВрд░реНрддрддрд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред рддреНрдпреИ рд╣реЛKubernetes рд╕реЗрд╡рд╛ ред Kubernetes рд╕реЗрд╡рд╛рд▓реЗ рдкреЛрдбрд╣рд░реВрдХреЛ рд╕реЗрдЯрдХреЛ рд▓рд╛рдЧрд┐ рдирд┐рд░рдиреНрддрд░ рдЕрдиреНрддреНрдп рдмрд┐рдиреНрджреБ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫред рддреНрдпрд╣рд╛рдБ рдХреЗрд╣реА рдЫрдиреНрд╕реЗрд╡рд╛рд╣рд░реВрдХреЛ рдкреНрд░рдХрд╛рд░ . рд╕рд░реНрднрд░ рдЙрдкрдпреЛрдЧрд╣рд░реБ рд▓реЛрдб рдмреНрдпрд╛рд▓реЗрдиреНрд╕рд░, рдЬрд╕рд▓реЗ рд╕рдореНрдкрд░реНрдХ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдмрд╛рд╣реНрдп IP рдареЗрдЧрд╛рдирд╛ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ рд╕рд░реНрднрд░ рдХреНрд▓рд╕реНрдЯрд░ рдмрд╛рд╣рд┐рд░рдмрд╛рдЯред
Kubernetes рд╕рдБрдЧ DNS рдирд╛рдорд╣рд░реВ рддреЛрдХреНрдиреЗ рдмрд┐рд▓реНрдЯ-рдЗрди DNS рдкреНрд░рдгрд╛рд▓реА рдкрдирд┐ рдЫ (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, helloserver.default.cluster.local) рд╕реЗрд╡рд╛рд╣рд░реВред рдпрд╕рдХрд╛ рд▓рд╛рдЧрд┐ рдзрдиреНрдпрд╡рд╛рдж, рдХреНрд▓рд╕реНрдЯрд░ рднрд┐рддреНрд░рдХрд╛ рдкреЛрдбрд╣рд░реВрд▓реЗ рд╕реНрдерд╛рдпреА рдареЗрдЧрд╛рдирд╛рдорд╛ рдХреНрд▓рд╕реНрдЯрд░рдХрд╛ рдЕрдиреНрдп рдкреЛрдбрд╣рд░реВрд╕рдБрдЧ рд╕рдЮреНрдЪрд╛рд░ рдЧрд░реНрдЫрдиреНред DNS рдирд╛рдо рдХреНрд▓рд╕реНрдЯрд░ рдмрд╛рд╣рд┐рд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдБрджреИрди, рдЬрд╕реНрддреИ рдХреНрд▓рд╛рдЙрдб рд╢реЗрд▓ рд╡рд╛ рдХрдореНрдкреНрдпреБрдЯрд░рдорд╛ред
Kubernetes рдкреНрд░рдХрдЯ рд╣реБрдиреНрдЫ
рдЬрдм рддрдкрд╛рдИрдВрд▓реЗ рд╕реНрд░реЛрддрдмрд╛рдЯ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЪрд▓рд╛рдЙрдиреБрднрдпреЛ, рддрдкрд╛рдИрдВрд▓реЗ рдЕрдирд┐рд╡рд╛рд░реНрдп рдЖрджреЗрд╢ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрднрдпреЛ рдкрд╛рдЗрдерди реи
server.py
Imperative рд▓реЗ рдПрдЙрдЯрд╛ рдХреНрд░рд┐рдпрд╛рд▓рд╛рдИ рдмреБрдЭрд╛рдЙрдБрдЫ: "рдпреЛ рдЧрд░реНрдиреБрд╣реЛрд╕реНред"
Kubernetes рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫ
рддрдкрд╛рдИрдВрд▓реЗ manifests рд╡рд╛ рдлрд╛рдЗрд▓рд╣рд░реВрдорд╛ рдЗрдЪреНрдЫрд┐рдд рдЕрд╡рд╕реНрдерд╛ рд╕рдВрдХреЗрдд рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ
рдЙрджрд╛рд╣рд░рдгрдХреЛ рд▓рд╛рдЧрд┐ YAML рдлрд╛рдЗрд▓ рд╕рдорд╛рд╡реЗрд╢ рдЫ рд╕рд░реНрднрд░ ╨╕ рд▓реЛрдбрдЬрдиред рдкреНрд░рддреНрдпреЗрдХ YAML рдлрд╛рдЗрд▓рд▓реЗ рдбрд┐рдкреНрд▓реЛрдЗрдореЗрдиреНрдЯ рд╡рд╕реНрддреБ рд░ Kubernetes рд╕реЗрд╡рд╛рдХреЛ рдЗрдЪреНрдЫрд┐рдд рдЕрд╡рд╕реНрдерд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрджрдЫред
server.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 рдареЗрдЧрд╛рдирд╛ рдЫ рд░ рдХреНрд▓рд╕реНрдЯрд░ рдмрд╛рд╣рд┐рд░рдмрд╛рдЯ рдкрд╣реБрдБрдЪрдпреЛрдЧреНрдп рдЫред
- targetPort: рддрдкрд╛рдИрд▓рд╛рдИ рд╕рдореНрдЭрдирд╛ рдЕрдиреБрд╕рд╛рд░, рдЯреЛрд▓реА рдПрдХреНрд╕рдкреЛрдЬ 8080 ╨▓ рдбрдХрд░рдлрд╛рдЗрд▓ рдкреЛрд░реНрдЯ рдЙрдкрд▓рдмреНрдз рдЧрд░рд╛рдПрдХреЛ рдЫреИрдиред рддрдкрд╛рдИрдВ рдкреЛрд░реНрдЯ рдкреНрд░рджрд╛рди рдЧрд░реНрдиреБрд╣реЛрд╕реН 8080рддрд╛рдХрд┐ рддрдкрд╛рдИрдВ рдХрдиреНрдЯреЗрдирд░ рд╕рдореНрдкрд░реНрдХ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рд╕рд░реНрднрд░ рдХреНрд▓рд╕реНрдЯрд░ рдмрд╛рд╣рд┐рд░ред рд╣рд╛рдореНрд░реЛ рдорд╛рдорд▓рд╛ рдорд╛ hellosvc.default.cluster.local:80 (рдЫреЛрдЯреЛ рдирд╛рдо: hellovc) рдкреЛрд░реНрдЯрд╕рдБрдЧ рдореЗрд▓ рдЦрд╛рдиреНрдЫ 8080 рдкреЛрдб рдЖрдИрдкреА рдареЗрдЧрд╛рдирд╛рд╣рд░реВ рдирдорд╕реНрдХрд╛рд░ рд╕рд░реНрднрд░.
- рдкреЛрд░реНрдЯ: рдпреЛ рдХреНрд▓рд╕реНрдЯрд░рдХрд╛ рдЕрдиреНрдп рд╕реЗрд╡рд╛рд╣рд░реВрд▓реЗ рдЕрдиреБрд░реЛрдз рдкрдард╛рдЙрдиреЗ рдкреЛрд░реНрдЯ рдирдореНрдмрд░ рд╣реЛред
loadgen.yaml
рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд╡рд╕реНрддреБ loadgen.yaml рдЬрд╕реНрддреИ рджреЗрдЦрд┐рдиреБ server.yamlред рднрд┐рдиреНрдирддрд╛ рдпреЛ рд╣реЛ рдХрд┐ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд╡рд╕реНрддреБрд▓реЗ рдЦрдгреНрдб рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫ рдкрдард╛рдЙрдиреБрд╣реЛрд╕реНред рдпрд╕рд▓реЗ рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрдиреЗ рд╡рд╛рддрд╛рд╡рд░рдгреАрдп рдЪрд░рд╣рд░реВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реНрджрдЫ рд▓реЛрдбрдЬрди рд░ рдЬреБрди рддрдкрд╛рдИрдВрд▓реЗ рд╕реНрд░реЛрддрдмрд╛рдЯ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЪрд▓рд╛рдЙрдБрджрд╛ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреБрднрдпреЛред
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
рдПрдХ рдкрдЯрдХ рд▓реЛрдбрдЬрди рдХреНрд╖реЗрддреНрд░рдХреЛ рд▓рд╛рдЧрд┐ рдЖрдЧрдорди рдЕрдиреБрд░реЛрдзрд╣рд░реВ рд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрджреИрди рдкреНрд░рдХрд╛рд░ рд╕рдВрдХреЗрдд рдХреНрд▓рд╕реНрдЯрд░рдЖрдИрдкреАред рдпрд╕ рдкреНрд░рдХрд╛рд░рд▓реЗ рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рд░рд╣реЗрдХрд╛ рд╕реЗрд╡рд╛рд╣рд░реВрд▓реЗ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреЗ рд╕реНрдерд╛рдпреА рдЖрдИрдкреА рдареЗрдЧрд╛рдирд╛ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ, рддрд░ рдпреЛ рдЖрдИрдкреА рдареЗрдЧрд╛рдирд╛ рдмрд╛рд╣реНрдп рдХреНрд▓рд╛рдЗрдиреНрдЯрд╣рд░реВрдорд╛ рдкрд░реНрджреИрдиред
apiVersion: v1
kind: Service
metadata:
name: loadgensvc
spec:
type: ClusterIP
selector:
app: loadgenerator
ports:
- name: http
port: 80
targetPort: 8080
GKE рдорд╛ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ рддреИрдирд╛рде рдЧрд░реНрджреИ
рез) рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реАрдорд╛ рдЬрд╛рдиреБрд╣реЛрд╕реН рдЬрд╣рд╛рдБ рдЙрджрд╛рд╣рд░рдг рдЕрд╡рд╕реНрдерд┐рдд рдЫ рд╕рд░реНрднрд░:
cd YOUR_WORKING_DIRECTORY/istio-samples/sample-apps/helloserver/server/
реи) рдЦреЛрд▓реНрдиреБрд╣реЛрд╕реН server.yaml рдкрд╛рда рд╕рдореНрдкрд╛рджрдХрдорд╛ред
3) рдлрд┐рд▓реНрдбрдорд╛ рдирд╛рдо рдмрджрд▓реНрдиреБрд╣реЛрд╕реН рдЫрд╡рд┐ рддрдкрд╛рдИрдВрдХреЛ рдбрдХрд░ рдЫрд╡рд┐рдХреЛ рдирд╛рдордорд╛ред
image: gcr.io/PROJECT_ID/preparing-istio/helloserver:v0.0.1
рдмрджрд▓реНрдиреБрд╣реЛрд╕реН PROJECT_ID рддрдкрд╛рдИрдВрдХреЛ GCP рдкрд░рд┐рдпреЛрдЬрдирд╛ ID рдорд╛ред
4) рдмрдЪрдд рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдмрдиреНрдж рдЧрд░реНрдиреБрд╣реЛрд╕реН server.yaml.
5) YAML рдлрд╛рдЗрд▓ Kubernetes рдорд╛ рддреИрдирд╛рдд рдЧрд░реНрдиреБрд╣реЛрд╕реН:
kubectl apply -f server.yaml
рд╕рдлрд▓ рд╕рдорд╛рдкреНрддрд┐рдорд╛, рдЖрджреЗрд╢рд▓реЗ рдирд┐рдореНрди рдХреЛрдб рдЙрддреНрдкрд╛рджрди рдЧрд░реНрджрдЫ:
deployment.apps/helloserver created
service/hellosvc created
6) рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реАрдорд╛ рдЬрд╛рдиреБрд╣реЛрд╕реН рдЬрд╣рд╛рдБ рд▓реЛрдбрдЬрди:
cd ../loadgen
реи) рдЦреЛрд▓реНрдиреБрд╣реЛрд╕реН loadgen.yaml рдкрд╛рда рд╕рдореНрдкрд╛рджрдХрдорд╛ред
8) рдлрд┐рд▓реНрдбрдорд╛ рдирд╛рдо рдмрджрд▓реНрдиреБрд╣реЛрд╕реН рдЫрд╡рд┐ рддрдкрд╛рдИрдВрдХреЛ рдбрдХрд░ рдЫрд╡рд┐рдХреЛ рдирд╛рдордорд╛ред
image: gcr.io/PROJECT_ID/preparing-istio/loadgenv0.0.1
рдмрджрд▓реНрдиреБрд╣реЛрд╕реН PROJECT_ID рддрдкрд╛рдИрдВрдХреЛ GCP рдкрд░рд┐рдпреЛрдЬрдирд╛ ID рдорд╛ред
9) рдмрдЪрдд рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдмрдиреНрдж рдЧрд░реНрдиреБрд╣реЛрд╕реН loadgen.yaml, рдкрд╛рда рд╕рдореНрдкрд╛рджрдХ рдмрдиреНрдж рдЧрд░реНрдиреБрд╣реЛрд╕реНред
10) YAML рдлрд╛рдЗрд▓ Kubernetes рдорд╛ рддреИрдирд╛рдд рдЧрд░реНрдиреБрд╣реЛрд╕реН:
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) рдмрд╛рд╣реНрдп рдЖрдИрдкреА рдареЗрдЧрд╛рдирд╛рд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреБрд╣реЛрд╕реН hellovc:
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) рдЕрдиреБрд░реЛрдз рдкрдард╛рдЙрдиреБрд╣реЛрд╕реН hellovc: рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди EXTERNAL_IP рдмрд╛рд╣реНрдп рдЖрдИрдкреА рдареЗрдЧрд╛рдирд╛рдорд╛ hellovc.
curl http://EXTERNAL_IP
Istio рдорд╛ рд▓рд┐рдиреБрд╣реЛрд╕реН
рддрдкрд╛рдИрдВрд╕рдБрдЧ рдкрд╣рд┐рд▓реЗ рдиреИ GKE рдорд╛ рддреИрдирд╛рде рдЧрд░рд┐рдПрдХреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЫред рд▓реЛрдбрдЬрди Kubernetes DNS рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ (hellovc:80) рдорд╛ рдЕрдиреБрд░реЛрдз рдкрдард╛рдЙрди рд╕рд░реНрднрд░рд░ рддрдкрд╛рдИрдВ рдЕрдиреБрд░реЛрдз рдкрдард╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рд╕рд░реНрднрд░ рдмрд╛рд╣реНрдп рдЖрдИрдкреА рдареЗрдЧрд╛рдирд╛ рджреНрд╡рд╛рд░рд╛ред рдпрджреНрдпрдкрд┐ Kubernetes рдорд╛ рдзреЗрд░реИ рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рдЫрдиреН, рддреНрдпрд╣рд╛рдБ рд╕реЗрд╡рд╛рд╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛ рдХреЗрд╣реА рдЬрд╛рдирдХрд╛рд░реА рд╣рд░рд╛рдЗрд░рд╣реЗрдХреЛ рдЫ:
- рд╕реЗрд╡рд╛рд╣рд░реВ рдХрд╕рд░реА рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛ рдЧрд░реНрдЫрдиреН? рд╕реЗрд╡рд╛рд╣рд░реВ рдмреАрдЪрдХреЛ рд╕рдореНрдмрдиреНрдз рдХреЗ рд╣реЛ? рд╕реЗрд╡рд╛рд╣рд░реВ рдмреАрдЪ рдЯреНрд░рд╛рдлрд┐рдХ рдХрд╕рд░реА рдкреНрд░рд╡рд╛рд╣ рд╣реБрдиреНрдЫ? рдХреЗ рддрдкрд╛рдИрд▓рд╛рдИ рдерд╛рд╣рд╛ рдЫ рдХрд┐ рд▓реЛрдбрдЬрди рдорд╛ рдЕрдиреБрд░реЛрдз рдкрдард╛рдЙрдБрдЫ рд╕рд░реНрднрд░, рддрд░ рдХрд▓реНрдкрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН рдХрд┐ рддрдкрд╛рдИрд▓рд╛рдИ рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рдмрд╛рд░реЗрдорд╛ рдХреЗрд╣рд┐ рдерд╛рд╣рд╛ рдЫреИрдиред рдпреА рдкреНрд░рд╢реНрдирд╣рд░реВрдХреЛ рдЬрд╡рд╛рдл рджрд┐рди, GKE рдорд╛ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдкреЛрдбрд╣рд░реВрдХреЛ рд╕реВрдЪреА рд╣реЗрд░реМрдВред
- рдореЗрдЯреНрд░рд┐рдХреНрд╕ред рдХрддрд┐ рд▓рд╛рдореЛ рд╕рд░реНрднрд░ рдЖрдЧрдорди рдЕрдиреБрд░реЛрдзрд▓рд╛рдИ рдЬрд╡рд╛рдл рджрд┐рдиреБрд╣реБрдиреНрдЫ? рд╕рд░реНрднрд░ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐ рд╕реЗрдХреЗрдиреНрдб рдХрддрд┐ рдЕрдиреБрд░реЛрдзрд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рд╣реБрдиреНрдЫрдиреН? рдХреЗ рдпрд╕рд▓реЗ рддреНрд░реБрдЯрд┐ рд╕рдиреНрджреЗрд╢рд╣рд░реВ рджрд┐рдиреНрдЫ?
- рд╕реБрд░рдХреНрд╖рд╛ рдЬрд╛рдирдХрд╛рд░реАред рдмреАрдЪрдХреЛ рдпрд╛рддрд╛рдпрд╛рдд рд▓реЛрдбрдЬрди ╨╕ рд╕рд░реНрднрд░ рдорд╛рддреНрд░ рдкрд╛рд╕ рд╣реБрдиреНрдЫ HTTP рд╡рд╛ рджреНрд╡рд╛рд░рд╛
mTLS ?
Istio рдпреА рд╕рдмреИ рдкреНрд░рд╢реНрдирд╣рд░реВрдХреЛ рдЬрд╡рд╛рдл рджрд┐рдиреНрдЫред рдпреЛ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, Istio рд▓реЗ рд╕рд╛рдЗрдбрдХрд╛рд░ рдкреНрд░реЛрдХреНрд╕реА рд░рд╛рдЦреНрдЫ
рджреВрдд рдкреНрд░реЛрдХреНрд╕реАрд╣рд░реВ рдмреАрдЪрдХреЛ рдЬрдбрд╛рдирд╣рд░реВрд▓реЗ рд╕реЗрд╡рд╛ рдЬрд╛рд▓ рдмрдирд╛рдЙрдБрдЫред рд╕реЗрд╡рд╛ рдЬрд╛рд▓ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛рд▓реЗ Kubernetes рдХреЛ рдорд╛рдерд┐ рдирд┐рдпрдиреНрддреНрд░рдг рдХреЛ рдПрдХ рддрд╣ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫред
рджреВрдд рдкреНрд░реЛрдХреНрд╕реАрд╣рд░реВ рдЖрдлреНрдиреИ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВрдорд╛ рдЪрд▓реНрдиреЗ рд╣реБрдирд╛рд▓реЗ, Istio рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЛрдбрдорд╛ рд▓рдЧрднрдЧ рдХреБрдиреИ рдкрд░рд┐рд╡рд░реНрддрди рдирдЧрд░реА GKE рдХреНрд▓рд╕реНрдЯрд░рдХреЛ рд╢реАрд░реНрд╖рдорд╛ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рддрд░ рддрдкрд╛рдИрдВрд▓реЗ рдЖрдлреНрдиреЛ рдЖрд╡реЗрджрди Istio рджреНрд╡рд╛рд░рд╛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдЧрд░реНрди рддрдпрд╛рд░ рдкрд╛рд░реНрди рдХреЗрд╣реА рдХрд╛рдо рдЧрд░реНрдиреБрднрдПрдХреЛ рдЫ:
- рд╕рдмреИ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕реЗрд╡рд╛рд╣рд░реВред рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдЧрд░реНрди рд╕рд░реНрднрд░ ╨╕ рд▓реЛрдбрдЬрди Kubernetes рд╕реЗрд╡рд╛рд╕рдБрдЧ рдЬреЛрдбрд┐рдПрдХреЛ рдЫред рдкрдирд┐ рд▓реЛрдбрдЬрди, рдЬрд╕рд▓реЗ рдЖрдЧрдорди рдЕрдиреБрд░реЛрдзрд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрджреИрди, рддреНрдпрд╣рд╛рдБ рд╕реЗрд╡рд╛ рдЫред
- рд╕реЗрд╡рд╛рд╣рд░реВрдорд╛ рдкреЛрд░реНрдЯрд╣рд░реВ рдирд╛рдорд╣рд░реВ рд╣реБрдиреБрдкрд░реНрдЫред рдпрджреНрдпрдкрд┐ рд╕реЗрд╡рд╛ рдкреЛрд░реНрдЯрд╣рд░реВ GKE рдорд╛ рдирд╛рдорд░рд╣рд┐рдд рдЫреЛрдбреНрди рд╕рдХрд┐рдиреНрдЫ, Istio рд▓реЗ рддрдкрд╛рдЗрдБрд▓рд╛рдИ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ
рдкреЛрд░реНрдЯ рдирд╛рдо рдЙрд╕рдХреЛ рдкреНрд░реЛрдЯреЛрдХрд▓ рдЕрдиреБрд╕рд╛рд░ред YAML рдорд╛ рдкреЛрд░реНрдЯрдХреЛ рд▓рд╛рдЧрд┐ рдлрд╛рдЗрд▓ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд╕рд░реНрднрд░ рднрдирд┐рдиреНрдЫ httpрдХрд┐рдирднрдиреЗ рд╕рд░реНрднрд░рд▓реЗ рдкреНрд░реЛрдЯреЛрдХрд▓ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫ HTTPред рдпрджрд┐ рд╕реЗрд╡рд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдпреЛ gRPC, рддрдкрд╛рдИрдВрд▓реЗ рдкреЛрд░реНрдЯрдХреЛ рдирд╛рдо рджрд┐рдиреБрд╣реБрдиреЗрдЫ grpc. - рдбрд┐рдкреНрд▓реЛрдпрдореЗрдиреНрдЯрд╣рд░реВ рдлреНрд▓реНрдпрд╛рдЧ рдЧрд░рд┐рдПрдХрд╛ рдЫрдиреНред рддрд╕рд░реНрде, рддрдкрд╛рдИрдВ Istio рдХреЛ рдЯреНрд░рд╛рдлрд┐рдХ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдЬрд╕реНрддреИ рд╕рдорд╛рди рд╕реЗрд╡рд╛рдХреЛ рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВ рдмреАрдЪ рдЯреНрд░рд╛рдлрд┐рдХ рд╡рд┐рднрд╛рдЬрдиред
Istio рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрджреИ
Istio рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рджреБрдИ рддрд░рд┐рдХрд╛рд╣рд░реВ рдЫрдиреНред рд╕рдХреНрдЫ
рдПрдЙрдЯрд╛ рд╡рд┐рдХрд▓реНрдк рдЪрдпрди рдЧрд░реНрдиреБрд╣реЛрд╕реН, рдЙрдкрдпреБрдХреНрдд рдЧрд╛рдЗрдбрдХреЛ рд╕рдореАрдХреНрд╖рд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рд░ рддрдкрд╛рдИрдВрдХреЛ рдХреНрд▓рд╕реНрдЯрд░рдорд╛ Istio рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рдирд┐рд░реНрджреЗрд╢рдирд╣рд░реВ рдкрд╛рд▓рдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдпрджрд┐ рддрдкрд╛рдЗрдБ рддрдкрд╛рдЗрдБрдХреЛ рднрд░реНрдЦрд░реИ рддреИрдирд╛рдд рдЧрд░рд┐рдПрдХреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рд╕рд╛рде Istio рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫ рднрдиреЗ,
рд╕рдлрд╛рдИ
рддрдкрд╛рдИрдВрд▓реЗ рдпрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓рдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрднрдПрдХрд╛ рд╕реНрд░реЛрддрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рддрдкрд╛рдИрдВрдХреЛ Google рдХреНрд▓рд╛рдЙрдб рдкреНрд▓реЗрдЯрдлрд░реНрдо рдЦрд╛рддрд╛рдорд╛ рдЪрд╛рд░реНрдЬ рд╣реБрдирдмрд╛рдЯ рдЬреЛрдЧрд┐рди, рддрдкрд╛рдИрдВрд▓реЗ Istio рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реЗрдкрдЫрд┐ рд░ рдирдореВрдирд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╕рдБрдЧ рдЦреЗрд▓реНрдиреБрднрдПрдкрдЫрд┐ рдХрдиреНрдЯреЗрдирд░ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдЯрд╛рдЙрдиреБрд╣реЛрд╕реНред рдпрд╕рд▓реЗ рд╕рдмреИ рдХреНрд▓рд╕реНрдЯрд░ рд╕реНрд░реЛрддрд╣рд░реВ рд╣рдЯрд╛рдЙрдиреЗрдЫ, рдЬрд╕реНрддреИ рдЧрдгрдирд╛ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ, рдбрд┐рд╕реНрдХрд╣рд░реВ, рд░ рдиреЗрдЯрд╡рд░реНрдХ рд╕реНрд░реЛрддрд╣рд░реВред
рдХреЗ рдЕрд░реНрдХреЛ рдЫ?
-
рдирд┐рдореНрди рдкреНрд░рд╡рд┐рдзрд┐рд╣рд░реВ рдЕрдиреНрд╡реЗрд╖рдг рдЧрд░реНрдиреБрд╣реЛрд╕реН:
рдбрдХрд░ .╨л рдХрдиреНрдЯреЗрдирд░ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ GKE рд╕реЗрд╡рд╛ рдЬрд╛рд▓ рдЗрд╕реНрддрд┐рдУ
-
рдирд┐рдореНрди рдЙрдкрдХрд░рдгрд╣рд░реВ рдЕрдиреНрд╡реЗрд╖рдг рдЧрд░реНрдиреБрд╣реЛрд╕реН:
-
Kubernetes рдЕрд╡рдзрд╛рд░рдгрд╛рд╣рд░реВ рд╕рд┐рдХреНрдиреБрд╣реЛрд╕реН:
рдХреНрд▓рд╕реНрдЯрд░рд╣рд░реВ рдиреЛрдбрд╣рд░реВ рдлрд▓реАрд╣рд░реВ рд╕реЗрд╡рд╛рд╣рд░реВ рддреИрдирд╛рддреА
рд╕реНрд░реЛрдд: www.habr.com