当前位置:网站首页>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..
边栏推荐
- Global and Chinese markets for MRI safe implants 2022-2028: technology, participants, trends, market size and share Research Report
- Global and Chinese markets for endoscopic drying storage cabinets 2022-2028: Research Report on technology, participants, trends, market size and share
- [001] [stm32] how to download STM32 original factory data
- 简易博客系统
- Global and Chinese markets for fire resistant conveyor belts 2022-2028: Research Report on technology, participants, trends, market size and share
- 自动化测试怎么规范部署?
- Global and Chinese market of plasma separator 2022-2028: Research Report on technology, participants, trends, market size and share
- MySql数据库root账户无法远程登陆解决办法
- mysql关于自增长增长问题
- [matlab] - draw a five-star red flag
猜你喜欢
随机推荐
Global and Chinese markets for fire resistant conveyor belts 2022-2028: Research Report on technology, participants, trends, market size and share
C (thirty) C combobox listview TreeView
Align items and align content in flex layout
C#(二十九)之C#listBox checkedlistbox imagelist
在字节做测试5年,7月无情被辞,想给划水的兄弟提个醒
[disassembly] a visual air fryer. By the way, analyze the internal circuit
/usr/bin/gzip: 1: ELF: not found/usr/bin/gzip: 3: : not found/usr/bin/gzip: 4: Syntax error:
Introduction to data types in MySQL
Oracle ORA error message
User datagram protocol UDP
Le compte racine de la base de données MySQL ne peut pas se connecter à distance à la solution
Interface idempotency
TCP/IP协议里面的网关地址和ip地址有什么区别?
Stack and queue
Yyds dry goods inventory hcie security Day11: preliminary study of firewall dual machine hot standby and vgmp concepts
ESP32_ FreeRTOS_ Arduino_ 1_ Create task
An article will give you a comprehensive understanding of the internal and external components of "computer"
Plus d'un milliard d'utilisateurs de grandes entreprises comme Facebook ont été compromis, il est temps de se concentrer sur le did
P7735-[noi2021] heavy and heavy edges [tree chain dissection, line segment tree]
Serial port-rs232-rs485-ttl