Istio's service mesh is able to manage traffic distribution without dependence on deployment scaling, which enables a simpler, yet significantly and functional way to realize canary release and rollout. It allows users to introduce a new version of a service by testing it with a small percentage of user traffic in the first place. And then if all goes well, increase, possibly gradually in increments. The percentage will simultaneously phase out the old version.
KubeSphere provides three kinds of grayscale strategies based on Istio, including blue-green deployment, canary release and traffic mirroring. Without modifying the source code, KubeSphere can realize grayscale, traffic governance, tracing, traffic monitoring and other service mesh features.
The Bookinfo application is broken into four separate microservices (There are 3 versions of the reviews microservice):
The end-to-end architecture of the application is shown below, see Bookinfo Application for more details.
In this tutorial, we're going to deploy a Bookinfo sample application composed of four separate microservices used to demonstrate the canary release, tracing and traffic monitoring using Istio on KubeSphere.
1.1. Sign in with
project-regular account and enter into the
demo-project, navigate to Application, click on the Deploy New Application then choose Deploy sample app Bookinfo.
1.2. Click Create in the pop-up window, then Bookinfo application has been deployed successfully, application components are listed in this following page, as well as the routes and hostname.
1.3. Next you can access the Bookinfo homepage as following screenshot via Click to visit button. Click on the Normal user to enter into the summary page.
1.4. Notice that at this point it only shows - Reviewer1 and - Reviewer2 without any stars at the Book Reviews section, this is the initial status of this section.
2.1. Back to KubeSphere console, choose Grayscale Release and click on the Create Canary Release Job. **Then select **Canary Release and click Create Job
2.2. Fill in the basic information, e.g.
canary-release, click Next and select reviews as the canary service, then click Next.
v2 as Grayscale Release Version Number and fill in the new image blank with
kubesphere/examples-bookinfo-reviews-v2:1.13.0 (i.e. Modify v1 to v2), then click Next.
2.4. The canary release supports Forward by traffic ratio and Forward by request content, in this tutorial we choose adjust the traffic ratio to manage traffic distribution between v1 and v2. Drag the slider to adjust v2 takes up 30% traffic, and v2 takes up 70%.
2.5. Click Create when you've completed configuration, then you're able to see the
canary-release has been created successfully.
When you visit the Bookinfo website again and refresh your browser repeatedly, you'll be able to see that the Bookinfo reviews section switch between v1 and v2 at a random rate of about 30% and 70% respectively.
4.1. Connect to your SSH Client, use the following command to introduce real traffic to simulate the access to a bookinfo application every 0.5 seconds.
$ curl http://productpage.demo-project.192.168.0.88.nip.io:32565/productpage?u=normal % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0< 74 5183 74 3842 0 0 73957 0 --:--:-- --:--:-- --:--:-- 73884<!DOCTYPE html> ···
4.2. From the traffic management diagram, you can easily see the service invocation and dependencies, health, performance between different microservices.
4.3. Click on the reviews card. The traffic monitoring graph will come out including real-time data of Success rate, Traffic and Duration.
KubeSphere provides distributed tracing feature based on Jaeger, which is used for monitoring and troubleshooting microservices-based distributed application.
5.1. Choose Tracing tab. You can clearly see all phases and internal calls of a request, as well as the period in each phase.
5.2. Click any item, you can even drill down to see the request details and this request is being processed by which machine (or container).
6.1. As mentioned previously, when the canary version (v2) is released, it could be used to send 70% of traffic to the canary version. Publishers can test the new version online and collect user feedbacks.
Switch to Grayscale Release tab, click into
6.2. Click ··· and select Take Over at
reviews-v2. Then 100% of traffic will be sent to the new version (v2).
Note: If anything goes wrong along the way, we can abort and rollback to the previous version (v1) in time.
6.3. Open the bookinfo page again and refresh the browsers several times. We can find that it only shows the v2 (ratings with black stars) in reviews module.
When the new version v2 has been released online and takes over all the traffic. Also, the testing results and online users feedback are confirmed to be correct. You can take down the old version and remove the resources of v1.
Click on the Job Offline button to take down the old version.
Notice: If take down a specific version of the component, the associated workloads and istio related configuration resources will be removed simultaneously, it turns out that v1 is being replaced by v2.