
ΠΡΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
ΠΠΈΠ΅ Π² Π·Π°ΠΏΠΎΡΠ½Π°Ρ ΠΌΠ΅ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Istio ΠΊΠ°ΡΠΎ service mesh. Π ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅ Π²ΡΠΈΡΠΊΠΎ Π΅ Π½Π°ΡΠ΅Π΄, ΠΎΡΠ²Π΅Π½ Π΅Π΄Π½Π° Π²Π΅Ρ: ΡΠΎΠ²Π° Π΅ ΡΠΊΡΠΏΠΎ.
Π Π·Π° Istio ΡΠ΅ ΠΊΠ°Π·Π²Π°:
Π‘ Istio 1.1 ΠΏΡΠΎΠΊΡΠΈ ΠΊΠΎΠ½ΡΡΠΌΠΈΡΠ° ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»Π½ΠΎ 0,6 vCPU (Π²ΠΈΡΡΡΠ°Π»Π½ΠΈ ΡΠ΄ΡΠ°) Π½Π° 1000 Π·Π°ΡΠ²ΠΊΠΈ Π² ΡΠ΅ΠΊΡΠ½Π΄Π°.
ΠΠ° ΠΏΡΡΠ²ΠΈΡ ΡΠ΅Π³ΠΈΠΎΠ½ Π² service mesh (ΠΏΠΎ 2 ΠΏΡΠΎΠΊΡΠΈ ΠΎΡ Π²ΡΡΠΊΠ° ΡΡΡΠ°Π½Π° Π½Π° Π²ΡΡΠ·ΠΊΠ°ΡΠ°) ΡΠ΅ ΠΈΠΌΠ°ΠΌΠ΅ 1200 ΡΠ΄ΡΠ° ΡΠ°ΠΌΠΎ Π·Π° ΠΏΡΠΎΠΊΡΠΈ, ΠΏΡΠΈ ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΠΎΡ Π΅Π΄ΠΈΠ½ ΠΌΠΈΠ»ΠΈΠΎΠ½ Π·Π°ΡΠ²ΠΊΠΈ Π² ΡΠ΅ΠΊΡΠ½Π΄Π°. Π‘ΠΏΠΎΡΠ΅Π΄ ΡΠ΅Π½ΠΎΠ²ΠΈΡ ΠΊΠ°Π»ΠΊΡΠ»Π°ΡΠΎΡ Π½Π° Google ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΌΠ΅ ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»Π½ΠΎ 40 $/ΠΌΠ΅ΡΠ΅Ρ/ΡΠ΄ΡΠΎ Π·Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° n1-standard-64, ΡΠΎΠ΅ΡΡ ΡΠ°ΠΌΠΎ ΡΠΎΠ·ΠΈ ΡΠ΅Π³ΠΈΠΎΠ½ ΡΠ΅ Π½ΠΈ ΡΡΡΡΠ²Π° Π½Π°Π΄ 50 Ρ
ΠΈΠ»ΡΠ΄ΠΈ Π΄ΠΎΠ»Π°ΡΠ° Π½Π° ΠΌΠ΅ΡΠ΅Ρ Π·Π° 1 ΠΌΠΈΠ»ΠΈΠΎΠ½ Π·Π°ΡΠ²ΠΊΠΈ Π² ΡΠ΅ΠΊΡΠ½Π΄Π°.
ΠΠΉΠ²Π΅Π½ Π‘ΠΈΠΌ () Π·Π°ΠΊΡΡΠ½Π΅Π½ΠΈΡΡΠ° Π½Π° service mesh ΠΌΠΈΠ½Π°Π»Π°ΡΠ° Π³ΠΎΠ΄ΠΈΠ½Π° ΠΈ ΠΎΠ±Π΅ΡΠ° ΡΡΡΠΎΡΠΎ Π·Π° ΠΏΠ°ΠΌΠ΅Ρ ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΎΡ, Π½ΠΎ Π½Π΅ ΡΡΠΏΡ:
Π―Π²Π½ΠΎ values-istio-test.yaml ΡΠ΅ΡΠΈΠΎΠ·Π½ΠΎ ΡΠ΅ ΡΠ²Π΅Π»ΠΈΡΠΈ Π·Π°ΡΠ²ΠΊΠΈΡΠ΅ ΠΊΡΠΌ ΠΏΡΠΎΡΠ΅ΡΠΎΡΠ°. ΠΠΊΠΎ ΡΡΠΌ Π½Π°ΠΏΡΠ°Π²ΠΈΠ» ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΡΡΠ°, ΡΠ΅ ΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ ΠΎΠΊΠΎΠ»ΠΎ 24 ΠΏΡΠΎΡΠ΅ΡΠΎΡΠ½ΠΈ ΡΠ΄ΡΠ° Π·Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π½ΠΈΡ ΠΏΠ°Π½Π΅Π» ΠΈ 0,5 Π¦Π Π·Π° Π²ΡΡΠΊΠΎ ΠΏΡΠΎΠΊΡΠΈ. ΠΡΠΌΠ°ΠΌ ΡΠΎΠ»ΠΊΠΎΠ²Π°. Π©Π΅ ΠΏΠΎΠ²ΡΠΎΡΡ ΡΠ΅ΡΡΠΎΠ²Π΅ΡΠ΅, ΠΊΠΎΠ³Π°ΡΠΎ ΠΌΠΈ ΠΈΠ·ΡΠ΅ΡΠΏΡΡ ΠΏΠΎΠ²Π΅ΡΠ΅ ΡΠ΅ΡΡΡΡΠΈ.
ΠΡΠΊΠ°Ρ ΡΠ°ΠΌ Π΄Π° ΡΠ΅ ΡΠ²Π΅ΡΡ ΠΊΠΎΠ»ΠΊΠΎ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ Π½Π° Istio ΡΠ° ΡΡ ΠΎΠ΄Π½ΠΈ Ρ Π΄ΡΡΠ³Π° service mesh Ρ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄: .
ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π½Π° service mesh
ΠΡΡΠ²ΠΎΡΠΎ Π½Π΅ΡΠΎ, ΠΊΠΎΠ΅ΡΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΡ , Π±Π΅ΡΠ΅ Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΌ Π² ΠΊΠ»Π°ΡΡΠ΅ΡΠ° :
$ supergloo init
ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π½Π° supergloo Π²Π΅ΡΡΠΈΡ 0.3.12
ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ chart uri https://storage.googleapis.com/supergloo-helm/charts/supergloo-0.3.12.tgz
configmap/sidecar-injection-resources ΡΡΠ·Π΄Π°Π΄Π΅Π½
serviceaccount/supergloo ΡΡΠ·Π΄Π°Π΄Π΅Π½
serviceaccount/discovery ΡΡΠ·Π΄Π°Π΄Π΅Π½
serviceaccount/mesh-discovery ΡΡΠ·Π΄Π°Π΄Π΅Π½
clusterrole.rbac.authorization.k8s.io/discovery ΡΡΠ·Π΄Π°Π΄Π΅Π½
clusterrole.rbac.authorization.k8s.io/mesh-discovery ΡΡΠ·Π΄Π°Π΄Π΅Π½
clusterrolebinding.rbac.authorization.k8s.io/supergloo-role-binding ΡΡΠ·Π΄Π°Π΄Π΅Π½
clusterrolebinding.rbac.authorization.k8s.io/discovery-role-binding ΡΡΠ·Π΄Π°Π΄Π΅Π½
clusterrolebinding.rbac.authorization.k8s.io/mesh-discovery-role-binding ΡΡΠ·Π΄Π°Π΄Π΅Π½
deployment.extensions/supergloo ΡΡΠ·Π΄Π°Π΄Π΅Π½
deployment.extensions/discovery ΡΡΠ·Π΄Π°Π΄Π΅Π½
deployment.extensions/mesh-discovery ΡΡΠ·Π΄Π°Π΄Π΅Π½
ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡΡΠ° Π΅ ΡΡΠΏΠ΅ΡΠ½Π°!ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ SuperGloo, Π·Π°ΡΠΎΡΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΡΠ»Π΅ΡΠ½ΡΠ²Π° Π½Π°ΡΠ°Π»Π½ΠΎΡΠΎ Π·Π°ΡΠ΅ΠΆΠ΄Π°Π½Π΅ Π½Π° service mesh. ΠΠΎΡΡΠΈ Π½Π΅ ΠΌΠΈ ΡΠ΅ Π½Π°Π»ΠΎΠΆΠΈ Π΄Π° ΠΏΡΠ°Π²Ρ Π½ΠΈΡΠΎ. Π ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΡ Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ SuperGloo, Π½ΠΎ Π·Π° ΠΏΠΎΠ΄ΠΎΠ±Π½Π° Π·Π°Π΄Π°ΡΠ° ΡΠΎΠΉ Π΅ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ. ΠΠ°Π»ΠΎΠΆΠΈ ΡΠ΅ Π΄Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ° Π±ΡΠΊΠ²Π°Π»Π½ΠΎ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π·Π° Π²ΡΡΠΊΠ° service mesh. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π΄Π²Π° ΠΊΠ»ΡΡΡΠ΅ΡΠ° Π·Π° ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ - ΠΏΠΎ Π΅Π΄ΠΈΠ½ Π·Π° Istio ΠΈ Linkerd.
ΠΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΡΡ Π±Π΅ΡΠ΅ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ Π½Π° Google Kubernetes Engine. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ
Kubernetes 1.12.7-gke.7 ΠΈ ΠΏΡΠ» ΠΎΡ Π½ΠΎΠ΄ΠΎΠ²Π΅ n1-standard-4 Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΌΠ°ΡΠ°Π±ΠΈΡΠ°Π½Π΅ Π½Π° Π½ΠΎΠ΄ΠΎΠ²Π΅ΡΠ΅ (ΠΌΠΈΠ½ΠΈΠΌΡΠΌ 4, ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌ 16).
Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Ρ ΠΈ Π΄Π²Π΅ΡΠ΅ service mesh ΠΎΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΈΡ ΡΠ΅Π΄.
ΠΡΡΠ²ΠΎ Linkerd:
$ 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 |
+---------+------------+---------+---------------------------+Crash-loop ΠΎΡΠ½Π΅ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΌΠΈΠ½ΡΡΠΈ, ΡΠ»Π΅Π΄ ΠΊΠΎΠ΅ΡΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»Π½ΠΈΡΡ ΠΏΠ°Π½Π΅Π» ΡΠ΅ ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠ°.
(ΠΠ΅Π»Π΅ΠΆΠΊΠ°. SuperGloo Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΠ°ΠΌΠΎ Istio 1.0.x. ΠΠΎΠ²ΡΠΎΡΠΈΡ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ° Ρ Istio 1.1.3, Π½ΠΎ Π½Π΅ Π·Π°Π±Π΅Π»ΡΠ·Π°Ρ Π½ΠΈΠΊΠ°ΠΊΠ²Π° ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π° ΡΠ°Π·Π»ΠΈΠΊΠ°.)
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° Π½Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ Π½Π° Istio
ΠΠ° Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ° Istio sidecar Envoy, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ sidecar-ΠΈΠ½ΠΆΠ΅ΠΊΡΠΎΡ β MutatingAdmissionWebhook. ΠΡΠΌΠ° Π΄Π° Π³ΠΎΠ²ΠΎΡΠΈΠΌ Π·Π° Π½Π΅Π³ΠΎ Π² ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ. Π©Π΅ ΠΊΠ°ΠΆΠ° ΡΠ°ΠΌΠΎ, ΡΠ΅ ΡΠΎΠ²Π° Π΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅Ρ, ΠΊΠΎΠΉΡΠΎ ΡΠ»Π΅Π΄ΠΈ Π΄ΠΎΡΡΡΠΏΠ° Π½Π° Π²ΡΠΈΡΠΊΠΈ Π½ΠΎΠ²ΠΈ ΠΏΠΎΠ΄ΠΎΠ²Π΅ ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Ρ sidecar ΠΈ initContainer, ΠΎΡΠ³ΠΎΠ²Π°ΡΡΡ Π·Π° Π·Π°Π΄Π°ΡΠΈΡΠ΅ iptables.
ΠΠΈΠ΅ Π² Shopify Π½Π°ΠΏΠΈΡΠ°Ρ
ΠΌΠ΅ ΡΠ²ΠΎΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅Ρ Π·Π° Π΄ΠΎΡΡΡΠΏ Π·Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ Π½Π° sidecar, Π½ΠΎ Π·Π° ΡΠΎΠ·ΠΈ Π±Π΅Π½ΡΠΌΠ°ΡΠΊ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ
ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΡΠ°, ΠΊΠΎΠΉΡΠΎ ΠΈΠ΄Π²Π° Ρ Istio. ΠΠΎΠ½ΡΡΠΎΠ»Π΅ΡΡΡ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π²Π½Π΅Π΄ΡΡΠ²Π° sidecar, ΠΊΠΎΠ³Π°ΡΠΎ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎΡΠΎ Π½Π° ΠΈΠΌΠ΅Π½Π°ΡΠ° ΠΈΠΌΠ° Π΅ΡΠΈΠΊΠ΅Ρ 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
ΠΠ° Π΄Π° Π½Π°ΡΡΡΠΎΠΈΠΌ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° sidecar Π½Π° 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
Π‘ΡΠ·Π΄Π°Π΄ΠΎΡ ΠΌΠ΅ ΡΠΈΠΌΡΠ»Π°ΡΠΎΡ Π·Π° ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡ Π½Π° Istio, Π·Π° Π΄Π° Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΠ°ΠΌΠ΅ Ρ ΡΡΠ°ΡΠΈΠΊΠ°, ΡΠ½ΠΈΠΊΠ°Π»Π΅Π½ Π·Π° Shopify. ΠΡΠΆΠ΄Π°Π΅Ρ ΠΌΠ΅ ΡΠ΅ ΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, Π·Π° Π΄Π° ΠΈΠ·Π³ΡΠ°Π΄ΠΈΠΌ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½Π° ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡ, ΠΊΠΎΡΡΠΎ Π΄Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° ΡΠ°ΡΡ ΠΎΡ Π³ΡΠ°ΡΠ° Π½Π° Π½Π°ΡΠΈΡ ΡΠ΅ΡΠ²ΠΈΡ Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΉΠ²Π°Π½Π΅ Π·Π° ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΈ ΡΠ°Π±ΠΎΡΠ½ΠΈ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½ΠΈΡ.
ΠΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Π½Π° Shopify ΠΈΠ·ΠΏΠΈΡΠ²Π° Π³ΠΎΠ»ΡΠΌΠΎ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ»Π°Ρ-ΠΏΡΠΎΠ΄Π°ΠΆΠ±ΠΈ. Π ΡΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ Shopify . ΠΠΎΠ»Π΅ΠΌΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ ΠΏΠΎΠ½ΡΠΊΠΎΠ³Π° Π½ΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π°Π²Π°Ρ Π·Π° ΠΏΠ»Π°Π½ΠΈΡΠ°Π½Π° ΡΠ»Π°Ρ-ΠΏΡΠΎΠ΄Π°ΠΆΠ±Π°. ΠΡΡΠ³ΠΈ ΠΏΡΠΎΠ²Π΅ΠΆΠ΄Π°Ρ ΡΠ°ΠΊΠΈΠ²Π° ΠΈΠ·Π½Π΅Π½Π°Π΄Π²Π°ΡΠΎ Π·Π° Π½Π°Ρ ΠΏΠΎ Π²ΡΡΠΊΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° Π΄Π΅Π½ΠΎΠ½ΠΎΡΠΈΠ΅ΡΠΎ.
ΠΡΠΊΠ°Ρ ΠΌΠ΅ Π½Π°ΡΠΈΡΡ ΡΠΈΠΌΡΠ»Π°ΡΠΎΡ Π½Π° ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡ Π΄Π° ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠ° ΡΠ°Π±ΠΎΡΠ½ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²Π°Ρ Π½Π° ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΈ ΡΠ°Π±ΠΎΡΠ½ΠΈ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½ΠΈΡ, Π²ΠΎΠ΄Π΅ΡΠΈ Π΄ΠΎ ΠΏΡΠ΅ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ Π½Π° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Π½Π° Shopify Π² ΠΌΠΈΠ½Π°Π»ΠΎΡΠΎ. ΠΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΡΠ΅Π» Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° service mesh β Π½ΠΈ Π΅ Π½ΡΠΆΠ½Π° Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΎΡΡ ΠΈ ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡ Π½Π° Π½ΠΈΠ²ΠΎΡΠΎ Π½Π° ΠΌΡΠ΅ΠΆΠ°ΡΠ°, ΠΈ Π½ΠΈ Π΅ Π²Π°ΠΆΠ½ΠΎ service mesh Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ Π΄Π° ΡΠ΅ ΡΠΏΡΠ°Π²Ρ Ρ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½ΠΈΡΡΠ°, ΠΊΠΎΠΈΡΠΎ ΠΏΡΠ΅Π΄ΠΈ ΡΠ° Π½Π°ΡΡΡΠ°Π²Π°Π»ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° ΡΠ΅ΡΠ²ΠΈΡΠΈΡΠ΅.
Π ΠΎΡΠ½ΠΎΠ²Π°ΡΠ° Π½Π° ΡΠΈΠΌΡΠ»Π°ΡΠΎΡΠ° Π·Π° ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡ Π»Π΅ΠΆΠΈ ΡΠ°Π±ΠΎΡΠ΅Π½ Π²ΡΠ·Π΅Π», ΠΊΠΎΠΉΡΠΎ Π΄Π΅ΠΉΡΡΠ²Π° ΠΊΠ°ΡΠΎ Π²ΡΠ·Π΅Π» Π½Π° service mesh. Π Π°Π±ΠΎΡΠ½ΠΈΡΡ Π²ΡΠ·Π΅Π» ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½ ΡΡΠ°ΡΠΈΡΠ½ΠΎ ΠΏΡΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ ΠΈΠ»ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΎ ΡΡΠ΅Π· REST API. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΉΠ²Π°Π½Π΅ Π½Π° ΡΠ°Π±ΠΎΡΠ½ΠΈ Π²ΡΠ·Π»ΠΈ, Π·Π° Π΄Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°ΠΌΠ΅ ΡΠ°Π±ΠΎΡΠ½ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ ΠΏΠΎΠ΄ ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° ΡΠ΅Π³ΡΠ΅ΡΠΈΠ²Π½ΠΈ ΡΠ΅ΡΡΠΎΠ²Π΅.
ΠΡΠΎ ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° ΡΠ°ΠΊΡΠ² ΠΏΡΠΎΡΠ΅Ρ:
- Π‘ΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ 10 ΡΡΡΠ²ΡΡΠ° ΠΊΠ°ΡΠΎ
barΡΡΠ»ΡΠ³Π°, ΠΊΠΎΡΡΠΎ Π²ΡΡΡΠ° ΠΎΡΠ³ΠΎΠ²ΠΎΡ200/OKΠ² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° 100 ΠΌΡ. - Π‘ΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ 10 ΠΊΠ»ΠΈΠ΅Π½ΡΠ° β Π²ΡΠ΅ΠΊΠΈ ΠΈΠ·ΠΏΡΠ°ΡΠ° 100 Π·Π°ΡΠ²ΠΊΠΈ Π² ΡΠ΅ΠΊΡΠ½Π΄Π° ΠΊΡΠΌ
bar. - ΠΠ° Π²ΡΠ΅ΠΊΠΈ 10 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ ΠΏΡΠ΅ΠΌΠ°Ρ
Π²Π°ΠΌΠ΅ 1 ΡΡΡΠ²ΡΡ, Π½Π°Π±Π»ΡΠ΄Π°Π²Π°ΠΌΠ΅ Π³ΡΠ΅ΡΠΊΠΈΡΠ΅
5xxΠ½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ°.
Π ΠΊΡΠ°Ρ Π½Π° ΡΠ°Π±ΠΎΡΠ½ΠΈΡ ΠΏΡΠΎΡΠ΅Ρ ΠΈΠ·ΡΡΠ°Π²Π°ΠΌΠ΅ Π»ΠΎΠ³ΠΎΠ²Π΅ΡΠ΅ ΠΈ ΠΌΠ΅ΡΡΠΈΡΠ΅ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°ΠΌΠ΅ Π΄Π°Π»ΠΈ ΡΠ΅ΡΡΡΡ Π΅ ΡΡΠΏΠ΅ΡΠ΅Π½. Π’Π°ΠΊΠ° ΡΠ°Π·Π±ΡΠ°Ρ ΠΌΠ΅ Π·Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° Π½Π°ΡΠ°ΡΠ° service mesh ΠΈ ΠΏΡΠΎΠ²Π΅ΠΆΠ΄Π°ΠΌΠ΅ ΡΠ΅Π³ΡΠ΅ΡΠΈΠ²Π΅Π½ ΡΠ΅ΡΡ, Π·Π° Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ° ΡΠΈ ΠΎΡΠ½ΠΎΡΠ½ΠΎ ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΡΠ°.
(ΠΠ΅Π»Π΅ΠΆΠΊΠ°. ΠΠ±ΠΌΠΈΡΠ»ΡΠΌΠ΅ Π΄Π° ΠΎΡΠ²ΠΎΡΠΈΠΌ ΠΊΠΎΠ΄Π° Π½Π° ΡΠΈΠΌΡΠ»Π°ΡΠΎΡΠ° Π·Π° ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡ Π½Π° Istio, Π½ΠΎ Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ ΡΠΌΠ΅ Π³ΠΎΡΠΎΠ²ΠΈ Π·Π° ΡΠΎΠ²Π°.)
Π‘ΠΈΠΌΡΠ»Π°ΡΠΎΡ Π½Π° ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡ Π½Π° Istio Π·Π° Π±Π΅Π½ΡΠΌΠ°ΡΠΊ Π½Π° service mesh
ΠΠ°ΡΡΡΠΎΠΉΠ²Π°ΠΌΠ΅ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ°Π±ΠΎΡΠ½ΠΈ Π²ΡΠ·Π»ΠΈ Π½Π° ΡΠΈΠΌΡΠ»Π°ΡΠΎΡΠ°:
irs-client-loadgen: 3 ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΈΠ·ΠΏΡΠ°ΡΠ°Ρ ΠΏΠΎ 100 Π·Π°ΡΠ²ΠΊΠΈ Π² ΡΠ΅ΠΊΡΠ½Π΄Π° ΠΊΡΠΌirs-client.irs-client: 3 ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΏΠΎΠ»ΡΡΠ°Π²Π°Ρ Π·Π°ΡΠ²ΠΊΠ°, ΡΠ°ΠΊΠ°Ρ 100 ΠΌΡ ΠΈ ΠΏΡΠ΅Π½Π°ΡΠΎΡΠ²Π°Ρ Π·Π°ΡΠ²ΠΊΠ°ΡΠ° ΠΊΡΠΌirs-server.irs-server: 3 ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈ, ΠΊΠΎΠΈΡΠΎ Π²ΡΡΡΠ°Ρ200/OKΠ² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° 100 ΠΌΡ.
Π‘ ΡΠ°ΠΊΠ°Π²Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·ΠΌΠ΅ΡΠΈΠΌ ΡΡΠ°Π±ΠΈΠ»Π΅Π½ ΠΏΠΎΡΠΎΠΊ Π½Π° ΡΡΠ°ΡΠΈΠΊ ΠΌΠ΅ΠΆΠ΄Ρ 9 ΠΊΡΠ°ΠΉΠ½ΠΈ ΡΠΎΡΠΊΠΈ. Sidecar-ΠΈΡΠ΅ Π² irs-client-loadgen ΠΈ irs-server ΠΏΠΎΠ»ΡΡΠ°Π²Π°Ρ ΠΏΠΎ 100 Π·Π°ΡΠ²ΠΊΠΈ Π² ΡΠ΅ΠΊΡΠ½Π΄Π°, Π° irs-client β 200 (Π²Ρ
ΠΎΠ΄ΡΡΠΈ ΠΈ ΠΈΠ·Ρ
ΠΎΠ΄ΡΡΠΈ).
Π‘Π»Π΅Π΄ΠΈΠΌ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ΅ΡΡΡΡΠΈΡΠ΅ ΡΡΠ΅Π· , ΡΡΠΉ ΠΊΠ°ΡΠΎ Π½ΡΠΌΠ°ΠΌΠ΅ ΠΊΠ»Π°ΡΡΠ΅Ρ Π½Π° Prometheus.
Π Π΅Π·ΡΠ»ΡΠ°ΡΠΈ
ΠΠ°Π½Π΅Π»ΠΈ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅
ΠΡΡΠ²ΠΎ ΠΏΡΠΎΡΡΠΈΡ ΠΌΠ΅ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° Π¦Π.
ΠΠΎΠ½ΡΡΠΎΠ»Π½ΠΈΡΡ ΠΏΠ°Π½Π΅Π» Π½Π° Linkerd ~22 ΠΌΠΈΠ»ΠΈΠ°ΡΠ΄Π°
ΠΠΎΠ½ΡΡΠΎΠ»Π½ΠΈΡΡ ΠΏΠ°Π½Π΅Π» Π½Π° Istio: ~750 ΠΌΠΈΠ»ΠΈΠ°ΡΠ΄Π°
ΠΠΎΠ½ΡΡΠΎΠ»Π½ΠΈΡΡ ΠΏΠ°Π½Π΅Π» Π½Π° Istio ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»Π½ΠΎ Ρ 35 ΠΏΡΡΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠΎΡΠ½ΠΈ ΡΠ΅ΡΡΡΡΠΈ, ΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ Linkerd. Π Π°Π·Π±ΠΈΡΠ° ΡΠ΅, Π²ΡΠΈΡΠΊΠΎ Π΅ Π½Π°ΡΡΡΠΎΠ΅Π½ΠΎ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΠΎΡΠ½ΠΈ ΡΠ΅ΡΡΡΡΠΈ ΡΡΠΊ ΠΊΠΎΠ½ΡΡΠΌΠΈΡΠ° istio-telemetry (ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½, ΠΎΡΠΊΠ°Π·Π²Π°ΠΉΠΊΠΈ ΡΠ΅ ΠΎΡ Π½ΡΠΊΠΎΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ). ΠΠΎΡΠΈ Π°ΠΊΠΎ ΠΏΡΠ΅ΠΌΠ°Ρ Π½Π΅ΡΠ΅ ΡΠΎΠ·ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, Π²ΡΠ΅ ΠΏΠ°ΠΊ ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π²Π° Π½Π°Π΄ 100 ΠΌΠΈΠ»ΠΈΠ°ΡΠ΄Π°, ΡΠΎΠ΅ΡΡ Π² 4 ΠΏΡΡΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅, ΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ ΠΏΡΠΈ Linkerd.
Proxy Π½Π° Sidecar
Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΠΏΡΠΎΠ²Π΅ΡΠΈΡ ΠΌΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΎΠΊΡΠΈΡΠΎ. Π’ΡΠΊ ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠΌΠ° Π»ΠΈΠ½Π΅ΠΉΠ½Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ Π±ΡΠΎΡ Π½Π° Π·Π°ΡΠ²ΠΊΠΈΡΠ΅, Π½ΠΎ Π·Π° Π²ΡΠ΅ΠΊΠΈ sidecar ΠΈΠΌΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ ΡΠ°Π·Ρ ΠΎΠ΄ΠΈ, ΠΊΠΎΠΈΡΠΎ Π²Π»ΠΈΡΡΡ Π½Π° ΠΊΡΠΈΠ²Π°ΡΠ°.
Linkerd: ~100 ΠΌΠΈΠ»ΠΈΠ°ΡΠ΄Π° Π·Π° irs-client, ~50 ΠΌΠΈΠ»ΠΈΠ°ΡΠ΄Π° Π·Π° irs-client-loadgen
Π Π΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°Ρ Π»ΠΎΠ³ΠΈΡΠ½ΠΎ, ΡΡΠΉ ΠΊΠ°ΡΠΎ proxy ΠΊΠ»ΠΈΠ΅Π½ΡΡΡ ΠΏΠΎΠ»ΡΡΠ°Π²Π° Π΄Π²Π° ΠΏΡΡΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ ΡΡΠ°ΡΠΈΠΊ, ΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ proxy loadgen: Π·Π° Π²ΡΡΠΊΠ° ΠΈΠ·Ρ ΠΎΠ΄ΡΡΠ° Π·Π°ΡΠ²ΠΊΠ° ΠΎΡ loadgen Π½Π° client ΡΠ΅ ΠΏΠ°Π΄Π° Π΅Π΄Π½Π° Π²Ρ ΠΎΠ΄ΡΡΠ° ΠΈ Π΅Π΄Π½Π° ΠΈΠ·Ρ ΠΎΠ΄ΡΡΠ°.
Istio/Envoy: ~155 ΠΌΠΈΠ»ΠΈΠ°ΡΠ΄Π° Π·Π° irs-client, ~75 ΠΌΠΈΠ»ΠΈΠ°ΡΠ΄Π° Π·Π° irs-client-loadgen
ΠΠΈΠΆΠ΄Π°ΠΌΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈ Π·Π° sidecar-ΠΈΡΠ΅ Π½Π° Istio.
ΠΠΎ ΠΊΠ°ΡΠΎ ΡΡΠ»ΠΎ proxy-ΠΈΡΠ΅ Istio/Envoy ΠΊΠΎΠ½ΡΡΠΌΠΈΡΠ°Ρ ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»Π½ΠΎ Ρ 50% ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠΎΡΠ½ΠΈ ΡΠ΅ΡΡΡΡΠΈ, ΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ Linkerd.
Π‘ΡΡΠ°ΡΠ° ΡΡ Π΅ΠΌΠ° Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ ΠΈ Π½Π° ΡΡΡΠ°Π½Π°ΡΠ° Π½Π° ΡΡΡΠ²ΡΡΠ°:
Linkerd: ~50 ΠΌΠΈΠ»ΠΈΠ°ΡΠ΄Π° Π·Π° irs-server
Istio/Envoy: ~80 ΠΌΠΈΠ»ΠΈΠ°ΡΠ΄Π° Π·Π° irs-server
ΠΠ° ΡΡΡΠ°Π½Π°ΡΠ° Π½Π° ΡΡΡΠ²ΡΡΠ° sidecar Istio/Envoy ΠΊΠΎΠ½ΡΡΠΌΠΈΡΠ° ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»Π½ΠΎ Ρ 60% ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠΎΡΠ½ΠΈ ΡΠ΅ΡΡΡΡΠΈ, ΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ Linkerd.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Proxy Π½Π° Istio Envoy ΠΊΠΎΠ½ΡΡΠΌΠΈΡΠ° Ρ 50+% ΠΏΠΎΠ²Π΅ΡΠ΅ Π¦Π, ΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ Linkerd, ΠΏΡΠΈ Π½Π°ΡΠ΅ΡΠΎ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠ°Π½ΠΎ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅. ΠΠΎΠ½ΡΡΠΎΠ»Π½ΠΈΡΡ ΠΏΠ°Π½Π΅Π» Π½Π° Linkerd ΠΊΠΎΠ½ΡΡΠΌΠΈΡΠ° Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΡΠ΅ΡΡΡΡΠΈ, ΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ Istio, ΠΎΡΠΎΠ±Π΅Π½ΠΎ ΡΠΎ ΡΠ΅ ΠΎΡΠ½Π°ΡΡ Π΄ΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ.
ΠΡΠ΅ ΠΎΡΠ΅ ΠΎΠ±ΠΌΠΈΡΠ»ΡΠΌΠ΅ ΠΊΠ°ΠΊ Π΄Π° Π½Π°ΠΌΠ°Π»ΠΈΠΌ ΡΠ΅Π·ΠΈ ΡΠ°Π·Ρ ΠΎΠ΄ΠΈ. ΠΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ ΠΈΠ΄Π΅ΠΈ, ΡΠΏΠΎΠ΄Π΅Π»Π΅ΡΠ΅!
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
