Istio рдЖрдгрд┐ Linkerd рд╕рд╛рдареА CPU рд╡рд╛рдкрд░ рдмреЗрдВрдЪрдорд╛рд░реНрдХ

Istio рдЖрдгрд┐ Linkerd рд╕рд╛рдареА CPU рд╡рд╛рдкрд░ рдмреЗрдВрдЪрдорд╛рд░реНрдХ

рдкрд░рд┐рдЪрдп

рдЖрдореНрд╣реА рдордзреНрдпреЗ рдЖрд╣реЛрдд Shopify рд╕реЗрд╡рд╛ рдЬрд╛рд│реА рдореНрд╣рдгреВрди Istio рддреИрдирд╛рдд рдХрд░рдгреНрдпрд╛рд╕ рд╕реБрд░реБрд╡рд╛рдд рдХреЗрд▓реА. рддрддреНрд╡рддрдГ, рдПрдХ рдЧреЛрд╖реНрдЯ рд╡рдЧрд│рддрд╛ рд╕рд░реНрд╡ рдХрд╛рд╣реА рдареАрдХ рдЖрд╣реЗ: рддреЗ рдорд╣рд╛рдЧ рдЖрд╣реЗ.

╨Т рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХреЗрд▓реЗ Istio рд╕рд╛рдареА рддреЗ рдореНрд╣рдгрддреЗ:

Istio 1.1 рд╕рд╣, рдкреНрд░реЙрдХреНрд╕реА рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдж рдкреНрд░рддрд┐ 0,6 рд╡рд┐рдирдВрддреНрдпрд╛ рдЕрдВрджрд╛рдЬреЗ 1000 vCPUs (рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдХреЛрд░) рд╡рд╛рдкрд░рддреЗ.

рд╕рд░реНрд╡реНрд╣рд┐рд╕ рдореЗрд╢рдордзреАрд▓ рдкрд╣рд┐рд▓реНрдпрд╛ рдкреНрд░рджреЗрд╢рд╛рд╕рд╛рдареА (рдХрдиреЗрдХреНрд╢рдирдЪреНрдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рдЬреВрд▓рд╛ 2 рдкреНрд░реЙрдХреНрд╕реА), рдЖрдордЪреНрдпрд╛рдХрдбреЗ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдж рдПрдХ рджрд╢рд▓рдХреНрд╖ рд╡рд┐рдирдВрддреНрдпрд╛ рджрд░рд╛рдиреЗ рдлрдХреНрдд рдкреНрд░реЙрдХреНрд╕реАрд╕рд╛рдареА 1200 рдХреЛрд░ рдЕрд╕рддреАрд▓. Google рдЪреНрдпрд╛ рдХреЙрд╕реНрдЯ рдХреЕрд▓реНрдХреНрдпреБрд▓реЗрдЯрд░рдиреБрд╕рд╛рд░, рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рдирд╕рд╛рдареА рд╣реЗ рдЕрдВрджрд╛рдЬреЗ $40/рдорд╣рд┐рдирд╛/рдХреЛрд░ рдЖрд╣реЗ n1-standard-64, рдореНрд╣рдгрдЬреЗ, рдПрдХрдЯреНрдпрд╛ рдпрд╛ рдкреНрд░рджреЗрд╢рд╛рд╕рд╛рдареА рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдж 50 рджрд╢рд▓рдХреНрд╖ рд╡рд┐рдирдВрддреНрдпрд╛рдВрд╕рд╛рдареА рджрд░рдорд╣рд╛ 1 рд╣рдЬрд╛рд░ рдбреЙрд▓рд░реНрд╕рдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рдЦрд░реНрдЪ рдпреЗрдИрд▓.

рдЗрд╡реНрд╣рд╛рди рд╕рд┐рдо (рдЗрд╡реНрд╣рд╛рди рд╕рд┐рдо) рджреГрд╖реНрдпрджреГрд╖реНрдЯреНрдпрд╛ рддреБрд▓рдирд╛ рд╕рд░реНрд╡реНрд╣рд┐рд╕ рдореЗрд╢рдиреЗ рдЧреЗрд▓реНрдпрд╛ рд╡рд░реНрд╖реА рд╡рд┐рд▓рдВрдм рдХреЗрд▓рд╛ рдЖрдгрд┐ рдореЗрдорд░реА рдЖрдгрд┐ рдкреНрд░реЛрд╕реЗрд╕рд░рд╕рд╛рдареА рддреЗрдЪ рд╡рдЪрди рджрд┐рд▓реЗ, рдкрд░рдВрддреБ рддреЗ рдХрд╛рд░реНрдп рдХрд░рдд рдирд╛рд╣реА:

