当前位置:网站首页>10 exemples les plus courants de gestion du trafic istio, que savez - vous?
10 exemples les plus courants de gestion du trafic istio, que savez - vous?
2022-07-06 04:04:00 【Wanmao Academy】
10 - Oui. Istio Gestion du trafic Les exemples les plus courants,Il est fortement recommandé queCollectionLève - toi.,En cas de besoin.
Pour faciliter la compréhension,ParIstioOfficially providedBookinfoExemple d'application,Exportation Istio Exemples courants de gestion du trafic.
BookinfoLe schéma appliqué est le suivant::
Parmi eux,Contient quatre microservices distincts:
productpage
:Appelezdetails
Etreviews
Deux services,Utilisé pour générer des pages.details
:Contient des informations sur le livre.reviews
:Contient des commentaires sur les livres.Il appelle aussi ratings Microservices.rating
:Contient des informations sur la notation des livres.
Parmi eux,reviews
Services disponibles 3 Versions:
- v1 La version n'appelle pas
ratings
Services. - v2 La version appelle
ratings
Services,Et utiliser 1 À 5 - Oui.NoirIcône stellaire pour afficher les informations de notation. - v3 La version appelle
ratings
Services,Et utiliser 1 À 5 - Oui.RougeIcône stellaire pour afficher les informations de notation.
Transfert de trafic
Objectifs1:Prends ça.
reviews
Tout le trafic du service est acheminé vers v1Version.
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: reviews
spec:
hosts:
- reviews
http:
- route:
- destination:
host: reviews
subset: v1
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: reviews
spec:
host: reviews
subsets:
- labels:
version: v1
name: v1
- labels:
version: v2
name: v2
- labels:
version: v3
name: v3
Objectifs2:Prends ça.
reviews
Services50% Transfert de trafic vers v3Version.
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: reviews
spec:
hosts:
- reviews
http:
- route:
- destination:
host: reviews
subset: v1
weight: 50
- destination:
host: reviews
subset: v3
weight: 50
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: reviews
spec:
host: reviews
subsets:
- labels:
version: v1
name: v1
- labels:
version: v2
name: v2
- labels:
version: v3
name: v3
Objectifs3:Prends ça.
reviews
Tout le trafic du service est acheminé vers v3Version.
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: reviews
spec:
hosts:
- reviews
http:
- route:
- destination:
host: reviews
subset: v3
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: reviews
spec:
host: reviews
subsets:
- labels:
version: v1
name: v1
- labels:
version: v2
name: v2
- labels:
version: v3
name: v3
Routage basé sur l'identité de l'utilisateur
Objectifs:Du nom OneMore Tout le trafic des utilisateurs est acheminé vers v2Version, Tout le trafic est acheminé vers v1Version.
Istio Il n'y a pas de mécanisme spécial intégré pour l'identité de l'utilisateur. Dans l'exemple d'application ,productpage
Le service est disponible dans tous les reviews
Services HTTP Une personnalisation a été ajoutée à la demande end-user
En - tête de la demande, Sa valeur est le nom d'utilisateur .
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: reviews
spec:
hosts:
- reviews
http:
- match:
- headers:
end-user:
exact: OneMore
route:
- destination:
host: reviews
subset: v2
- route:
- destination:
host: reviews
subset: v1
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: reviews
spec:
host: reviews
subsets:
- labels:
version: v1
name: v1
- labels:
version: v2
name: v2
- labels:
version: v3
name: v3
Injection HTTP Défaut de retard
Objectifs:Utilisateurs OneMore Au moment de la visite,
ratings
Le Service injecte un 2 Délai de quelques secondes,productpage
La page est à environ 2 Le chargement des secondes est terminé sans erreur .
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: ratings
spec:
hosts:
- ratings
http:
- match:
- headers:
end-user:
exact: OneMore
fault:
delay:
percentage:
value: 100.0
fixedDelay: 2s
route:
- destination:
host: ratings
subset: v1
- route:
- destination:
host: ratings
subset: v1
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: ratings
spec:
host: ratings
subsets:
- labels:
version: v1
name: v1
Injection HTTP Interrompre la faute
Objectifs:Utilisateurs OneMore Au moment de la visite,
ratings
Le Service injecte un 503 Échec de l'interruption de ,productpage
La page peut être chargée immédiatement ,Affichage simultané “Ratings service is currently unavailable” De telles nouvelles.
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: ratings
spec:
hosts:
- ratings
http:
- fault:
abort:
httpStatus: 503
percentage:
value: 100
match:
- headers:
end-user:
exact: OneMore
route:
- destination:
host: ratings
subset: v1
- route:
- destination:
host: ratings
subset: v1
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: ratings
spec:
host: ratings
subsets:
- labels:
version: v1
name: v1
Définir le délai de demande
Tout d'abord,,Utilisateurs OneMore Au moment de la visite, ratings
Le Service injecte un 2 Délai de quelques secondes,productpage
La page est à environ 2 Le chargement des secondes est terminé sans erreur .
Comme indiqué ci - dessusInjection HTTP Défaut de retard Exécution des opérations,Plus de détails..
Objectifs:Utilisateurs OneMore Au moment de la visite,
reviews
Le délai de demande pour le service est fixé à 1 Secondes,Affichage simultané “Sorry, product reviews are currently unavailable for this book.” De telles nouvelles.
kind: VirtualService
apiVersion: networking.istio.io/v1alpha3
metadata:
name: reviews
spec:
hosts:
- reviews
http:
- match:
- headers:
end-user:
exact: OneMore
route:
- destination:
host: reviews
subset: v2
timeout: 1s
- route:
- destination:
host: reviews
subset: v1
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: reviews
spec:
host: reviews
subsets:
- labels:
version: v1
name: v1
- labels:
version: v2
name: v2
- labels:
version: v3
name: v3
InJaeger Vous pouvez voir les chaînes d'appels spécifiques ci - dessous :
Set request retry
Tout d'abord,,Utilisateurs OneMore Au moment de la visite, ratings
Le Service injecte un 2 Délai de quelques secondes,productpage
La page est à environ 2 Le chargement des secondes est terminé sans erreur .
Comme indiqué ci - dessusInjection HTTP Défaut de retard Exécution des opérations,Plus de détails..
Objectifs:Utilisateurs OneMore Au moment de la visite,
reviews
Le nombre de demandes de service réessayées est 2Une fois, Le délai de retry est 0.5 Secondes,Affichage simultané “Sorry, product reviews are currently unavailable for this book.” Un tel message d'erreur .
kind: VirtualService
apiVersion: networking.istio.io/v1alpha3
metadata:
name: reviews
spec:
hosts:
- reviews
http:
- match:
- headers:
end-user:
exact: OneMore
route:
- destination:
host: reviews
subset: v2
retries:
attempts: 2
perTryTimeout: 0.5s
- route:
- destination:
host: reviews
subset: v1
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: reviews
spec:
host: reviews
subsets:
- labels:
version: v1
name: v1
- labels:
version: v2
name: v2
- labels:
version: v3
name: v3
Rejeter la cible IPDemandes
Objectifs:Sauf queIPPour
10.201.240.131
Les clients de/api/v1/products/1
, D'autres clients ont refusé la demande .
apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
name: deny-by-ip
spec:
selector:
matchLabels:
app: productpage
action: DENY
rules:
- to:
- operation:
paths: ["/api/v1/products/1"]
when:
- key: remote.ip
notValues: ["10.201.240.131"]
Fusible
Objectifs:Paramètres
details
La concurrence maximale pour les services est de 1.
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: details
spec:
host: details
trafficPolicy:
connectionPool:
tcp:
maxConnections: 1
http:
http1MaxPendingRequests: 1
maxRequestsPerConnection: 1
Peut être utilisé Fortio Effectuer un essai de charge,Le nombre de transmissions simultanées est 2 Connexion à(-c 2
),Demande 20 Une fois(-n 2
0):
kubectl exec fortio-deploy-684b6b47f8-tzsg8 -c fortio -- /usr/bin/fortio load -c 3 -qps 0 -n 20 -loglevel Warning http://details:9080/details/0
Parmi eux,fortio-deploy-684b6b47f8-tzsg8- Oui.FortioDePodNom,Les effets sont les suivants:
Miroir de flux
Objectifs: Acheminer tout le trafic vers reviewsServices v2 Version, Et miroir tout le trafic à v3 Version.
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: reviews
spec:
hosts:
- reviews
http:
- route:
- destination:
host: reviews
subset: v2
mirror:
host: reviews
subset: v3
mirrorPercentage:
value: 100.0
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: reviews
spec:
host: reviews
subsets:
- labels:
version: v1
name: v1
- labels:
version: v2
name: v2
- labels:
version: v3
name: v3
Exécutez la commande suivante pour voirreviews
Services v3 Version Envoy Journal d'accès:
kubectl logs -l app=reviews,version=v3 -c istio-proxy
Je vois.reviews
Services v3 Version du Journal appelée :
{
"authority": "reviews-shadow:9080",
"bytes_received": 0,
"bytes_sent": 375,
"connection_termination_details": null,
"downstream_local_address": "10.1.1.64:9080",
"downstream_remote_address": "10.1.1.59:0",
"duration": 1914,
"method": "GET",
"path": "/reviews/0",
"protocol": "HTTP/1.1",
"request_id": "b79cefe6-1277-9c39-b398-f94a704840cc",
"requested_server_name": "outbound_.9080_.v3_.reviews.default.svc.cluster.local",
"response_code": 200,
"response_code_details": "via_upstream",
"response_flags": "-",
"route_name": "default",
"start_time": "2022-06-27T07:34:19.129Z",
"upstream_cluster": "inbound|9080||",
"upstream_host": "10.1.1.64:9080",
"upstream_local_address": "127.0.0.6:59837",
"upstream_service_time": "1913",
"upstream_transport_failure_reason": null,
"user_agent": "curl/7.79.1",
"x_forwarded_for": "10.1.1.59"
}
IngressLe routage de
Objectifs:En - tête de la demande
app-id
Pourdetails
Tout le trafic est acheminé versdetails
En service.
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: bookinfo
spec:
hosts:
- '*'
gateways:
- bookinfo-gateway
http:
- match:
- uri:
exact: /productpage
- uri:
prefix: /static
- uri:
exact: /login
- uri:
exact: /logout
- uri:
prefix: /api/v1/products
route:
- destination:
host: productpage
port:
number: 9080
- match:
- headers:
app-id:
exact: details
route:
- destination:
host: details
port:
number: 9080
UtilisercurlVérifiez les commandes.:
curl -H "app-id: details" -v http://127.0.0.1/details/2
Les résultats sont les suivants:
* Trying 127.0.0.1:80...
* Connected to 127.0.0.1 (127.0.0.1) port 80 (#0)
> GET /details/2 HTTP/1.1
> Host: 127.0.0.1
> User-Agent: curl/7.79.1
> Accept: */*
> app-id: details
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< content-type: application/json
< server: istio-envoy
< date: Tue, 28 Jun 2022 07:14:40 GMT
< content-length: 178
< x-envoy-upstream-service-time: 4
<
{"id":2,"author":"William Shakespeare","year":1595,"type":"paperback","pages":200,"publisher":"PublisherA","language":"English","ISBN-10":"1234567890","ISBN-13":"123-1234567890"}
* Connection #0 to host 127.0.0.1 left intact
Retour aux résultats comme vous pouvez le voir ,Visited bydetails
Services.
Enfin,Merci d'être si beau,Rends - le - moi.- Oui..
边栏推荐
- Alibaba testers use UI automated testing to achieve element positioning
- /usr/bin/gzip: 1: ELF: not found/usr/bin/gzip: 3: : not found/usr/bin/gzip: 4: Syntax error:
- Hashcode and equals
- MySQL about self growth
- Proof of Stirling formula
- Tips for using dm8huge table
- [American competition] mathematical terms
- Python book learning notes - Chapter 09 section 01 create and use classes
- math_ Derivative function derivation of limit & differential & derivative & derivative / logarithmic function (derivative definition limit method) / derivative formula derivation of exponential functi
- Global and Chinese market of aircraft anti icing and rain protection systems 2022-2028: Research Report on technology, participants, trends, market size and share
猜你喜欢
Alibaba testers use UI automated testing to achieve element positioning
自动化测试怎么规范部署?
Solution to the problem that the root account of MySQL database cannot be logged in remotely
WPF效果第一百九十一篇之框选ListBox
《2022年中国银行业RPA供应商实力矩阵分析》研究报告正式启动
综合能力测评系统
Custom event of C (31)
在 .NET 6 中使用 Startup.cs 更简洁的方法
Le compte racine de la base de données MySQL ne peut pas se connecter à distance à la solution
Align items and align content in flex layout
随机推荐
Simple blog system
C#(二十八)之C#鼠标事件、键盘事件
Ybtoj coloring plan [tree chain dissection, segment tree, tarjan]
Error 1045 (28000): access denied for user 'root' @ 'localhost' (using password: no/yes
LTE CSFB test analysis
[Key shake elimination] development of key shake elimination module based on FPGA
Serial port-rs232-rs485-ttl
Flask learning and project practice 8: introduction and use of cookies and sessions
Viewing and verifying backup sets using dmrman
Web components series (VII) -- life cycle of custom components
【按键消抖】基于FPGA的按键消抖模块开发
3分钟带你了解微信小程序开发
No qualifying bean of type ‘......‘ available
Basic concepts of LTE user experience
Global and Chinese markets for otolaryngology devices 2022-2028: Research Report on technology, participants, trends, market size and share
asp. Core is compatible with both JWT authentication and cookies authentication
在 .NET 6 中使用 Startup.cs 更简洁的方法
Record an excel xxE vulnerability
Hashcode and equals
Indicator system of KQI and KPI