(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【Istio/Kubernetes】Kialiでサービス メッシュの稼働状況を可視化する

スポンサーリンク

はじめに

サービスメッシュを担うOSSであるIstioですが、アドオンとしてKialiをクラスターにインストールできます。
本記事では実際にサンプルプログラムをKialiで可視化した流れについて記載しました。

環境情報
  • IKS v1.18.13
  • Debian GNU/Linux 9
  • istio-1.10.3

事前準備

Istio関連をKubernetesクラスターにインストールし

# curl -L https://istio.io/downloadIstio | sh -
# ~/istio-1.10.3# ./bin/istioctl install --set profile=demo -y
✔ Istio core installed
✔ Istiod installed
✔ Egress gateways installed
✔ Ingress gateways installed
✔ Installation complete            

名前空間defaultには自動的にIstio仕様にするようにラベルを変更します。

# kubectl label namespace default istio-injection=enabled
namespace/default labeled

尚、手動でIstioを介したい場合は以下記事の手順でYAMLを変換することも可能です。

あとは以下でPodとServiceを展開すると

~/istio-1.10.3 # kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
~/istio-1.10.3 # kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml

virtualserviceにて以下のように定義されているので

 route:
      - destination:
          host: productpage ...

確かにアクセスができます。

$ curl http://XX:32058/productpage
<!DOCTYPE html>
<html>
  <head>
    <title>Simple Bookstore App</title>...

Kialiの導入

Istioのインストーラの中にアドオンがあるのでこれを展開すると

~/istio-1.10.3# kubectl apply -f samples/addons

Kialiのサービスが起動します。

$ kubectl get service -n istio-system
NAME                   TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
...
kiali                  ClusterIP      172.21.112.14    <none>        20001/TCP,9090/TCP

今回はポートフォワードでローカルからアクセスできるようにしてブラウザを開くと

$ kubectl -n istio-system port-forward service/kiali 20001:20001

メニュー欄で「Graph」を選ぶと以下のようにサービス群がGUIに表示されます。

f:id:mtiit:20210729172642p:plain
Graphから可視化できる

試しに一部のPodをエラーにすると

# kubectl get pod
NAME                              READY   STATUS             RESTARTS   AGE
details-v1-7d557df78-xk2z7        1/2     InvalidImageName   0          xx

該当するサービス箇所が赤線で囲まれて影響を把握できます。

f:id:mtiit:20210729173206p:plain
エラー箇所も視覚的に把握可能

終わりに

Kialiはサービスメッシュトポロジーを可視化することで、今どのサービスにアクセスが流れているのかであったりサーキットブレーカーが起きていないかなどが見える化できます。

アプリケーションの健全性をサクッと確認する場合には便利なので、Istio導入の動機の一つとしてオススメです。