рд╡рд░рд╡рд░ рдкрд╛рд╣рддрд╛, values-istio-test.yaml CPU рд╡рд┐рдирдВрддреНрдпрд╛ рдЧрдВрднреАрд░рдкрдгреЗ рд╡рд╛рдврд╡реЗрд▓. рдореА рдорд╛рдЭреЗ рдЧрдгрд┐рдд рдмрд░реЛрдмрд░ рдХреЗрд▓реЗ рдЕрд╕рд▓реНрдпрд╛рд╕, рддреБрдореНрд╣рд╛рд▓рд╛ рдирд┐рдпрдВрддреНрд░рдг рдкреЕрдиреЗрд▓рд╕рд╛рдареА рдЕрдВрджрд╛рдЬреЗ 24 CPU рдХреЛрд░ рдЖрдгрд┐ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░реЙрдХреНрд╕реАрд╕рд╛рдареА 0,5 CPU рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдорд╛рдЭреНрдпрд╛рдХрдбреЗ рддреЗрд╡рдвреЗ рдХрд╛рд╣реА рдирд╛рд╣реА. рдЬреЗрд╡реНрд╣рд╛ рдорд▓рд╛ рдЕрдзрд┐рдХ рд╕рдВрд╕рд╛рдзрдиреЗ рд╡рд╛рдЯрдк рдХреЗрд▓реА рдЬрд╛рддрд╛рдд рддреЗрд╡реНрд╣рд╛ рдореА рдЪрд╛рдЪрдгреНрдпрд╛рдВрдЪреА рдкреБрдирд░рд╛рд╡реГрддреНрддреА рдХрд░реЗрди.

Istio рдЪреА рдХрд╛рдордЧрд┐рд░реА рджреБрд╕рд░реНтАНрдпрд╛ рдУрдкрди рд╕реЛрд░реНрд╕ рд╕рд░реНрд╡реНрд╣рд┐рд╕ рдореЗрд╢рд╢реА рдХрд┐рддреА рд╕рдорд╛рди рдЖрд╣реЗ рд╣реЗ рдорд▓рд╛ рд╕реНрд╡рддрдГрд▓рд╛ рдкрд╣рд╛рдпрдЪреЗ рд╣реЛрддреЗ: рд▓рд┐рдВрдХрд░реНрдб.

рд╕реЗрд╡рд╛ рдЬрд╛рд│реА рд╕реНрдерд╛рдкрдирд╛

рд╕рд░реНрд╡ рдкреНрд░рдердо, рдореА рддреЗ рдПрдХрд╛ рдХреНрд▓рд╕реНрдЯрд░рдордзреНрдпреЗ рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реЗ рд╕реБрдкрд░рдЧреНрд▓реВ:

$ supergloo init
installing supergloo version 0.3.12
using chart uri https://storage.googleapis.com/supergloo-helm/charts/supergloo-0.3.12.tgz
configmap/sidecar-injection-resources created
serviceaccount/supergloo created
serviceaccount/discovery created
serviceaccount/mesh-discovery created
clusterrole.rbac.authorization.k8s.io/discovery created
clusterrole.rbac.authorization.k8s.io/mesh-discovery created
clusterrolebinding.rbac.authorization.k8s.io/supergloo-role-binding created
clusterrolebinding.rbac.authorization.k8s.io/discovery-role-binding created
clusterrolebinding.rbac.authorization.k8s.io/mesh-discovery-role-binding created
deployment.extensions/supergloo created
deployment.extensions/discovery created
deployment.extensions/mesh-discovery created
install successful!

