Performing zero-downtime updates
As mentioned in Chapter 16, Deploying Our Microservices to Kubernetes, being able to deploy an update without downtime becomes crucial with a growing number of autonomous microservices that are updated independently of one another.
In this section, we will learn about Istio’s traffic management and routing capabilities and how they can be used to perform deployments of new versions of microservices without requiring any downtime. In Chapter 15, Introduction to Kubernetes, we learned that Kubernetes can be used to perform a rolling upgrade without requiring any downtime. Using the Kubernetes rolling upgrade mechanism automates the entire process, but, unfortunately, it provides no option to test the new version before all users are routed to it.
Using Istio, we can deploy the new version but initially route all users to the existing version (called the old version in this chapter). After that, we can use Istio’s fine-grained routing...