Desplazamiento de Tráfico

Esta tarea te muestra cómo desplazar tráfico de una versión de un microservicio a otra.

Un caso de uso común es migrar tráfico gradualmente de una versión antigua de un microservicio a una nueva. En Istio, logras este objetivo configurando una secuencia de reglas de enrutamiento que redirigen un porcentaje de tráfico de un destino a otro.

En esta tarea, enviarás 50% del tráfico a reviews:v1 y 50% a reviews:v3. Luego, completarás la migración enviando 100% del tráfico a reviews:v3.

Antes de comenzar

Aplicar enrutamiento basado en peso

  1. Para comenzar, ejecuta este comando para enrutar todo el tráfico a la versión v1:
Zip
$ kubectl apply -f @samples/bookinfo/networking/virtual-service-all-v1.yaml@
  1. Abre el sitio Bookinfo en tu navegador. La URL es http://$GATEWAY_URL/productpage, donde $GATEWAY_URL es la dirección IP externa del ingress, como se explica en el documento Bookinfo.

    Nota que la parte de reseñas de la página se muestra sin estrellas, independientemente de cuántas veces la refresques. Esto es porque configuraste Istio para enrutar todo el tráfico para el servicio de reseñas a la versión reviews:v1 y esta versión del servicio no accede al servicio de valoraciones.

  2. Transfiere el 50% del tráfico de reviews:v1 a reviews:v3 con el siguiente comando:

Zip
$ kubectl apply -f @samples/bookinfo/networking/virtual-service-reviews-50-v3.yaml@
  1. Espera unos segundos para que las nuevas reglas se propaguen y luego confirma que la regla se reemplazó:
$ kubectl get virtualservice reviews -o yaml
apiVersion: networking.istio.io/v1
kind: VirtualService
...
spec:
  hosts:
  - reviews
  http:
  - route:
    - destination:
        host: reviews
        subset: v1
      weight: 50
    - destination:
        host: reviews
        subset: v3
      weight: 50
  1. Refresca la /productpage en tu navegador y ahora verás rojas las estrellas de valoración aproximadamente el 50% del tiempo. Esto es porque la versión v3 de reviews accede al servicio de valoraciones, pero la versión v1 no.

  2. Suponiendo que decides que el microservicio reviews:v3 es estable, puedes enrutar el 100% del tráfico a reviews:v3 aplicando este servicio virtual:

Zip
$ kubectl apply -f @samples/bookinfo/networking/virtual-service-reviews-v3.yaml@
  1. Refresca la /productpage varias veces. Ahora siempre verás reseñas de libros con rojas las estrellas de valoración para cada reseña.

Entendiendo lo que sucedió

En esta tarea migras tráfico de una versión antigua a una nueva versión del servicio reviews usando la característica de enrutamiento ponderado de Istio. Ten en cuenta que esto es muy diferente a hacer la migración de versiones usando las características de escalado de instancias de orquestación de contenedores, que usan el escalado de instancias para gestionar el tráfico.

Con Istio, puedes permitir que las dos versiones del servicio reviews escalen independientemente, sin afectar la distribución del tráfico entre ellas.

Para más información sobre el enrutamiento de versiones con autoscaling, consulta el artículo del blog Desplazamientos de canario usando Istio.

Limpieza

  1. Elimina las reglas de enrutamiento de la aplicación:
Zip
$ kubectl delete -f @samples/bookinfo/networking/virtual-service-all-v1.yaml@
  1. Si no planeas explorar ninguna tarea posterior, consulta las instrucciones de limpieza del Bookinfo para apagar la aplicación.
¿Fue útil esta información?
¿Tienes alguna sugerencia para mejorar?

¡Gracias por tus comentarios!