рдореА рд╕реБрдкрд░рдЧреНрд▓реВ рд╡рд╛рдкрд░рд▓рд╛ рдХрд╛рд░рдг рддреЗ рд╕рд░реНрд╡реНрд╣рд┐рд╕ рдореЗрд╢рдЪреЗ рдмреВрдЯрд╕реНрдЯреНрд░реЕрдкрд┐рдВрдЧ рдЦреВрдк рд╕реЛрдкреЗ рдХрд░рддреЗ. рдорд▓рд╛ рдлрд╛рд░ рдХрд╛рд╣реА рдХрд░рд╛рд╡реЗ рд▓рд╛рдЧрд▓реЗ рдирд╛рд╣реА. рдЖрдореНрд╣реА рдЙрддреНрдкрд╛рджрдирд╛рдд рд╕реБрдкрд░рдЧреНрд▓реВ рд╡рд╛рдкрд░рдд рдирд╛рд╣реА, рдкрд░рдВрддреБ рдЕрд╢рд╛ рдХрд╛рд░реНрдпрд╛рд╕рд╛рдареА рддреЗ рдЖрджрд░реНрд╢ рдЖрд╣реЗ. рдорд▓рд╛ рдкреНрд░рддреНрдпреЗрдХ рд╕рд░реНрд╡реНрд╣рд┐рд╕ рдореЗрд╢рд╕рд╛рдареА рдЕрдХреНрд╖рд░рд╢рдГ рджреЛрди рдХрдорд╛рдВрдбреНрд╕ рд╡рд╛рдкрд░рд╛рд╡реЗ рд▓рд╛рдЧрд▓реЗ. рдореА рдкреГрдердХреНрдХрд░рдгрд╛рд╕рд╛рдареА рджреЛрди рдХреНрд▓рд╕реНрдЯрд░ рд╡рд╛рдкрд░рд▓реЗ - рдкреНрд░рддреНрдпреЗрдХреА рдПрдХ Istio рдЖрдгрд┐ Linkerd рд╕рд╛рдареА.

Google Kubernetes Engine рд╡рд░ рд╣рд╛ рдкреНрд░рдпреЛрдЧ рдХрд░рдгреНрдпрд╛рдд рдЖрд▓рд╛. рдореА Kubernetes рд╡рд╛рдкрд░рд▓реЗ 1.12.7-gke.7 рдЖрдгрд┐ рдиреЛрдбреНрд╕рдЪрд╛ рдкреВрд▓ n1-standard-4 рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рдиреЛрдб рд╕реНрдХреЗрд▓рд┐рдВрдЧрд╕рд╣ (рдХрд┐рдорд╛рди 4, рдХрдорд╛рд▓ 16).

рдордЧ рдореА рдХрдорд╛рдВрдб рд▓рд╛рдЗрдирд╡рд░реВрди рджреЛрдиреНрд╣реА рд╕рд░реНрд╡реНрд╣рд┐рд╕ рдореЗрд╢ рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реЗ.

рдкрд╣рд┐рд▓рд╛ рд▓рд┐рдВрдХрд░реНрдб:

$ supergloo install linkerd --name linkerd
+---------+--------------+---------+---------------------------+
| INSTALL |     TYPE     | STATUS  |          DETAILS          |
+---------+--------------+---------+---------------------------+
| linkerd | Linkerd Mesh | Pending | enabled: true             |
|         |              |         | version: stable-2.3.0     |
|         |              |         | namespace: linkerd        |
|         |              |         | mtls enabled: true        |
|         |              |         | auto inject enabled: true |
+---------+--------------+---------+---------------------------+

рдордЧ Istio:

$ supergloo install istio --name istio --installation-namespace istio-system --mtls=true --auto-inject=true
+---------+------------+---------+---------------------------+
| INSTALL |    TYPE    | STATUS  |          DETAILS          |
+---------+------------+---------+---------------------------+
| istio   | Istio Mesh | Pending | enabled: true             |
|         |            |         | version: 1.0.6            |
|         |            |         | namespace: istio-system   |
|         |            |         | mtls enabled: true        |
|         |            |         | auto inject enabled: true |
|         |            |         | grafana enabled: true     |
|         |            |         | prometheus enabled: true  |
|         |            |         | jaeger enabled: true      |
+---------+------------+---------+---------------------------+

рдХреНрд░реЕрд╢-рд▓реВрдкрд▓рд╛ рдХрд╛рд╣реА рдорд┐рдирд┐рдЯреЗ рд▓рд╛рдЧрд▓реА рдЖрдгрд┐ рдирдВрддрд░ рдирд┐рдпрдВрддреНрд░рдг рдкреЕрдиреЗрд▓ рд╕реНрдерд┐рд░ рдЭрд╛рд▓реЗ.

(рдЯреАрдк: SuperGloo рдЖрддреНрддрд╛ рдлрдХреНрдд Istio 1.0.x рдЪреЗ рд╕рдорд░реНрдерди рдХрд░рддреЗ. рдореА Istio 1.1.3 рд╕рд╣ рдкреНрд░рдпреЛрдЧрд╛рдЪреА рдкреБрдирд░рд╛рд╡реГрддреНрддреА рдХреЗрд▓реА, рдкрд░рдВрддреБ рдХреЛрдгрддрд╛рд╣реА рд▓рдХреНрд╖рдгреАрдп рдлрд░рдХ рд▓рдХреНрд╖рд╛рдд рдЖрд▓рд╛ рдирд╛рд╣реА.)

