TL;DR: How to install and set up Istio in a Kubernetes cluster managed with Rancher and Nginx ingress.
Istio is one of the most used mesh services to interconnect and communicate microservices in clusters. Istio is compound by several open sources of software and services. The core of the system es the Envoy proxy. It acts as a sidecar for each pod created under the realm of Istio.
It has a lot of interesting and necessary features for microservices: traffic management/routing using a rich set of rules, observability and tracing out of the box, ingress controller, …
With Istio is very easy to deploy under the feature flag (you decide how to enable the feature after the code is deployed).
Istio does that simply and elegantly.
A/B testing, focus group testing, planned rollout, …, both product and engineering teams can be happy with this feature.
I want this for my Kubernetes cluster managed by Rancher. It’s very interesting to do benchmarking for ML models, where you need a lot of samples to see if your model is production-ready or not.
Pre-requisites for Istio
I’m going to use Istio v.1.12. It’s no more supported by it is the latest supported by Kubernetes version, 1.19.
There are no so significant differences between this release and the latest. The core functionality here explained is the same and you can probably apply it with the latest version without any change.
To support Istio and dependencies (Grafana, Jaeger, …) I added a 2 vCPU / 4 GB node to the cluster.
Istio deployment will be a nightmare if we have to do applying YAML or even using helm charts.
For this reason, the Istio team has developed its proper CLI,
This tool is ready to download and install for GNU/Linux and Mac OS X (Intel and ARM64).
Open a terminal and type this:
$ curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.12.3 TARGET_ARCH=x86_64 sh -