Istio on KinD
Prerequisite
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.