Istio рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рдЙрдкрдпреЛрдЬрди рд╕реЗрдЯ рдХрд░рдд рдЖрд╣реЗ

Istio рд▓рд╛ рд╕рд╛рдЗрдбрдХрд╛рд░ рджреВрдд рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдореНрд╣реА рд╕рд╛рдЗрдбрдХрд╛рд░ рдЗрдВрдЬреЗрдХреНрдЯрд░ - рд╡рд╛рдкрд░рддреЛ MutatingAdmissionWebhook. рдЖрдореНрд╣реА рдпрд╛ рд▓реЗрдЦрд╛рдд рдпрд╛рдмрджреНрджрд▓ рдмреЛрд▓рдгрд╛рд░ рдирд╛рд╣реА. рдореА рдлрдХреНрдд рдЕрд╕реЗ рдореНрд╣рдгреВ рдЗрдЪреНрдЫрд┐рддреЛ рдХреА рд╣рд╛ рдПрдХ рдирд┐рдпрдВрддреНрд░рдХ рдЖрд╣реЗ рдЬреЛ рд╕рд░реНрд╡ рдирд╡реАрди рдкреЙрдбреНрд╕рдЪреНрдпрд╛ рдкреНрд░рд╡реЗрд╢рд╛рд╡рд░ рд▓рдХреНрд╖ рдареЗрд╡рддреЛ рдЖрдгрд┐ рдЧрддрд┐рдорд╛рдирдкрдгреЗ рд╕рд╛рдЗрдбрдХрд╛рд░ рдЖрдгрд┐ initContainer рдЬреЛрдбрддреЛ, рдЬреЛ рдХрд╛рд░реНрдпрд╛рдВрд╕рд╛рдареА рдЬрдмрд╛рдмрджрд╛рд░ рдЕрд╕рддреЛ. iptables.

Shopify рд╡рд░ рдЖрдореНрд╣реА рд╕рд╛рдЗрдбрдХрд╛рд░ рд▓рд╛рдЧреВ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдордЪрд╛ рд╕реНрд╡рддрдГрдЪрд╛ рдНрдХреНрд╕реЗрд╕ рдХрдВрдЯреНрд░реЛрд▓рд░ рд▓рд┐рд╣рд┐рд▓рд╛, рдкрд░рдВрддреБ рдпрд╛ рдмреЗрдВрдЪрдорд╛рд░реНрдХрд╕рд╛рдареА рдореА Istio рд╕рд╣ рдпреЗрдгрд╛рд░рд╛ рдХрдВрдЯреНрд░реЛрд▓рд░ рд╡рд╛рдкрд░рд▓рд╛. рдиреЗрдорд╕реНрдкреЗрд╕рдордзреНрдпреЗ рд╢реЙрд░реНрдЯрдХрдЯ рдЕрд╕рддрд╛рдирд╛ рдХрдВрдЯреНрд░реЛрд▓рд░ рдореБрд▓рднреВрддрд░рд┐рддреНрдпрд╛ рд╕рд╛рдЗрдбрдХрд╛рд░ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рддреЛ istio-injection: enabled:

$ kubectl label namespace irs-client-dev istio-injection=enabled
namespace/irs-client-dev labeled

$ kubectl label namespace irs-server-dev istio-injection=enabled
namespace/irs-server-dev labeled

рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рд▓рд┐рдВрдХрд░реНрдб рдЙрдкрдпреЛрдЬрди рд╕реЗрдЯ рдХрд░рдд рдЖрд╣реЗ

Linkerd рд╕рд╛рдЗрдбрдХрд╛рд░ рдПрдореНрдмреЗрдбрд┐рдВрдЧ рд╕реЗрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдореНрд╣реА рднрд╛рд╖реНрдпреЗ рд╡рд╛рдкрд░рддреЛ (рдореА рддреНрдпрд╛рджреНрд╡рд╛рд░реЗ рд╡реНрдпрдХреНрддрд┐рдЪрд▓рд┐рддрдкрдгреЗ рдЬреЛрдбрд▓реЗ kubectl edit):

metadata:
  annotations:
    linkerd.io/inject: enabled

$ k edit ns irs-server-dev 
namespace/irs-server-dev edited

$ k get ns irs-server-dev -o yaml
apiVersion: v1
kind: Namespace
metadata:
  annotations:
    linkerd.io/inject: enabled
  name: irs-server-dev
spec:
  finalizers:
  - kubernetes
