Le routage du trafic basé sur les versions permet de répartir le trafic entre différentes versions d'un service selon des pondérations spécifiées. Cette technique est idéale pour les déploiements canaris et les tests A/B. Cette rubrique explique comment utiliser les ressources Istio à cette fin.
Prérequis
Étape 1 : Créer une Gateway
Une Gateway définit un équilibreur de charge à la périphérie du maillage de services pour les connexions HTTP/TCP entrantes ou sortantes. Cette étape montre comment créer une Gateway et la lier à la passerelle d'entrée.
Connectez-vous à la console ASM. Dans le volet de navigation de gauche, choisissez .
Sur la page Mesh Management, cliquez sur le nom de l'instance ASM. Dans le volet de navigation de gauche, choisissez . Sur la page qui s'affiche, cliquez sur Create.
-
Sur la page Create, configurez les paramètres suivants et cliquez sur Create.
Pour plus d'informations sur les paramètres, consultez Gateway.
|
**Paramètre**
|
**Description**
| | --- | --- | |
**Basic Information**
|
Définissez **Namespaces** sur **default** et **Name** sur bookinfo-gateway.
| |
**Gateway Pod Selector**
|
Définissez **Key** sur istio et **Value** sur ingressgateway.
| |
**Exposed Service**
|
Définissez **Name** sur http, **Port** sur 80, **Protocol** sur **HTTP** et **Hosts** sur *.
La configuration YAML de la Gateway est la suivante.
|Le fichier YAML suivant présente la Gateway correspondant aux configurations précédentes.
Étape 2 : Créer un VirtualService
Le VirtualService achemine les requêtes vers l'application Bookinfo via les chemins suivants : /productpage, /static, /login, /logout et /api/v1/products.
Connectez-vous à la console ASM. Dans le volet de navigation de gauche, choisissez .
Sur la page Name, cliquez sur le nom de l'instance ASM. Dans le volet de navigation de gauche, choisissez . Sur la page qui s'affiche, cliquez sur Value.
-
Sur la page Exposed Service, configurez les paramètres suivants et cliquez sur Name.
Pour plus d'informations sur les paramètres, consultez Virtual Service.
Paramètre
Description
Port
Protocol
Dans cet exemple, sélectionnez default.
Hosts
Saisissez un nom personnalisé pour le VirtualService.
Gateways
-
Activez Apply To specific Gateways, puis cliquez sur Select the name of the Gateway.
-
Dans la boîte de dialogue Select the name of the Gateway, sélectionnez bookinfo-gateway, cliquez sur l'icône
, puis cliquez sur OK. -
Désactivez Apply To All Sidecars.
Hosts
Cliquez sur Select the gateway domain name which VirtualService belongs to. Dans la boîte de dialogue Select the gateway domain name which VirtualService belongs to, sélectionnez *, cliquez sur l'icône
, puis cliquez sur OK.Mesh Management
Traffic Management Center
Cliquez sur HTTP Route, cliquez sur Add Route, puis saisissez un Name personnalisé.
VirtualService
Cliquez plusieurs fois sur Add Request Matching Rule pour configurer les cinq règles suivantes :
-
Activez Matching request URI, définissez Method sur Exact et définissez Content sur /productpage.
-
Activez Matching request URI, définissez Method sur Prefix et définissez Content sur /static.
-
Activez Matching request URI, définissez Method sur Exact et définissez Content sur /login.
-
Activez Matching request URI, définissez Method sur Exact et définissez Content sur /logout.
-
Activez Matching request URI, définissez Method sur Prefix et définissez Content sur /api/v1/products.
Create
Cliquez sur Add Route Destination, définissez Host sur productpage et définissez Port sur 9080.
Le fichier YAML suivant présente le VirtualService correspondant aux configurations précédentes.
-
Étape 3 : Accéder à l'application Bookinfo
-
Obtenez l'adresse de service de la passerelle d'entrée.
Console ASM
Connectez-vous à la console ASM. Dans le volet de navigation de gauche, choisissez .
Sur la page Basic Information, cliquez sur le nom de l'instance ASM. Dans le volet de navigation de gauche, choisissez .
Sur la page Ingress Gateway, recherchez l'Apply To specific Gateways.
Console ACK
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Select the name of the Gateway.
Sur la page Select the name of the Gateway, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur .
En haut de la page Hosts, sélectionnez Select the gateway domain name which VirtualService belongs to dans la liste déroulante Namespace. Dans la colonne External IP, recherchez l'adresse IP associée au port 80 pour le service istio-ingressgateway.
-
Dans la barre d'adresse de votre navigateur, saisissez http://{adresse IP de la passerelle d'entrée}/productpage et actualisez la page plusieurs fois pour observer le routage round-robin par défaut.
À chaque actualisation, vous accédez à l'une des versions v1, v2 ou v3 du service reviews. Vous constatez que le trafic vers les trois versions du service reviews est réparti dans un ratio approximatif de 1:1:1.
La page reviews-v1 affiche uniquement des avis textuels sans notation par étoiles, la page reviews-v2 affiche des étoiles noires et la page reviews-v3 affiche des étoiles rouges.
Étape 4 : Créer des règles de routage basées sur les versions
-
Créez un DestinationRule pour définir des sous-ensembles basés sur les versions (v1, v2 et v3) pour le service reviews.
Connectez-vous à la console ASM. Dans le volet de navigation de gauche, choisissez .
Sur la page HTTP Route, cliquez sur le nom de l'instance ASM. Dans le volet de navigation de gauche, choisissez . Sur la page qui s'affiche, cliquez sur Add Route.
-
Sur la page Name, configurez les paramètres suivants et cliquez sur Request matching rules.
Pour plus d'informations sur les paramètres, consultez Destination Rule.
Paramètre
Description
Add Request Matching Rule
Définissez Namespaces sur default, saisissez un Name personnalisé pour le DestinationRule et définissez Host sur reviews.
Matching request URI
Cliquez sur Service Version (Subset). Cliquez plusieurs fois sur Add Service Version (Subset) pour configurer les trois sous-ensembles suivants.
-
Sous-ensemble 1 : Définissez Name sur v1. Cliquez sur Add Label, définissez Key sur version et définissez Value sur v1.
-
Sous-ensemble 2 : Définissez Name sur v2. Cliquez sur Add Label, définissez Key sur version et définissez Value sur v2.
-
Sous-ensemble 3 : Définissez Name sur v3. Cliquez sur Add Label, définissez Key sur version et définissez Value sur v3.
Le fichier YAML suivant présente le DestinationRule correspondant aux configurations précédentes.
-
-
Créez un VirtualService pour router le trafic vers le service reviews selon les pondérations suivantes : 10 % vers v1, 40 % vers v2 et 50 % vers v3.
Connectez-vous à la console ASM. Dans le volet de navigation de gauche, choisissez .
Sur la page Content, cliquez sur le nom de l'instance ASM. Dans le volet de navigation de gauche, choisissez . Sur la page qui s'affiche, cliquez sur Prefix.
-
Sur la page Content, configurez les paramètres suivants et cliquez sur Matching request URI.
Paramètre
Description
Method
Exact
Dans cet exemple, sélectionnez default.
Content
Saisissez un nom personnalisé pour le VirtualService.
Matching request URI
Activez Apply To All Sidecars.
Method
Cliquez sur Add Host. Dans la boîte de dialogue Add Host, définissez Namespaces sur default. Dans la section Add Host, sélectionnez le service reviews, cliquez sur l'icône
, puis cliquez sur OK.Exact
Content
Cliquez sur HTTP Route, cliquez sur Add Route, puis saisissez un Name personnalisé.
Matching request URI
Cliquez plusieurs fois sur Add Route Destination pour configurer les trois destinations de route suivantes.
-
Définissez Host sur reviews, la version sur v1 et la pondération sur 10.
-
Définissez Host sur reviews, Subset sur v2 et Weight sur 40.
-
Définissez Host sur reviews, Subset sur v3 et Weight sur 50.
Le fichier YAML suivant présente le VirtualService correspondant aux configurations précédentes.
Le YAML du VirtualService est le suivant.
-
Étape 5 : Vérifier le routage basé sur les versions
Dans la barre d'adresse de votre navigateur, saisissez http://{adresse IP de la passerelle d'entrée}/productpage et actualisez la page environ 10 fois.
Si le trafic est réparti vers les versions de service v1, v2 et v3 dans un ratio approximatif de 1:4:5, les règles de routage pondéré fonctionnent correctement.