Istio on KinD

Prerequisite

Prepare your Kubernetes in Docker Cluster

Get Helm

Before we go install Istio, we need install some added tool like Helm. Helm is one of tool for package management tool similar like aptitude on Debian based, yum on Centos fam’s, npm or pip3 (whatever you say). Its possible for create, pull, search and many more and considering Istio installation via Helm just supported Helm version 2

Below is example how to get and install Helm

$ wget https://get.helm.sh/helm-v2.16.5-linux-amd64.tar.gz

$ tar -zxvf helm-v2.16.5-linux-amd64.tar.gz

$ mv linux-amd64/helm /usr/local/bin/helm

Get and Install

When this post was made, Istio had latest release version on Istio 1.5.0 which so much awesome change. But for this post i just using Istio version under 1.5.0 for learning concept reason. First get your binary Istio release.

$ curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.4.7 sh -

$ mv bin/istioctl /usr/local/bin/istioctl 

On Istio binary release also had CLI tool istioctl for utility service operator to debugging and diagnose Istio mesh via CLI. Next we should interact with Kubernetes Cluster via KinD for this installation Istio. First make a namespaces for Istio system

$ kubectl create namespace istio-system

Istio using Custom Resource Definitions (CRDs) for interact with Kubernetes API Server as a extensions Kubernetes API objects.

helm template install/kubernetes/helm/istio-init --name istio-init --namespace istio-system | kubectl apply -f -

After waiting all Istio CRDs, we can do next step for installing Istio core components which called a configuration profile . But for this post, i just used demo configuration profile for enable all feature and addons of Istio such as Kiali , Grafana , and Zipkin .

helm template install/kubernetes/helm/istio --name istio --namespace istio-system \
    --values install/kubernetes/helm/istio/values-istio-demo.yaml | kubectl apply -f -

Wait the process installation of Istio, you can do watching with these command 🤣🤣

$ kubectl get po -n istio-system -w
  
# OR
 
$ watch kubectl get po -n istio-system

Inject

Before we can using Istio, last move is injecting some namespaces in Kubernetes for enabling auto sidecars istio-proxy for mark as your application already enter Service Mesh World!

$ kubectl label namespace default istio-injection=enabled
$ kubectl get namespace -L istio-injection
NAME           STATUS    AGE       ISTIO-INJECTION
default        Active    1h        enabled
istio-system   Active    1h
kube-public    Active    1h
kube-system    Active    1h

Viola, we have Istio installed on our Kubernetes cluster with (KinD) and let’s play with some great example

Thanks.