status:
  phase: Active

Istio рдлреЙрд▓реНрдЯ рдЯреЙрд▓рд░рдиреНрд╕ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░

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

рдлреНрд▓реЕрд╢ рд╡рд┐рдХреНрд░реА рджрд░рдореНрдпрд╛рди Shopify рдЪреНрдпрд╛ рдкрд╛рдпрд╛рднреВрдд рд╕реБрд╡рд┐рдзрд╛рдВрдЪрд╛ рдкреНрд░рдЪрдВрдб рднрд╛рд░ рдЖрд╣реЗ. рддреНрдпрд╛рдЪ рд╡реЗрд│реА, Shopify рд╡рд┐рдХреНрд░реЗрддреНрдпрд╛рдВрдирд╛ рдЕрд╢реА рд╡рд┐рдХреНрд░реА рдЕрдзрд┐рдХ рд╡реЗрд│рд╛ рдареЗрд╡рдгреНрдпрд╛рдЪреА рд╢рд┐рдлрд╛рд░рд╕ рдХрд░рддреЗ. рдореЛрдареЗ рдЧреНрд░рд╛рд╣рдХ рдХрдзреАрдХрдзреА рдирд┐рдпреЛрдЬрд┐рдд рдлреНрд▓реЕрд╢ рд╡рд┐рдХреНрд░реАрдмрджреНрджрд▓ рдЪреЗрддрд╛рд╡рдгреА рджреЗрддрд╛рдд. рдЗрддрд░ рд▓реЛрдХ рджрд┐рд╡рд╕рд╛ рдХрд┐рдВрд╡рд╛ рд░рд╛рддреНрд░реА рдХреЛрдгрддреНрдпрд╛рд╣реА рд╡реЗрд│реА рддреЗ рдЖрдкрд▓реНрдпрд╛рд╕рд╛рдареА рдЕрдирдкреЗрдХреНрд╖рд┐рддрдкрдгреЗ рдХрд░рддрд╛рдд.

рдЖрдореНрд╣рд╛рд▓рд╛ рдЖрдордЪреЗ рд▓рд╡рдЪрд┐рдХрддрд╛ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рд╡рд░реНрдХрдлреНрд▓реЛрдЪреЗ рдореЙрдбреЗрд▓ рдмрдирд╡рд╛рдпрдЪреЗ рд╣реЛрддреЗ рдЬреЗ рдЯреЛрдкреЛрд▓реЙрдЬреАрдЬ рдЖрдгрд┐ рд╡рд░реНрдХрд▓реЛрдбреНрд╕рд╢реА рдЬреБрд│рддрд╛рдд рдЬреНрдпрд╛рдиреЗ рднреВрддрдХрд╛рд│рд╛рдд Shopify рдЪреНрдпрд╛ рдкрд╛рдпрд╛рднреВрдд рд╕реБрд╡рд┐рдзрд╛рдВрдирд╛ рдУрд╡реНрд╣рд░рд▓реЛрдб рдХреЗрд▓реЗ рд╣реЛрддреЗ. рд╕реЗрд╡рд╛ рдЬрд╛рд│реА рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪрд╛ рдореБрдЦреНрдп рдЙрджреНрджреЗрд╢ рд╣рд╛ рдЖрд╣реЗ рдХреА рдЖрдореНрд╣рд╛рд▓рд╛ рдиреЗрдЯрд╡рд░реНрдХ рд╕реНрддрд░рд╛рд╡рд░ рд╡рд┐рд╢реНрд╡рд╛рд╕рд╛рд░реНрд╣рддрд╛ рдЖрдгрд┐ рджреЛрд╖ рд╕рд╣рд┐рд╖реНрдгреБрддреЗрдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ рдЖрдгрд┐ рдЖрдордЪреНрдпрд╛рд╕рд╛рдареА рд╣реЗ рдорд╣рддреНрддреНрд╡рд╛рдЪреЗ рдЖрд╣реЗ рдХреА рд╕реЗрд╡рд╛ рдЬрд╛рд│реА рдкреВрд░реНрд╡реА рд╕реЗрд╡рд╛рдВрдордзреНрдпреЗ рд╡реНрдпрддреНрдпрдп рдЖрдгрдгрд╛рд▒реНрдпрд╛ рднрд╛рд░рд╛рдВрдЪрд╛ рдкреНрд░рднрд╛рд╡реАрдкрдгреЗ рд╕рд╛рдордирд╛ рдХрд░рддреЗ.

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

