Istio Service Mesh

Install Istio

Let’s get Istio installed in your Kubernetes cluster and a sample application deployed that we will use for testing. This workshop has been developed for Istio v1.19. If you run into any problems while following the guide, please check the Istio docs for the most up-to-date installation information.

Before installing Istio you will need to have a Kubernetes cluster running a supported version of Kubernetes. For Istio v.19 this is Kubernetes versions 1.25, 1.26, 1.27 or 1.28. See here for a list of supported Kubernetes versions if you are installing a different version of Istio.

Download and Extract Istio

  1. Use the following command to download and extract the latest Istio release for your operating system (Linux of macOS). For other releases and operating systems, download the your installation file from the Istio releases page
curl -L https://istio.io/downloadIstio | sh -
  1. Change to the directory where you extracted Istio. For example, if you downloaded the latest using the command above the directory will be istio-1.19.0 (or similar depending on which version you downloaded)
cd istio-1.19.0
  1. Add istioctl to your PATH (Linux or macOS)
export PATH=$PWD/bin:$PATH

Install Istio in your Cluster

  1. Use istioctl to install Istio in your cluster. The example below uses the demo configuration profile which is ideal for the purposes of this guide. See the available configuration profiles for more info.
istioctl install --set profile=demo -y
  1. Add the following label to your Kubernetes namespace. This instructs Istio to automatically inject Envoy sidecar proxies with your pods in this namespace.
kubectl label namespace default istio-injection=enabled

You now have Istio installed and running in your cluster. Let’s take a look at what was installed. Run the following command:

kubectl get pods -n istio-system

You should see 3 pods: the istiod control plane, an ingress gateway and an egress gateway. Let’s check the auto-injection label:

kubectl get namespaces --show-labels

You should see the default namespace with the istio-injection=enabled label. This label tells Istio to inject an Envoy sidecar proxy with all workloads in this namespace.

Now let’s deploy a sample application that we will use for testing our telemetry configuration.

next: Deploy Sample Application