Tous les produits
Search
Centre de documentation

Alibaba Cloud Service Mesh:Version-based traffic routing with Istio

Dernière mise à jour :Aug 11, 2026

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.

  1. Connectez-vous à la console ASM. Dans le volet de navigation de gauche, choisissez Service Mesh > Mesh Management.

  2. Sur la page Mesh Management, cliquez sur le nom de l'instance ASM. Dans le volet de navigation de gauche, choisissez ASM Gateways > Gateway. Sur la page qui s'affiche, cliquez sur Create.

  3. 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.

    YAML de la Gateway

    apiVersion: networking.istio.io/v1beta1
    kind: Gateway
    metadata:
      name: bookinfo-gateway
      namespace: default
    spec:
      selector:
        istio: ingressgateway
      servers:
        - port:
            number: 80
            name: http
            protocol: HTTP
          hosts:
            - '*'
    



















É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.

  1. Connectez-vous à la console ASM. Dans le volet de navigation de gauche, choisissez Basic Information > Namespaces.

  2. Sur la page Name, cliquez sur le nom de l'instance ASM. Dans le volet de navigation de gauche, choisissez Gateway Pod Selector > Key. Sur la page qui s'affiche, cliquez sur Value.

  3. 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

    1. Activez Apply To specific Gateways, puis cliquez sur Select the name of the Gateway.

    2. Dans la boîte de dialogue Select the name of the Gateway, sélectionnez bookinfo-gateway, cliquez sur l'icône Ajouter, puis cliquez sur OK.

    3. 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 Ajouter, 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.

    YAML du VirtualService

    apiVersion: networking.istio.io/v1beta1
    kind: VirtualService
    metadata:
      name: vs-demo
      namespace: default
    spec:
      hosts:
        - '*'
      http:
        - name: gw-to-productage
          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
      gateways:
        - bookinfo-gateway
    

Étape 3 : Accéder à l'application Bookinfo

  1. Obtenez l'adresse de service de la passerelle d'entrée.

    Console ASM

    1. Connectez-vous à la console ASM. Dans le volet de navigation de gauche, choisissez Service Mesh > Mesh Management.

    2. Sur la page Basic Information, cliquez sur le nom de l'instance ASM. Dans le volet de navigation de gauche, choisissez Namespaces > Name.

    3. Sur la page Ingress Gateway, recherchez l'Apply To specific Gateways.

    Console ACK

    1. Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Select the name of the Gateway.

    2. 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 OK > Apply To All Sidecars.

    3. 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.

  2. 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

  1. Créez un DestinationRule pour définir des sous-ensembles basés sur les versions (v1, v2 et v3) pour le service reviews.

    1. Connectez-vous à la console ASM. Dans le volet de navigation de gauche, choisissez Select the gateway domain name which VirtualService belongs to > OK.

    2. Sur la page HTTP Route, cliquez sur le nom de l'instance ASM. Dans le volet de navigation de gauche, choisissez Name > HTTP Route. Sur la page qui s'affiche, cliquez sur Add Route.

    3. 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.

      YAML du DestinationRule

      apiVersion: networking.istio.io/v1beta1
      kind: DestinationRule
      metadata:
        name: reviews
        namespace: default
        labels: {}
      spec:
        host: reviews
        subsets:
          - name: v1
            labels:
              version: v1
          - name: v2
            labels:
              version: v2
          - name: v3
            labels:
              version: v3
      
  2. 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.

    1. Connectez-vous à la console ASM. Dans le volet de navigation de gauche, choisissez Method > Exact.

    2. Sur la page Content, cliquez sur le nom de l'instance ASM. Dans le volet de navigation de gauche, choisissez Matching request URI > Method. Sur la page qui s'affiche, cliquez sur Prefix.

    3. 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 Ajouter, 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.

      YAML du VirtualService

      apiVersion: networking.istio.io/v1beta1
      kind: VirtualService
      metadata:
        name: reviews
        namespace: default
      spec:
        hosts:
          - reviews.default.svc.cluster.local
        http:
          - name: route
            route:
              - destination:
                  host: reviews
                  subset: v1
                weight: 10
              - destination:
                  host: reviews
                  subset: v2
                weight: 40
              - destination:
                  host: reviews
                  subset: v3
                weight: 50

É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.