рдЕрд╢рд╛ рдкреНрд░рдХреНрд░рд┐рдпреЗрдЪреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдпреЗрдереЗ рдЖрд╣реЗ:

  • рдЖрдореНрд╣реА 10 рд╕рд░реНрд╡реНрд╣рд░ рд▓рд╛рдБрдЪ рдХрд░рддреЛ bar рд╕реЗрд╡рд╛ рдЬреА рдкреНрд░рддрд┐рд╕рд╛рдж рджреЗрддреЗ 200/OK 100 ms рдирдВрддрд░
  • рдЖрдореНрд╣реА 10 рдХреНрд▓рд╛рдпрдВрдЯ рд▓рд╛рдБрдЪ рдХрд░рддреЛ - рдкреНрд░рддреНрдпреЗрдХрд╛рд▓рд╛ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдж 100 рд╡рд┐рдирдВрддреНрдпрд╛ рдкрд╛рдард╡рддрд╛рдд bar.
  • рдкреНрд░рддреНрдпреЗрдХ 10 рд╕реЗрдХрдВрджрд╛рдд рдЖрдореНрд╣реА 1 рд╕рд░реНрд╡реНрд╣рд░ рдЖрдгрд┐ рдореЙрдирд┐рдЯрд░ рддреНрд░реБрдЯреА рдХрд╛рдвреВрди рдЯрд╛рдХрддреЛ 5xx рдХреНрд▓рд╛рдпрдВрдЯ рд╡рд░.

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

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

рд╕реЗрд╡рд╛ рдЬрд╛рд│реА рдмреЗрдВрдЪрдорд╛рд░реНрдХрд╕рд╛рдареА Istio рдлреЙрд▓реНрдЯ рдЯреЙрд▓рд░рдиреНрд╕ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░

рдЖрдореНрд╣реА рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░рдЪреЗ рдЕрдиреЗрдХ рдХрд╛рд░реНрдпрд░рдд рдиреЛрдбреНрд╕ рд╕реЗрдЯ рдХреЗрд▓реЗ:

  • irs-client-loadgen: 3 рдкреНрд░рддрд┐рдХреГрддреА рдЬреЗ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдж 100 рд╡рд┐рдирдВрддреНрдпрд╛ рдкрд╛рдард╡рддрд╛рдд irs-client.
  • irs-client: 3 рдкреНрд░рддрд┐рдХреГрддреА рдЬреНрдпрд╛рдВрдирд╛ рд╡рд┐рдирдВрддреА рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреЗ, 100ms рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рд╛ рдЖрдгрд┐ рд╡рд┐рдирдВрддреА рдкрд╛рдард╡рд╛ irs-server.
  • irs-server: 3 рдкреНрд░рддрд┐рдХреГрддреА рдЬреНрдпрд╛ рдкрд░рдд рдХрд░рддрд╛рдд 200/OK 100 ms рдирдВрддрд░

рдпрд╛ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рдирд╕рд╣, рдЖрдореНрд╣реА 9 рдЕрдВрддреНрдпрдмрд┐рдВрджреВрдВрдордзреАрд▓ рд╕реНрдерд┐рд░ рд░рд╣рджрд╛рд░реА рдкреНрд░рд╡рд╛рд╣ рдореЛрдЬреВ рд╢рдХрддреЛ. рдордзреНрдпреЗ рд╕рд╛рдЗрдбрдХрд╛рд░ irs-client-loadgen ╨╕ irs-server рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдж 100 рд╡рд┐рдирдВрддреНрдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рд╛, рдЖрдгрд┐ irs-client - 200 (рдЗрдирдХрдорд┐рдВрдЧ рдЖрдгрд┐ рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ).

рдЖрдореНрд╣реА рдорд╛рдзреНрдпрдорд╛рддреВрди рд╕рдВрд╕рд╛рдзрди рд╡рд╛рдкрд░ рдЯреНрд░реЕрдХ рдбреЗрдЯрд╛рдбреЙрдЧрдХрд╛рд░рдг рдЖрдордЪреНрдпрд╛рдХрдбреЗ рдкреНрд░реЛрдорд┐рдерд┐рдпрд╕ рдХреНрд▓рд╕реНрдЯрд░ рдирд╛рд╣реА.

рдирд┐рдХрд╛рд▓

рдирд┐рдпрдВрддреНрд░рдг рдкреЕрдиреЗрд▓

рдкреНрд░рдердо, рдЖрдореНрд╣реА CPU рд╡рд╛рдкрд░ рддрдкрд╛рд╕рд▓рд╛.

