Kiali ile Microservice’lerin trafiğini görselleştirin

Kiali ,Openshift Cluster yada Kubernetes Cluster’ınızın üzerinde çalışan Istio(Service Mesh) katmanı ile konuşarak, size microservice’ler arasındaki ilişkiyi(trafiğin nasıl aktığını,hangi microservice’in kiminle konuştuğunu) görsel olarak sunan bir open-source projedir.Kiali kurulumu için ortamınızda Istio olmak zorundadır.Istio olmadan çalışmaz.Genel yapısı aşağıdaki gibidir.

Kiali Architecture

Temel olarak front-end ve back-end servislerinden oluşuyor.

Back-end servisi ,Go dilinde yazılan ve container üzerinde çalışan bir uygulamadır.Direk olarak Istio katmanı ile konuşarak aldığı datayı işler ve front-end servisine yollar.Herhangi bir storage’a ihtiyaç duymaz.İhtiyaç duyduğu tüm bilgiyi environment variable halinde local’inde saklar.Kodunu linkteki github adresinden bulabilirsiniz.

Front-end servisi ise Type-script ile yazılan ve React ile oluşturulan bir web uygulaması olarak karşımıza çıkıyor.Kodunu linkteki github adresinden bulabilirsiniz.

Kiali kurulumunu ben minikube üzerinde yapacağım.O yüzden ilk önce ingress’imi aktif etmem gerekiyor.

emre@emreozkan:~$ minikube addons enable ingress
ingress was successfully enabled

Kurulumu gerçekleştirmeden önce Kubernetes’inizin üzerinde bir Istio yapılandırılmış olması gerektiğini belirtmiştik.Istio hakkında bilgi almak isterseniz alttaki makalelerimi inceleyebilirsiniz.

Alttaki komut setini çalıştırarak kurulumu gerçekleştiriyoruz.

JAEGER_URL="http://jaeger-query-istio-system.127.0.0.1.nip.io"
GRAFANA_URL="http://grafana-istio-system.127.0.0.1.nip.io"
VERSION_LABEL="v0.10.0"

curl https://raw.githubusercontent.com/kiali/kiali/${VERSION_LABEL}/deploy/kubernetes/kiali-configmap.yaml | \
VERSION_LABEL=${VERSION_LABEL} \
JAEGER_URL=${JAEGER_URL} \
ISTIO_NAMESPACE=istio-system \
GRAFANA_URL=${GRAFANA_URL} envsubst | kubectl create -n istio-system -f -

curl https://raw.githubusercontent.com/kiali/kiali/${VERSION_LABEL}/deploy/kubernetes/kiali-secrets.yaml | \
VERSION_LABEL=${VERSION_LABEL} envsubst | kubectl create -n istio-system -f -

curl https://raw.githubusercontent.com/kiali/kiali/${VERSION_LABEL}/deploy/kubernetes/kiali.yaml | \
VERSION_LABEL=${VERSION_LABEL} \
IMAGE_NAME=kiali/kiali \
IMAGE_VERSION=${VERSION_LABEL} \
NAMESPACE=istio-system \
VERBOSE_MODE=4 \
IMAGE_PULL_POLICY_TOKEN="imagePullPolicy: Always" envsubst | kubectl create -n istio-system -f -

Benim Istio namespace’imin içine kiali adında bir deployment pod’u yaratıldı ve çalışır durumda.

Kurulum gerçekleştikten sonra minikube’un ipsini alıyorum.

minikube ip

Alttaki kullanıcı adı şifre bilgilerle Kiali arayüzüne bağlanabilirsiniz.

http://192.168.99.100
Kullanıcı adı: admin
Şifre: admin

Benim namespace’lerimin olduğu bir pencere karşılıyor.Ben default namespace içine örnek bir uygulama deploy ettim.

Altta arayüzü ve trafiğin akışını görebileceğiniz 3 adet ufak video hazırladım.Sırasıyla izleyebilirsiniz.

Bütün trafiğin v1 ve v3 ‘e dağılmış olduğu durumda
Bütün trafiğin v1'e gittiği durumda

--

--