Istio: Canary Deployment for Python Flask based WebServices

Part 2: Istio | Canary | Python Flask | Kubernetes | DevOps

Arun Kumar Singh
6 min readAug 31, 2021
Photo by Scott Webb on Unsplash

In the first article of this series, we deployed a dummy python flask-based application in the Kubernetes cluster to demonstrate Istio traffic control capabilities. We talked about Istio concepts briefly and deployed few addons for monitoring and visualization of mesh.

Istio’s ability to enforce policy in communication networks enables useful traffic control, observability features, rate limiting, circuit breaking, and programmable rollouts such as canary deployments. In this article I am covering Canary deployment with Istio.

Quick Recap

Before moving on, let me quickly brief you about the application. I have created an application using the Python Flask web framework. The home page of the application is simple and has a context root of “/home”. The Service Data page loads data from the backend dummy Webservice and has the context root of “/list”. The codebase for this application is available in Github.

We deployed the Istio Gateway and Virtual Service, Kubernetes objects to expose these services out of our mesh.

Python Flask Based Demo App

It's time to verify our existing Istio components and Application state.

Application Deployment and related components

Using proxy-status you can get an overview of your mesh

istioctl proxy-status
proxy status

State of Istio specific components —

$ istioctl proxy-config route istio-ingressgateway-5dc645f586-84bvf -n istio-system



Arun Kumar Singh

In quest of understanding How Systems Work !