Istio рдЖрдгрд┐ Linkerd рд╕рд╛рдареА CPU рд╡рд╛рдкрд░ рдмреЗрдВрдЪрдорд╛рд░реНрдХ
рд▓рд┐рдВрдХрд░реНрдб рдХрдВрдЯреНрд░реЛрд▓ рдкреЕрдирд▓ ~22 рдорд┐рд▓реАрдХреЛрд░

Istio рдЖрдгрд┐ Linkerd рд╕рд╛рдареА CPU рд╡рд╛рдкрд░ рдмреЗрдВрдЪрдорд╛рд░реНрдХ
Istio рдирд┐рдпрдВрддреНрд░рдг рдкреЕрдиреЗрд▓: ~750 рдорд┐рд▓реАрдХреЛрд░

Istio рдирд┐рдпрдВрддреНрд░рдг рдкреЕрдиреЗрд▓ рдЕрдВрджрд╛рдЬреЗ рд╡рд╛рдкрд░рддреЗ 35 рдкрдЯ рдЕрдзрд┐рдХ CPU рд╕рдВрд╕рд╛рдзрдиреЗLinkerd рдкреЗрдХреНрд╖рд╛. рдЕрд░реНрдерд╛рдд, рд╕рд░реНрд╡рдХрд╛рд╣реА рдбреАрдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░ рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реЗ рдЖрд╣реЗ, рдЖрдгрд┐ istio-telemetry рдпреЗрдереЗ рднрд░рдкреВрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕рдВрд╕рд╛рдзрдиреЗ рд╡рд╛рдкрд░рддрд╛рдд (рдХрд╛рд╣реА рдлрдВрдХреНрд╢рдиреНрд╕ рдЕрдХреНрд╖рдо рдХрд░реВрди рддреЗ рдЕрдХреНрд╖рдо рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ). рдЖрдореНрд╣реА рд╣рд╛ рдШрдЯрдХ рдХрд╛рдвреВрди рдЯрд╛рдХрд▓реНрдпрд╛рд╕, рдЖрдореНрд╣рд╛рд▓рд╛ рдЕрдЬреВрдирд╣реА 100 рдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рдорд┐рд▓рд┐рдХреЛрдЕрд░ рдорд┐рд│рддреАрд▓, рдореНрд╣рдгрдЬреЗрдЪ 4 рдкрдЯ рдЬрд╛рд╕реНрддLinkerd рдкреЗрдХреНрд╖рд╛.

рд╕рд╛рдЗрдбрдХрд╛рд░ рдкреНрд░реЙрдХреНрд╕реА

рддреНрдпрд╛рдирдВрддрд░ рдЖрдореНрд╣реА рдкреНрд░реЙрдХреНрд╕реАрдЪреНрдпрд╛ рд╡рд╛рдкрд░рд╛рдЪреА рдЪрд╛рдЪрдгреА рдШреЗрддрд▓реА. рд╡рд┐рдирдВрддреНрдпрд╛рдВрдЪреНрдпрд╛ рд╕рдВрдЦреНрдпреЗрд╢реА рдПрдХ рд░реЗрд╖реАрдп рд╕рдВрдмрдВрдз рдЕрд╕рд╛рд╡рд╛, рдкрд░рдВрддреБ рдкреНрд░рддреНрдпреЗрдХ рд╕рд╛рдЗрдбрдХрд╛рд░рд╕рд╛рдареА рдХрд╛рд╣реА рдУрд╡реНрд╣рд░рд╣реЗрдб рдЖрд╣реЗ рдЬреЗ рд╡рдХреНрд░ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреЗ.

Istio рдЖрдгрд┐ Linkerd рд╕рд╛рдареА CPU рд╡рд╛рдкрд░ рдмреЗрдВрдЪрдорд╛рд░реНрдХ
рд▓рд┐рдВрдХрд░реНрдб: рдЖрдпрдЖрд░рдПрд╕-рдХреНрд▓рд╛рдпрдВрдЯрд╕рд╛рдареА ~100 рдорд┐рд▓рд┐рдХреЛрдЕрд░, рдЖрдпрдЖрд░рдПрд╕-рдХреНрд▓рд╛рдпрдВрдЯ-рд▓реЛрдбрдЬрдирд╕рд╛рдареА ~50 рдорд┐рд▓рд┐рдХреЛрдЕрд░

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

