Todos los productos
Search
Centro de documentos

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

Última actualización: Sep 05, 2026

El enrutamiento de tráfico basado en versiones permite dividir el tráfico entre distintas versiones de un servicio según los pesos especificados. Esta técnica es ideal para despliegues canary y pruebas A/B. Este tema demuestra cómo utilizar recursos de Istio para este propósito.

Requisitos previos

Paso 1: Crear un Gateway

Un Gateway define un load balancer en el borde de la malla de servicios para conexiones HTTP/TCP entrantes o salientes. Este paso muestra cómo crear un Gateway y vincularlo al gateway de entrada.

  1. Inicie sesión en la consola de ASM. En el panel de navegación izquierdo, seleccione Service Mesh > Mesh Management.

  2. En la página Mesh Management, haga clic en el nombre de la instancia de ASM. En el panel de navegación izquierdo, seleccione ASM Gateways > Gateway. En la página que aparece, haga clic en Create.

  3. En la página Create, configure los siguientes parámetros y haga clic en Create.

    Para obtener más información sobre los parámetros, consulte Gateway.

    Parámetro

    Descripción

    Basic Information

    Establezca Namespaces en default y Name en bookinfo-gateway.

    Gateway Pod Selector

    Establezca Key en istio y Value en ingressgateway.

    Exposed Service

    Establezca Name en http, Port en 80, Protocol en HTTP y Hosts en *.

    La configuración YAML del Gateway es la siguiente.

    El siguiente archivo YAML muestra el Gateway correspondiente a las configuraciones anteriores.

    Gateway YAML

    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:
            - '*'
    

Paso 2: Crear un VirtualService

El VirtualService enruta las solicitudes a la aplicación Bookinfo a través de las siguientes rutas: /productpage, /static, /login, /logout y /api/v1/products.

  1. Inicie sesión en la consola de ASM. En el panel de navegación izquierdo, seleccione Service Mesh > Mesh Management.

  2. En la página Mesh Management, haga clic en el nombre de la instancia de ASM. En el panel de navegación izquierdo, seleccione Traffic Management Center > VirtualService. En la página que aparece, haga clic en Create.

  3. En la página Create, configure los siguientes parámetros y haga clic en Create.

    Para obtener más información sobre los parámetros, consulte Virtual Service.

    Parámetro

    Descripción

    Basic Information

    Namespaces

    En este ejemplo, seleccione default.

    Name

    Introduzca un nombre personalizado para el VirtualService.

    Gateways

    1. Habilite Apply To specific Gateways y luego haga clic en Select the name of the Gateway.

    2. En el cuadro de diálogo Select the name of the Gateway, seleccione bookinfo-gateway, haga clic en el icono 添加 y luego haga clic en OK.

    3. Deshabilite Apply To All Sidecars.

    Hosts

    Haga clic en Select the gateway domain name which VirtualService belongs to. En el cuadro de diálogo Select the gateway domain name which VirtualService belongs to, seleccione *, haga clic en el icono 添加 y luego haga clic en OK.

    HTTP Route

    Name

    Haga clic en HTTP Route, haga clic en Add Route y luego introduzca un Name personalizado.

    Request matching rules

    Haga clic repetidamente en Add Request Matching Rule para configurar las siguientes cinco reglas:

    • Habilite Matching request URI, establezca Method en Exact y establezca Content en /productpage.

    • Habilite Matching request URI, establezca Method en Prefix y establezca Content en /static.

    • Habilite Matching request URI, establezca Method en Exact y establezca Content en /login.

    • Habilite Matching request URI, establezca Method en Exact y establezca Content en /logout.

    • Habilite Matching request URI, establezca Method en Prefix y establezca Content en /api/v1/products.

    Route destination

    Haga clic en Add Route Destination, establezca Host en productpage y establezca Port en 9080.

    El siguiente archivo YAML muestra el VirtualService correspondiente a las configuraciones anteriores.

    VirtualService YAML

    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
    

