Π²ΡΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
ΠΡΡΡΠ΅ ΡΠΌΠ΅
Π
Π‘ Istio 1.1 ΠΏΡΠΎΠΊΡΠΈΡΠΎ ΠΊΠΎΠ½ΡΡΠΌΠΈΡΠ° ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»Π½ΠΎ 0,6 vCPU (Π²ΠΈΡΡΡΠ°Π»Π½ΠΈ ΡΠ΄ΡΠ°) Π½Π° 1000 Π·Π°ΡΠ²ΠΊΠΈ Π² ΡΠ΅ΠΊΡΠ½Π΄Π°.
ΠΠ° ΠΏΡΡΠ²ΠΈΡ ΡΠ΅Π³ΠΈΠΎΠ½ Π² ΠΌΡΠ΅ΠΆΠ°ΡΠ° Π½Π° ΡΡΠ»ΡΠ³Π°ΡΠ° (2 ΠΏΡΠΎΠΊΡΠΈΡΠ° ΠΎΡ Π²ΡΡΠΊΠ° ΡΡΡΠ°Π½Π° Π½Π° Π²ΡΡΠ·ΠΊΠ°ΡΠ°) ΡΠ΅ ΠΈΠΌΠ°ΠΌΠ΅ 1200 ΡΠ΄ΡΠ° ΡΠ°ΠΌΠΎ Π·Π° ΠΏΡΠΎΠΊΡΠΈΡΠΎ, ΠΏΡΠΈ ΡΠΊΠΎΡΠΎΡΡ ΠΎΡ Π΅Π΄ΠΈΠ½ ΠΌΠΈΠ»ΠΈΠΎΠ½ Π·Π°ΡΠ²ΠΊΠΈ Π² ΡΠ΅ΠΊΡΠ½Π΄Π°. Π‘ΠΏΠΎΡΠ΅Π΄ ΠΊΠ°Π»ΠΊΡΠ»Π°ΡΠΎΡΠ° Π½Π° ΡΠ°Π·Ρ
ΠΎΠ΄ΠΈΡΠ΅ Π½Π° Google, ΡΠΎΠ²Π° ΡΡΡΡΠ²Π° ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»Π½ΠΎ $40/ΠΌΠ΅ΡΠ΅Ρ/ΡΠ΄ΡΠΎ Π·Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ n1-standard-64
, ΡΠΎΠ΅ΡΡ ΡΠ°ΠΌΠΎ ΡΠΎΠ·ΠΈ ΡΠ΅Π³ΠΈΠΎΠ½ ΡΠ΅ Π½ΠΈ ΡΡΡΡΠ²Π° ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ 50 Ρ
ΠΈΠ»ΡΠ΄ΠΈ Π΄ΠΎΠ»Π°ΡΠ° Π½Π° ΠΌΠ΅ΡΠ΅Ρ Π·Π° 1 ΠΌΠΈΠ»ΠΈΠΎΠ½ Π·Π°ΡΠ²ΠΊΠΈ Π² ΡΠ΅ΠΊΡΠ½Π΄Π°.
ΠΠ²Π°Π½ Π‘ΠΈΠΌ (
ΠΡΠ΅Π²ΠΈΠ΄Π½ΠΎ values-istio-test.yaml ΡΠ΅ ΡΠ²Π΅Π»ΠΈΡΠΈ ΡΠ΅ΡΠΈΠΎΠ·Π½ΠΎ Π·Π°ΡΠ²ΠΊΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠ°. ΠΠΊΠΎ ΡΡΠΌ Π½Π°ΠΏΡΠ°Π²ΠΈΠ» ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΡΡΠ° ΡΠΈ, ΠΈΠΌΠ°ΡΠ΅ Π½ΡΠΆΠ΄Π° ΠΎΡ ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»Π½ΠΎ 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!
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ SuperGloo, Π·Π°ΡΠΎΡΠΎ ΠΏΡΠ°Π²ΠΈ Π·Π°ΡΠ΅ΠΆΠ΄Π°Π½Π΅ΡΠΎ Π½Π° ΠΌΡΠ΅ΠΆΠ°ΡΠ° Π½Π° ΡΡΠ»ΡΠ³Π°ΡΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-Π»Π΅ΡΠ½ΠΎ. ΠΠ΅ ΡΡΡΠ±Π²Π°ΡΠ΅ Π΄Π° ΠΏΡΠ°Π²Ρ ΠΌΠ½ΠΎΠ³ΠΎ. ΠΠΈΠ΅ Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ SuperGloo Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎΡΠΎ, Π½ΠΎ Π΅ ΠΈΠ΄Π΅Π°Π»Π΅Π½ Π·Π° ΡΠ°ΠΊΠ°Π²Π° Π·Π°Π΄Π°ΡΠ°. Π’ΡΡΠ±Π²Π°ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ Π±ΡΠΊΠ²Π°Π»Π½ΠΎ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π·Π° Π²ΡΡΠΊΠ° ΡΠ΅ΡΠ²ΠΈΠ·Π½Π° ΠΌΡΠ΅ΠΆΠ°. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π΄Π²Π° ΠΊΠ»ΡΡΡΠ΅ΡΠ° Π·Π° ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ - ΠΏΠΎ Π΅Π΄ΠΈΠ½ Π·Π° Istio ΠΈ Linkerd.
ΠΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΡΡ Π΅ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ Π½Π° Google Kubernetes Engine. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ
Kubernetes 1.12.7-gke.7
ΠΈ Π½Π°Π±ΠΎΡ ΠΎΡ Π²ΡΠ·Π»ΠΈ n1-standard-4
Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΌΠ°ΡΠ°Π±ΠΈΡΠ°Π½Π΅ Π½Π° Π²ΡΠ·Π»ΠΈ (ΠΌΠΈΠ½ΠΈΠΌΡΠΌ 4, ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌ 16).
Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Ρ ΠΈ Π΄Π²Π΅ΡΠ΅ ΡΠ΅ΡΠ²ΠΈΠ·Π½ΠΈ ΠΌΡΠ΅ΠΆΠΈ ΠΎΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΈΡ ΡΠ΅Π΄.
ΠΡΡΠ²ΠΈ 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 |
+---------+------------+---------+---------------------------+
Π‘ΡΠΈΠ²ΡΡ ΠΎΡΠ½Π΅ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΌΠΈΠ½ΡΡΠΈ ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π½ΠΈΡΠ΅ ΠΏΠ°Π½Π΅Π»ΠΈ ΡΠ΅ ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠ°Ρ Π°.
(ΠΠ°Π±Π΅Π»Π΅ΠΆΠΊΠ°: SuperGloo ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΠ°ΠΌΠΎ Istio 1.0.x Π·Π°ΡΠ΅Π³Π°. ΠΠΎΠ²ΡΠΎΡΠΈΡ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ° Ρ Istio 1.1.3, Π½ΠΎ Π½Π΅ Π·Π°Π±Π΅Π»ΡΠ·Π°Ρ Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΠΌΠ° ΡΠ°Π·Π»ΠΈΠΊΠ°.)
ΠΠ°ΡΡΡΠΎΠΉΠ²Π°Π½Π΅ Π½Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ Π½Π° Istio
ΠΠ° Π΄Π° Π½Π°ΠΊΠ°ΡΠ°ΠΌΠ΅ Istio Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ° ΠΊΠΎΡΠ° Envoy, Π½ΠΈΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΈΠ½ΠΆΠ΅ΠΊΡΠΎΡΠ° Π·Π° ΠΊΠΎΡ - 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
ΠΠ° Π΄Π° Π½Π°ΡΡΡΠΎΠΈΠΌ Π²Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ΡΠΎ Π½Π° Linkerd sidecar, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π°Π½ΠΎΡΠ°ΡΠΈΠΈ (Π΄ΠΎΠ±Π°Π²ΠΈΡ
Π³ΠΈ ΡΡΡΠ½ΠΎ ΡΡΠ΅Π· 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 Fault Tolerance Simulator
Π‘ΡΠ·Π΄Π°Π΄ΠΎΡ ΠΌΠ΅ ΡΠΈΠΌΡΠ»Π°ΡΠΎΡ Π·Π° ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ, Π½Π°ΡΠ΅ΡΠ΅Π½ Istio, Π·Π° Π΄Π° Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΠ°ΠΌΠ΅ Ρ ΡΠ½ΠΈΠΊΠ°Π»Π΅Π½ Π·Π° Shopify ΡΡΠ°ΡΠΈΠΊ. ΠΠΌΠ°Ρ ΠΌΠ΅ Π½ΡΠΆΠ΄Π° ΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡ, ΠΊΠΎΡΡΠΎ Π΄Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½Π° ΡΠ°ΡΡ ΠΎΡ Π½Π°ΡΠ°ΡΠ° Π³ΡΠ°ΡΠΈΠΊΠ° Π½Π° ΡΡΠ»ΡΠ³Π°ΡΠ°, Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½Π° Π΄Π° ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠ° ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΈ ΡΠ°Π±ΠΎΡΠ½ΠΈ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½ΠΈΡ.
ΠΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Π½Π° 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 (Π²Ρ
ΠΎΠ΄ΡΡΠΈ ΠΈ ΠΈΠ·Ρ
ΠΎΠ΄ΡΡΠΈ).
ΠΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°ΠΌΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ΅ΡΡΡΡΠΈ ΡΡΠ΅Π·
ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈ
ΠΠΎΠ½ΡΡΠΎΠ»Π½ΠΈ ΠΏΠ°Π½Π΅Π»ΠΈ
ΠΡΡΠ²ΠΎ, ΠΏΡΠΎΠ²Π΅ΡΠΈΡ ΠΌΠ΅ ΠΊΠΎΠ½ΡΡΠΌΠ°ΡΠΈΡΡΠ° Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠ°.
ΠΠΎΠ½ΡΡΠΎΠ»Π΅Π½ ΠΏΠ°Π½Π΅Π» Π½Π° Linkerd ~22 ΠΌΠΈΠ»ΠΈΡΠ΄ΡΠ°
Istio ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅Π½ ΠΏΠ°Π½Π΅Π»: ~750 ΠΌΠΈΠ»ΠΈΡΠ΄ΡΠ°
ΠΠΎΠ½ΡΡΠΎΠ»Π½ΠΈΡΡ ΠΏΠ°Π½Π΅Π» Istio ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»Π½ΠΎ 35 ΠΏΡΡΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠΎΡΠ½ΠΈ ΡΠ΅ΡΡΡΡΠΈΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ Linkerd. Π Π°Π·Π±ΠΈΡΠ° ΡΠ΅, Π²ΡΠΈΡΠΊΠΎ Π΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ΠΎ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΠΈ istio-telemetry ΠΊΠΎΠ½ΡΡΠΌΠΈΡΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΡΡΠΈ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠ° ΡΡΠΊ (ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π΄Π΅Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½ΠΎ ΡΡΠ΅Π· Π΄Π΅Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ Π½Π° Π½ΡΠΊΠΎΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ). ΠΠΊΠΎ ΠΏΡΠ΅ΠΌΠ°Ρ Π½Π΅ΠΌ ΡΠΎΠ·ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, ΠΏΠ°ΠΊ ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΌΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ 100 ΠΌΠΈΠ»ΠΈΠΊΠΎΡΠ°, Ρ.Π΅ 4 ΠΏΡΡΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ Linkerd.
Sidecar ΠΏΡΠΎΠΊΡΠΈ
Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΡΠ΅ΡΡΠ²Π°Ρ ΠΌΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΎΠΊΡΠΈ. Π’ΡΡΠ±Π²Π° Π΄Π° ΠΈΠΌΠ° Π»ΠΈΠ½Π΅ΠΉΠ½Π° Π²ΡΡΠ·ΠΊΠ° Ρ Π±ΡΠΎΡ Π½Π° Π·Π°ΡΠ²ΠΊΠΈΡΠ΅, Π½ΠΎ Π·Π° Π²ΡΡΠΊΠ° ΡΡΡΠ°Π½ΠΈΡΠ½Π° ΠΊΠΎΠ»ΠΈΡΠΊΠ° ΠΈΠΌΠ° Π½ΡΠΊΠΎΠΈ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΡΠ°Π·Ρ ΠΎΠ΄ΠΈ, ΠΊΠΎΠΈΡΠΎ Π²Π»ΠΈΡΡΡ Π½Π° ΠΊΡΠΈΠ²Π°ΡΠ°.
Linkerd: ~100 ΠΌΠΈΠ»ΠΈΡΠ΄ΡΠ΅Π½ΠΈ Π·Π° irs-ΠΊΠ»ΠΈΠ΅Π½Ρ, ~50 ΠΌΠΈΠ»ΠΈΡΠ΄ΡΠ΅Π½ΠΈ Π·Π° irs-client-loadgen
Π Π΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°Ρ Π»ΠΎΠ³ΠΈΡΠ½ΠΈ, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΠΏΡΠΎΠΊΡΠΈΡΠΎ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΏΠΎΠ»ΡΡΠ°Π²Π° Π΄Π²Π° ΠΏΡΡΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ ΡΡΠ°ΡΠΈΠΊ ΠΎΡ ΠΏΡΠΎΠΊΡΠΈΡΠΎ Π½Π° loadgen: Π·Π° Π²ΡΡΠΊΠ° ΠΈΠ·Ρ ΠΎΠ΄ΡΡΠ° Π·Π°ΡΠ²ΠΊΠ° ΠΎΡ loadgen ΠΊΠ»ΠΈΠ΅Π½ΡΡΡ ΠΈΠΌΠ° Π΅Π΄Π½Π° Π²Ρ ΠΎΠ΄ΡΡΠ° ΠΈ Π΅Π΄Π½Π° ΠΈΠ·Ρ ΠΎΠ΄ΡΡΠ°.
Istio/Envoy: ~155 ΠΌΠΈΠ»ΠΈΡΠ΄ΡΠ° Π·Π° irs-client, ~75 ΠΌΠΈΠ»ΠΈΡΠ΄ΡΠ° Π·Π° irs-client-loadgen
ΠΠΈΠΆΠ΄Π°ΠΌΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈ Π·Π° ΠΊΠΎΡΠΎΠ²Π΅ΡΠ΅ Π½Π° Istio.
ΠΠΎ ΠΊΠ°ΡΠΎ ΡΡΠ»ΠΎ ΠΏΡΠΎΠΊΡΠΈΡΠ°ΡΠ° Istio/Envoy ΠΊΠΎΠ½ΡΡΠΌΠΈΡΠ°Ρ ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»Π½ΠΎ 50% ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠΎΡΠ½ΠΈ ΡΠ΅ΡΡΡΡΠΈΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ Linkerd.
ΠΠΈΠΆΠ΄Π°ΠΌΠ΅ ΡΡΡΠ°ΡΠ° ΡΡ Π΅ΠΌΠ° ΠΎΡ ΡΡΡΠ°Π½Π°ΡΠ° Π½Π° ΡΡΡΠ²ΡΡΠ°:
Linkerd: ~50 millicore Π·Π° irs-ΡΡΡΠ²ΡΡ
Istio/Envoy: ~80 millicore Π·Π° irs-ΡΡΡΠ²ΡΡ
ΠΡ ΡΡΡΠ°Π½Π° Π½Π° ΡΡΡΠ²ΡΡΠ°, ΡΡΡΠ°Π½ΠΈΡΠ½ΠΈΡΡ Π°Π²ΡΠΎΠΌΠΎΠ±ΠΈΠ» Istio/Envoy ΠΊΠΎΠ½ΡΡΠΌΠΈΡΠ° ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»Π½ΠΎ 60% ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠΎΡΠ½ΠΈ ΡΠ΅ΡΡΡΡΠΈΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ Linkerd.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΡΠΎΠΊΡΠΈΡΠΎ Istio Envoy ΠΊΠΎΠ½ΡΡΠΌΠΈΡΠ° 50+% ΠΏΠΎΠ²Π΅ΡΠ΅ CPU ΠΎΡ Linkerd ΠΏΡΠΈ Π½Π°ΡΠ΅ΡΠΎ ΡΠΈΠΌΡΠ»ΠΈΡΠ°Π½ΠΎ ΡΠ°Π±ΠΎΡΠ½ΠΎ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅. ΠΠΎΠ½ΡΡΠΎΠ»Π½ΠΈΡΡ ΠΏΠ°Π½Π΅Π» Π½Π° Linkerd ΠΊΠΎΠ½ΡΡΠΌΠΈΡΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΡΠ΅ΡΡΡΡΠΈ ΠΎΡ Istio, ΠΎΡΠΎΠ±Π΅Π½ΠΎ Π·Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ.
ΠΡΠ΅ ΠΎΡΠ΅ ΠΌΠΈΡΠ»ΠΈΠΌ ΠΊΠ°ΠΊ Π΄Π° Π½Π°ΠΌΠ°Π»ΠΈΠΌ ΡΠ΅Π·ΠΈ ΡΠ°Π·Ρ ΠΎΠ΄ΠΈ. ΠΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ ΠΈΠ΄Π΅ΠΈ, ΠΌΠΎΠ»Ρ ΡΠΏΠΎΠ΄Π΅Π»Π΅ΡΠ΅!
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com