Istio рдЖрдгрд┐ Linkerd рд╕рд╛рдареА CPU рд╡рд╛рдкрд░ рдмреЗрдВрдЪрдорд╛рд░реНрдХ
Istio/рджреВрдд: irs-рдХреНрд▓рд╛рдпрдВрдЯрд╕рд╛рдареА ~155 рдорд┐рд▓рд┐рдХреЛрдЕрд░, ~75 рдорд┐рд▓рд┐рдХреЛрдЕрд░ irs-рдХреНрд▓рд╛рдпрдВрдЯ-рд▓реЛрдбрдЬрдирд╕рд╛рдареА

рдЖрдореНрд╣рд╛рд▓рд╛ Istio sidecars рд╕рд╛рдареА рд╕рдорд╛рди рдкрд░рд┐рдгрд╛рдо рджрд┐рд╕рдд рдЖрд╣реЗрдд.

рдкрд░рдВрддреБ рд╕рд░реНрд╡рд╕рд╛рдзрд╛рд░рдгрдкрдгреЗ, Istio/Envoy рдкреНрд░реЙрдХреНрд╕реА рд╡рд╛рдкрд░рддрд╛рдд рдЕрдВрджрд╛рдЬреЗ 50% рдЕрдзрд┐рдХ CPU рд╕рдВрд╕рд╛рдзрдиреЗLinkerd рдкреЗрдХреНрд╖рд╛.

рдЖрдореНрд╣реА рд╕рд░реНрд╡реНрд╣рд░рдЪреНрдпрд╛ рдмрд╛рдЬреВрд▓рд╛ рд╕рдорд╛рди рдпреЛрдЬрдирд╛ рдкрд╛рд╣рддреЛ:

Istio рдЖрдгрд┐ Linkerd рд╕рд╛рдареА CPU рд╡рд╛рдкрд░ рдмреЗрдВрдЪрдорд╛рд░реНрдХ
рд▓рд┐рдВрдХрд░реНрдб: irs-рд╕рд░реНрд╡реНрд╣рд░рд╕рд╛рдареА ~50 рдорд┐рд▓реАрдХреЛрд░

Istio рдЖрдгрд┐ Linkerd рд╕рд╛рдареА CPU рд╡рд╛рдкрд░ рдмреЗрдВрдЪрдорд╛рд░реНрдХ
Istio/рджреВрдд: irs-рд╕рд░реНрд╡реНрд╣рд░рд╕рд╛рдареА ~80 рдорд┐рд▓реАрдХреЛрдЕрд░

рд╕рд░реНрд╡реНрд╣рд░рдЪреНрдпрд╛ рдмрд╛рдЬреВрдиреЗ, рд╕рд╛рдЗрдбрдХрд╛рд░ Istio/Envoy рд╡рд╛рдкрд░рддрд╛рдд рдЕрдВрджрд╛рдЬреЗ 60% рдЕрдзрд┐рдХ CPU рд╕рдВрд╕рд╛рдзрдиреЗLinkerd рдкреЗрдХреНрд╖рд╛.

рдирд┐рд╖реНрдХрд░реНрд╖

Istio Envoy рдкреНрд░реЙрдХреНрд╕реА рдЖрдордЪреНрдпрд╛ рд╕рд┐рдореНрдпреБрд▓реЗрдЯреЗрдб рд╡рд░реНрдХрд▓реЛрдбрд╡рд░ Linkerd рдкреЗрдХреНрд╖рд╛ 50+% рдЕрдзрд┐рдХ CPU рд╡рд╛рдкрд░рддреЗ. Linkerd рдирд┐рдпрдВрддреНрд░рдг рдкреЕрдиреЗрд▓ Istio рдкреЗрдХреНрд╖рд╛ рдЦреВрдкрдЪ рдХрдореА рд╕рдВрд╕рд╛рдзрдиреЗ рд╡рд╛рдкрд░рддреЗ, рд╡рд┐рд╢реЗрд╖рдд: рдореБрдЦреНрдп рдШрдЯрдХрд╛рдВрд╕рд╛рдареА.

рд╣реЗ рдЦрд░реНрдЪ рдХрд╕реЗ рдХрдореА рдХрд░рддрд╛ рдпреЗрддреАрд▓ рдпрд╛рд╡рд░ рдЖрдореНрд╣реА рдЕрдЬреВрдирд╣реА рд╡рд┐рдЪрд╛рд░ рдХрд░рдд рдЖрд╣реЛрдд. рдЖрдкрд▓реНрдпрд╛рдХрдбреЗ рдХрд▓реНрдкрдирд╛ рдЕрд╕рд▓реНрдпрд╛рд╕, рдХреГрдкрдпрд╛ рд╕рд╛рдорд╛рдпрд┐рдХ рдХрд░рд╛!

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

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