The Istio Service Mesh

Istio addresses the challenges developers and operators face with a distributed or microservices architecture. Whether you're building from scratch or migrating existing applications to cloud native, Istio can help.

Install istioctl

Download and Install latest istioctl in your local machine:

curl -L https://istio.io/downloadIstio | sh -
ISTIO_DIR=$(find . -name istio*)
export PATH=$ISTIO_DIR/bin:$PATH
cd $ISTIO_DIR

Get started

Enable Istio Service Mesh on default Namespace

Label the default namespace for Istio automatic sidecar injection:

kubectl label namespace default istio.io/rev=1-10-1

NOTE: The revision value corresponds to the Istio version that was installed. The example above shows Istio v1.10.1 was installed. For example if your use 1.8.6 then the istio.io/rev will be istio.io/rev=1-8-6

Deploy BookInfo Application

Now deploy Deploy Bookinfo Application

Once successfully deployed, expose the application to outside world

After you have exposed the application to outside world, try accessing it using the $GATEWAY_IP.

Run the following command to get Istio Ingress IP:

export GATEWAY_IP=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.status.loadBalancer.ingress[0].ip}')

Accessing the application,

curl -I $GATEWAY_IP/productpage

The curl should return a response as shown below:

HTTP/1.1 200 OK
content-type: text/html; charset=utf-8
content-length: 5179
server: istio-envoy
date: Thu, 10 Jun 2021 06:51:29 GMT
x-envoy-upstream-service-time: 107

(OR)

Opening the following url in the web browser, to see the sample book application landing page:

"http://$GATEWAY_IP/productpage"

Documentation

Istio Documentation

Further reading