当前位置:网站首页>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..
边栏推荐
- Hashcode and equals
- Record the pit of NETCORE's memory surge
- Scalpel like analysis of JVM -- this article takes you to peek into the secrets of JVM
- MySQL master-slave replication
- Class A, B, C networks and subnet masks in IPv4
- [American competition] mathematical terms
- 【按鍵消抖】基於FPGA的按鍵消抖模塊開發
- MySQL transaction isolation level
- Global and Chinese markets for fire resistant conveyor belts 2022-2028: Research Report on technology, participants, trends, market size and share
- Redis (replicate dictionary server) cache
猜你喜欢
How to standardize the deployment of automated testing?
C (thirty) C combobox listview TreeView
【按鍵消抖】基於FPGA的按鍵消抖模塊開發
Yyds dry goods inventory web components series (VII) -- life cycle of custom components
Scalpel like analysis of JVM -- this article takes you to peek into the secrets of JVM
【按键消抖】基于FPGA的按键消抖模块开发
Record the pit of NETCORE's memory surge
Tips for using dm8huge table
Basic knowledge of binary tree, BFC, DFS
Interface idempotency
随机推荐
User perceived monitoring experience
cookie,session,Token 这些你都知道吗?
51nod 1130 n factorial length V2 (Stirling approximation)
Flask learning and project practice 9: WTF form verification
[analysis of variance] single factor analysis and multi factor analysis
判断当天是当月的第几周
Cf464e the classic problem [shortest path, chairman tree]
MySQL master-slave replication
[Key shake elimination] development of key shake elimination module based on FPGA
Yyds dry goods inventory web components series (VII) -- life cycle of custom components
ESP32_ FreeRTOS_ Arduino_ 1_ Create task
C mouse event and keyboard event of C (XXVIII)
Prime protocol announces cross chain interconnection applications on moonbeam
Global and Chinese market of plasma separator 2022-2028: Research Report on technology, participants, trends, market size and share
Differential GPS RTK thousand search
The global and Chinese market of negative pressure wound therapy unit (npwtu) 2022-2028: Research Report on technology, participants, trends, market size and share
User datagram protocol UDP
Facebook等大厂超十亿用户数据遭泄露,早该关注DID了
MySQL transaction isolation level
math_极限&微分&导数&微商/对数函数的导函数推导(导数定义极限法)/指数函数求导公式推导(反函数求导法则/对数求导法)