ΠΠΎΠ²Π΅Π΄
ΠΠΈΠ΅ ΡΠΌΠ΅ Π²ΠΎ
Π
Π‘ΠΎ Istio 1.1, ΠΏΡΠΎΠΊΡΠΈΡΠΎ ΡΡΠΎΡΠΈ ΠΏΡΠΈΠ±Π»ΠΈΠΆΠ½ΠΎ 0,6 vCPU (Π²ΠΈΡΡΡΠ΅Π»Π½ΠΈ ΡΠ°Π΄ΡΠ°) Π½Π° 1000 Π±Π°ΡΠ°ΡΠ° Π²ΠΎ ΡΠ΅ΠΊΡΠ½Π΄Π°.
ΠΠ° ΠΏΡΠ²ΠΈΠΎΡ ΡΠ΅Π³ΠΈΠΎΠ½ Π²ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠ½Π°ΡΠ° ΠΌΡΠ΅ΠΆΠ° (2 ΠΏΡΠΎΠΊΡΠΈ Π½Π° ΡΠ΅ΠΊΠΎΡΠ° ΡΡΡΠ°Π½Π° ΠΎΠ΄ Π²ΡΡΠΊΠ°ΡΠ°), ΡΠ΅ ΠΈΠΌΠ°ΠΌΠ΅ 1200 ΡΠ°Π΄ΡΠ° ΡΠ°ΠΌΠΎ Π·Π° ΠΏΡΠΎΠΊΡΠΈ, ΡΠΎ Π±ΡΠ·ΠΈΠ½Π° ΠΎΠ΄ Π΅Π΄Π΅Π½ ΠΌΠΈΠ»ΠΈΠΎΠ½ Π±Π°ΡΠ°ΡΠ° Π²ΠΎ ΡΠ΅ΠΊΡΠ½Π΄Π°. Π‘ΠΏΠΎΡΠ΅Π΄ ΠΊΠ°Π»ΠΊΡΠ»Π°ΡΠΎΡΠΎΡ Π·Π° ΡΡΠΎΡΠΎΡΠΈ Π½Π° Google, ΡΠ΅ ΡΠΈΠ½ΠΈ Π΄Π΅ΠΊΠ° Π΅ ΠΏΡΠΈΠ±Π»ΠΈΠΆΠ½ΠΎ 40 Π΄ΠΎΠ»Π°ΡΠΈ/ΠΌΠ΅ΡΠ΅Ρ/ΡΠ°Π΄ΡΠΎ Π·Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ° n1-standard-64
, ΠΎΠ΄Π½ΠΎΡΠ½ΠΎ ΡΠ°ΠΌΠΎ ΠΎΠ²ΠΎΡ ΡΠ΅Π³ΠΈΠΎΠ½ ΡΠ΅ Π½Π΅ ΡΠΈΠ½ΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΠ΄ 50 ΠΈΠ»ΡΠ°Π΄ΠΈ Π΄ΠΎΠ»Π°ΡΠΈ ΠΌΠ΅ΡΠ΅ΡΠ½ΠΎ Π·Π° 1 ΠΌΠΈΠ»ΠΈΠΎΠ½ Π±Π°ΡΠ°ΡΠ° Π²ΠΎ ΡΠ΅ΠΊΡΠ½Π΄Π°.
ΠΠ²Π°Π½ Π‘ΠΈΠΌ (
ΠΡΠΈΠ³Π»Π΅Π΄Π½ΠΎ, values-istio-test.yaml ΡΠ΅ΡΠΈΠΎΠ·Π½ΠΎ ΡΠ΅ Π³ΠΈ Π·Π³ΠΎΠ»Π΅ΠΌΠΈ Π±Π°ΡΠ°ΡΠ°ΡΠ° Π·Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΎΡ. ΠΠΊΠΎ ΡΠ° Π½Π°ΠΏΡΠ°Π²ΠΈΠ² ΠΌΠΎΡΠ°ΡΠ° ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠ° ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ, ΠΏΠΎΡΡΠ΅Π±Π½ΠΈ Π²ΠΈ ΡΠ΅ ΠΏΡΠΈΠ±Π»ΠΈΠΆΠ½ΠΎ 24 ΡΠ°Π΄ΡΠ° Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΎΡ Π·Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π½Π°ΡΠ° ΡΠ°Π±Π»Π° ΠΈ 0,5 ΠΏΡΠΎΡΠ΅ΡΠΎΡ Π·Π° ΡΠ΅ΠΊΠΎΡ ΠΏΡΠΎΠΊΡΠΈ. ΠΠ΅ΠΌΠ°ΠΌ ΡΠΎΠ»ΠΊΡ ΠΌΠ½ΠΎΠ³Ρ. ΠΠ΅ Π³ΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ°ΠΌ ΡΠ΅ΡΡΠΎΠ²ΠΈΡΠ΅ ΠΊΠΎΠ³Π° ΡΠ΅ ΠΌΠΈ Π±ΠΈΠ΄Π°Ρ Π΄ΠΎΠ΄Π΅Π»Π΅Π½ΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ ΡΠ΅ΡΡΡΡΠΈ.
Π‘Π°ΠΊΠ°Π² ΡΠ°ΠΌ Π΄Π° Π²ΠΈΠ΄Π°ΠΌ ΠΊΠΎΠ»ΠΊΡ ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈΡΠ΅ Π½Π° 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 Π²ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎΡΠΎ, Π½ΠΎ Π΅ ΠΈΠ΄Π΅Π°Π»Π΅Π½ Π·Π° ΡΠ°ΠΊΠ²Π° Π·Π°Π΄Π°ΡΠ°. ΠΠΎΡΠ°Π² Π΄Π° ΠΊΠΎΡΠΈΡΡΠ°ΠΌ Π±ΡΠΊΠ²Π°Π»Π½ΠΎ Π½Π΅ΠΊΠΎΠ»ΠΊΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π·Π° ΡΠ΅ΠΊΠΎΡΠ° ΡΠ΅ΡΠ²ΠΈΡΠ½Π° ΠΌΡΠ΅ΠΆΠ°. ΠΠΎΡΠΈΡΡΠ΅Π² Π΄Π²Π° ΠΊΠ»Π°ΡΡΠ΅ΡΠΈ Π·Π° ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡΠ° - ΠΏΠΎ Π΅Π΄Π΅Π½ Π·Π° ΠΡΡΠΈΠΎ ΠΈ ΠΠΈΠ½ΠΊΠ΅ΡΠ΄.
ΠΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΎΡ Π±Π΅ΡΠ΅ ΡΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ Π½Π° 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 |
+---------+--------------+---------+---------------------------+
ΠΠΎΡΠΎΠ° ΠΡΡΠΈΠΎ:
$ 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, ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ ΠΏΡΠΈΠ±Π΅Π»Π΅ΡΠΊΠΈ (Π³ΠΈ Π΄ΠΎΠ΄Π°Π΄ΠΎΠ² ΡΠ°ΡΠ½ΠΎ ΠΏΡΠ΅ΠΊΡ 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 Π²ΠΎ ΠΌΠΈΠ½Π°ΡΠΎΡΠΎ. ΠΠ»Π°Π²Π½Π°ΡΠ° ΡΠ΅Π» Π½Π° ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ΡΠΎ Π½Π° ΡΠ΅ΡΠ²ΠΈΡΠ½Π°ΡΠ° ΠΌΡΠ΅ΠΆΠ° Π΅ Π΄Π΅ΠΊΠ° Π½ΠΈ ΡΡΠ΅Π±Π° Π΄ΠΎΠ²Π΅ΡΠ»ΠΈΠ²ΠΎΡΡ ΠΈ ΡΠΎΠ»Π΅ΡΠ°Π½ΡΠΈΡΠ° Π½Π° Π³ΡΠ΅ΡΠΊΠΈ Π½Π° Π½ΠΈΠ²ΠΎ Π½Π° ΠΌΡΠ΅ΠΆΠ° ΠΈ Π·Π° Π½Π°Ρ Π΅ Π²Π°ΠΆΠ½ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠ½Π°ΡΠ° ΠΌΡΠ΅ΠΆΠ° Π΅ΡΠΈΠΊΠ°ΡΠ½ΠΎ Π΄Π° ΡΠ΅ ΡΠΏΡΠ°Π²ΡΠ²Π° ΡΠΎ ΠΎΠΏΡΠΎΠ²Π°ΡΡΠ²Π°ΡΠ°ΡΠ° ΠΊΠΎΠΈ ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΎ Π³ΠΈ ΠΏΡΠ΅ΠΊΠΈΠ½Π°Π»Π΅ ΡΡΠ»ΡΠ³ΠΈΡΠ΅.
ΠΠΎ ΡΡΡΠ΅ΡΠΎ Π½Π° ΡΠΈΠΌΡΠ»Π°ΡΠΎΡΠΎΡ Π·Π° ΡΠΎΠ»Π΅ΡΠ°Π½ΡΠΈΡΠ° Π½Π° Π³ΡΠ΅ΡΠΊΠΈ Π΅ ΡΠ°Π±ΠΎΡΠ½ΠΈΠΊ ΡΠ°Π·ΠΎΠ», ΠΊΠΎΡ Π΄Π΅Π»ΡΠ²Π° ΠΊΠ°ΠΊΠΎ ΡΠ΅ΡΠ²ΠΈΡΠ΅Π½ ΠΌΡΠ΅ΠΆΠ΅Π½ ΡΠ°Π·ΠΎΠ». Π Π°Π±ΠΎΡΠ½ΠΈΡΠΊΠΈΠΎΡ ΡΠ°Π·ΠΎΠ» ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ° ΡΡΠ°ΡΠΈΡΠΊΠΈ ΠΏΡΠΈ ΡΡΠ°ΡΡΡΠ²Π°ΡΠ΅ ΠΈΠ»ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠΊΠΈ ΠΏΡΠ΅ΠΊΡ 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 (Π΄ΠΎΡΠ΄ΠΎΠ²Π½ΠΈ ΠΈ ΠΏΠΎΡΠ΄ΠΎΠ²Π½ΠΈ).
ΠΠΈΠ΅ Π³ΠΎ ΡΠ»Π΅Π΄ΠΈΠΌΠ΅ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ΡΠΎ Π½Π° ΡΠ΅ΡΡΡΡΠΈΡΠ΅ ΠΏΡΠ΅ΠΊΡ
ΠΠ°ΠΎΠ΄ΠΈ
ΠΠΎΠ½ΡΡΠΎΠ»Π½ΠΈ ΠΏΠ°Π½Π΅Π»ΠΈ
ΠΡΠ²ΠΎ, ΡΠ° ΠΈΡΠΏΠΈΡΠ°Π²ΠΌΠ΅ ΠΏΠΎΡΡΠΎΡΡΠ²Π°ΡΠΊΠ°ΡΠ° Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΎΡ.
ΠΠΈΠ½ΠΊΠ΅ΡΠ΄ ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅Π½ ΠΏΠ°Π½Π΅Π» ~22 ΠΌΠΈΠ»ΠΈΠΊΠΎΡΠΈ
Istio ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅Π½ ΠΏΠ°Π½Π΅Π»: ~ 750 ΠΌΠΈΠ»ΠΈΠΊΠΎΡΠΈ
ΠΠΎΠ½ΡΡΠΎΠ»Π½Π°ΡΠ° ΡΠ°Π±Π»Π° Istio ΠΊΠΎΡΠΈΡΡΠΈ ΠΏΡΠΈΠ±Π»ΠΈΠΆΠ½ΠΎ 35 ΠΏΠ°ΡΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ ΡΠ΅ΡΡΡΡΠΈ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΎΡΠΎΡΠΊΠΎΠ»ΠΊΡ ΠΠΈΠ½ΠΊΠ΅ΡΠ΄. Π‘Π΅ ΡΠ°Π·Π±ΠΈΡΠ°, ΡΓ¨ Π΅ ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ΠΎ, Π° istio-telemetry ΡΡΠΎΡΠΈ ΠΌΠ½ΠΎΠ³Ρ ΡΠ΅ΡΡΡΡΠΈ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΎΡ ΠΎΠ²Π΄Π΅ (ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΎΠ½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠΈ ΡΠΎ ΠΎΠ½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π°ΡΠ΅ Π½Π° Π½Π΅ΠΊΠΎΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ). ΠΠΊΠΎ ΡΠ° ΠΎΡΡΡΡΠ°Π½ΠΈΠΌΠ΅ ΠΎΠ²Π°Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°, ΡΠ΅ΠΏΠ°ΠΊ Π΄ΠΎΠ±ΠΈΠ²Π°ΠΌΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΠ΄ 100 ΠΌΠΈΠ»ΠΈΠΊΠΎΡΠΈ, Ρ.Π΅ 4 ΠΏΠ°ΡΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ΠΎΡΠΊΠΎΠ»ΠΊΡ ΠΠΈΠ½ΠΊΠ΅ΡΠ΄.
ΠΡΠΎΠΊΡΠΈ Π·Π° ΡΡΡΠ°Π½ΠΈΡΠ½Π° ΠΊΠΎΠ»Π°
ΠΠΎΡΠΎΠ° ΡΠ° ΡΠ΅ΡΡΠΈΡΠ°Π²ΠΌΠ΅ ΡΠΏΠΎΡΡΠ΅Π±Π°ΡΠ° Π½Π° ΠΏΡΠΎΠΊΡΠΈ. Π’ΡΠ΅Π±Π° Π΄Π° ΠΈΠΌΠ° Π»ΠΈΠ½Π΅Π°ΡΠ½Π° Π²ΡΡΠΊΠ° ΡΠΎ Π±ΡΠΎΡΠΎΡ Π½Π° Π±Π°ΡΠ°ΡΠ°, Π½ΠΎ Π·Π° ΡΠ΅ΠΊΠΎΡΠ° ΡΡΡΠ°Π½ΠΈΡΠ½Π° ΠΊΠΎΠ»Π° ΠΈΠΌΠ° Π½Π΅ΠΊΠΎΠΈ Π½Π°Π΄Π·Π΅ΠΌΠ½ΠΈ ΡΡΠΎΡΠΎΡΠΈ ΡΡΠΎ Π²Π»ΠΈΡΠ°Π΅ Π½Π° ΠΊΡΠΈΠ²Π°ΡΠ°.
ΠΠΈΠ½ΠΊΠ΅ΡΠ΄: ~ 100 ΠΌΠΈΠ»ΠΈΠΊΠΎΡΠΈ Π·Π° irs-client, ~50 ΠΌΠΈΠ»ΠΈΠΊΠΎΡΠΈ Π·Π° irs-client-loadgen
Π Π΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅ ΠΈΠ·Π³Π»Π΅Π΄Π°Π°Ρ Π»ΠΎΠ³ΠΈΡΠ½ΠΎ, Π±ΠΈΠ΄Π΅ΡΡΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΡ ΠΏΡΠΎΠΊΡΠΈ Π΄ΠΎΠ±ΠΈΠ²Π° Π΄Π²ΠΎΡΠ½ΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ°ΡΠ°Ρ ΠΎΠ΄ ΠΏΡΠΎΠΊΡΠΈΡΠΎ Π·Π° Π²ΡΠΈΡΡΠ²Π°ΡΠ΅: Π·Π° ΡΠ΅ΠΊΠΎΠ΅ ΠΏΠΎΡΠ΄ΠΎΠ²Π½ΠΎ Π±Π°ΡΠ°ΡΠ΅ ΠΎΠ΄ loadgen, ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΡ ΠΈΠΌΠ° Π΅Π΄Π΅Π½ Π΄ΠΎΡΠ΄ΠΎΠ²Π΅Π½ ΠΈ Π΅Π΄Π΅Π½ ΠΏΠΎΡΠ΄ΠΎΠ²Π΅Π½.
Istio/Envoy: ~155 ΠΌΠΈΠ»ΠΈΠΊΠΎΡΠΈ Π·Π° irs-client, ~75 millicores Π·Π° irs-client-loadgen
ΠΠ»Π΅Π΄Π°ΠΌΠ΅ ΡΠ»ΠΈΡΠ½ΠΈ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈ Π·Π° ΡΡΡΠ°Π½ΠΈΡΠ½ΠΈΡΠ΅ ΠΊΠΎΠ»ΠΈ Istio.
ΠΠΎ, Π³Π΅Π½Π΅ΡΠ°Π»Π½ΠΎ, ΠΏΠΎΠ»Π½ΠΎΠΌΠΎΡΠ½ΠΈΡΠΈΡΠ΅ Π½Π° Istio/Envoy ΠΊΠΎΠ½ΡΡΠΌΠΈΡΠ°Π°Ρ ΠΏΡΠΈΠ±Π»ΠΈΠΆΠ½ΠΎ 50% ΠΏΠΎΠ²Π΅ΡΠ΅ ΡΠ΅ΡΡΡΡΠΈ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΎΡΠΎΡΠΊΠΎΠ»ΠΊΡ ΠΠΈΠ½ΠΊΠ΅ΡΠ΄.
ΠΠ° Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΈΡΡΠ°ΡΠ° ΡΠ΅ΠΌΠ° Π½Π° ΡΡΡΠ°Π½Π°ΡΠ° Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ:
ΠΠΈΠ½ΠΊΠ΅ΡΠ΄: ~ 50 ΠΌΠΈΠ»ΠΈΠΊΠΎΡΠΈ Π·Π° irs-ΡΠ΅ΡΠ²Π΅Ρ
Istio/Envoy: ~80 ΠΌΠΈΠ»ΠΈΠΊΠΎΡΠΈ Π·Π° irs-ΡΠ΅ΡΠ²Π΅Ρ
ΠΠ° ΡΡΡΠ°Π½Π°ΡΠ° Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ, ΡΡΡΠ°Π½ΠΈΡΠ½Π°ΡΠ° ΠΊΠΎΠ»Π° Istio/Envoy ΡΡΠΎΡΠΈ ΠΏΡΠΈΠ±Π»ΠΈΠΆΠ½ΠΎ 60% ΠΏΠΎΠ²Π΅ΡΠ΅ ΡΠ΅ΡΡΡΡΠΈ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΎΡΠΎΡΠΊΠΎΠ»ΠΊΡ ΠΠΈΠ½ΠΊΠ΅ΡΠ΄.
ΠΠ°ΠΊΠ»ΡΡΠΎΠΊ
ΠΡΠΎΠΊΡΠΈΡΠΎ Π½Π° Istio Envoy ΡΡΠΎΡΠΈ 50+% ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠΎΡ ΠΎΠ΄ Linkerd Π½Π° Π½Π°ΡΠΈΠΎΡ ΡΠΈΠΌΡΠ»ΠΈΡΠ°Π½ ΠΎΠ±Π΅ΠΌ Π½Π° ΡΠ°Π±ΠΎΡΠ°. ΠΠΎΠ½ΡΡΠΎΠ»Π½Π°ΡΠ° ΡΠ°Π±Π»Π° Π½Π° Linkerd ΡΡΠΎΡΠΈ ΠΌΠ½ΠΎΠ³Ρ ΠΏΠΎΠΌΠ°Π»ΠΊΡ ΡΠ΅ΡΡΡΡΠΈ ΠΎΠ΄ Istio, ΠΎΡΠΎΠ±Π΅Π½ΠΎ Π·Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ.
Π‘Γ¨ ΡΡΡΠ΅ ΡΠ°Π·ΠΌΠΈΡΠ»ΡΠ²Π°ΠΌΠ΅ ΠΊΠ°ΠΊΠΎ Π΄Π° Π³ΠΈ Π½Π°ΠΌΠ°Π»ΠΈΠΌΠ΅ ΠΎΠ²ΠΈΠ΅ ΡΡΠΎΡΠΎΡΠΈ. ΠΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ ΠΈΠ΄Π΅ΠΈ, Π²Π΅ ΠΌΠΎΠ»ΠΈΠΌΠ΅ ΡΠΏΠΎΠ΄Π΅Π»Π΅ΡΠ΅!
ΠΠ·Π²ΠΎΡ: www.habr.com