Paso 3: Acceder a la aplicación Bookinfo

  1. Obtenga la dirección de servicio del gateway de entrada.

    Consola de ASM

    1. Inicie sesión en la consola de ASM. En el panel de navegación izquierdo, seleccione Service Mesh > Mesh Management.

    2. En la página Mesh Management, haga clic en el nombre de la instancia de ASM. En el panel de navegación izquierdo, seleccione ASM Gateways > Ingress Gateway.

    3. En la página Ingress Gateway, busque la Service address.

    Consola de ACK

    1. Inicie sesión en la consola de ACK. En el panel de navegación izquierdo, haga clic en Clusters.

    2. En la página Clusters, haga clic en el nombre de su clúster. En el panel de navegación izquierdo, haga clic en Network > Services.

    3. En la parte superior de la página Hosts, seleccione Namespaces en la lista desplegable Namespace. En la columna External IP, busque la dirección IP asociada al puerto 80 para el servicio istio-ingressgateway.

  2. En la barra de direcciones de su navegador, introduzca http://{dirección IP del gateway de entrada}/productpage y actualice la página varias veces para observar el enrutamiento round-robin predeterminado.

    Cada vez que actualiza la página, accede a una de las versiones v1, v2 o v3 del servicio reviews. Notará que el tráfico hacia las tres versiones del servicio reviews se distribuye en una proporción aproximada de 1:1:1.

    La página reviews-v1 solo muestra reseñas de texto sin calificaciones de estrellas, la página reviews-v2 muestra calificaciones de estrellas negras y la página reviews-v3 muestra calificaciones de estrellas rojas.

Paso 4: Crear reglas de enrutamiento basadas en versiones

  1. Cree un DestinationRule para definir subconjuntos basados en versiones (v1, v2 y v3) para el servicio reviews.

    1. Inicie sesión en la consola de ASM. En el panel de navegación izquierdo, seleccione Service Mesh > Mesh Management.

    2. En la página Mesh Management, haga clic en el nombre de la instancia de ASM. En el panel de navegación izquierdo, seleccione Traffic Management Center > DestinationRule. En la página que aparece, haga clic en Create.

    3. En la página Create, configure los siguientes parámetros y haga clic en Create.

      Para obtener más información sobre los parámetros, consulte Destination Rule.

      Parámetro

      Descripción

      Basic Information

      Establezca Namespaces en default, introduzca un Name personalizado para el DestinationRule y establezca Host en reviews.

      Service Version (Subset)

      Haga clic en Service Version (Subset). Haga clic repetidamente en Add Service Version (Subset) para configurar los siguientes tres subconjuntos.

      • Subconjunto 1: Establezca Name en v1. Haga clic en Add Label, establezca Key en version y establezca Value en v1.

      • Subconjunto 2: Establezca Name en v2. Haga clic en Add Label, establezca Key en version y establezca Value en v2.

      • Subconjunto 3: Establezca Name en v3. Haga clic en Add Label, establezca Key en version y establezca Value en v3.

        El siguiente archivo YAML muestra el DestinationRule correspondiente a las configuraciones anteriores.

      DestinationRule YAML

      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. Cree un VirtualService para enrutar el tráfico al servicio reviews según los siguientes pesos: 10 % a v1, 40 % a v2 y 50 % a v3.

    1. Inicie sesión en la consola de ASM. En el panel de navegación izquierdo, seleccione Service Mesh > Mesh Management.

    2. En la página Mesh Management, haga clic en el nombre de la instancia de ASM. En el panel de navegación izquierdo, seleccione Traffic Management Center > VirtualService. En la página que aparece, haga clic en Create.

    3. En la página Create, configure los siguientes parámetros y haga clic en Create.

      Parámetro

      Descripción

      Basic Information

      Namespaces

      En este ejemplo, seleccione default.

      Name

      Introduzca un nombre personalizado para el VirtualService.

      Gateways

      Habilite Apply To All Sidecars.

      Hosts

      Haga clic en Add Host. En el cuadro de diálogo Add Host, establezca Namespaces en default. En la sección Add Host, seleccione el servicio reviews, haga clic en el icono 添加 y luego haga clic en OK.

      HTTP Route

      Name

      Haga clic en HTTP Route, haga clic en Add Route y luego introduzca un Name personalizado.

      Route destination

      Haga clic repetidamente en Add Route Destination para configurar los siguientes tres destinos de ruta.

      • Establezca Host en reviews, la versión en v1 y el peso en 10.

      • Establezca Host en reviews, Subset en v2 y Weight en 40.

      • Establezca Host en reviews, Subset en v3 y Weight en 50.

        El siguiente archivo YAML muestra el VirtualService correspondiente a las configuraciones anteriores.

      El YAML del VirtualService es el siguiente.

      VirtualService YAML

      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

Paso 5: Verificar el enrutamiento basado en versiones

En la barra de direcciones de su navegador, introduzca http://{dirección IP del gateway de entrada}/productpage y actualice la página unas 10 veces.

Si el tráfico se distribuye a las versiones de servicio v1, v2 y v3 en una proporción aproximada de 1:4:5, las reglas de enrutamiento ponderado funcionan correctamente.