Intelligent Routing

This example demonstrates how to use various traffic management capabilities of an Istio service mesh.

Overview

Deploying a microservice-based application in an Istio service mesh allows one to externally control service monitoring and tracing, request (version) routing, resiliency testing, security and policy enforcement, etc., in a consistent way across the services, for the application as a whole.

In this example, we will use the Bookinfo sample application to show how operators can dynamically configure request routing and fault injection for a running application.

Before you begin

Tasks

  1. Request routing This task will first direct all incoming traffic for the Bookinfo application to the v1 version of the reviews service. It will then send traffic only from a specific test user to version v2, leaving all other users unaffected.

  2. Fault injection We will now use Istio to test the resiliency of the Bookinfo application by injecting an artificial delay in requests between the reviews:v2 and ratings services. Observing the resulting behavior as the test user, we will notice that the v2 version of the reviews service has a bug. Note that all other users are unaware of this testing against the live system.

  3. Traffic Shifting Finally, we will use Istio to gradually migrate traffic for all users from to a v3 version of the reviews service, one which includes the fix for the bug discovered in v2.

Cleanup

When you're finished experimenting with the Bookinfo sample, you can uninstall it by following the Bookinfo cleanup instructions corresponding to your environment.

See also

This task shows you how to configure dynamic request routing to multiple versions of a microservice.

Describes how to deploy a custom ingress gateway using cert-manager manually.

How to use Istio for traffic management without deploying sidecar proxies.

Introduction, motivation and design principles for the Istio v1alpha3 routing API.

Describes how to configure Istio ingress with a network load balancer on AWS.

An introduction to safer, lower-risk deployments and release to production.