Kekeの日記

エンジニア、読書なんでも

KialiでIstio Service Meshをよりリッチにする

http://www.kiali.io/images/logo-header-light.svg

本記事

Adventカレンダーなどではなくて、軽くメモをとった感じなので、リッチな情報がほしかったら公式ドキュメントなどをお読みください。

この記事では、Istioのサービスメッシュに併せてさらなるフィードバックを与えてくれるKialiというものを試していこうと思います。

Istioは何もかもできちゃいますが、Kialiを使うことでさらにリッチに情報を集めることができるので今回は検証して行きたいと思っています。

公式ページは以下の通りです。

前提

本記事ではIstioがすでにKubernetesクラスタに入っているものを前提します。

Kiali

Kialiとは

Kialiとは、Istioのサービスメッシュが構築されているマイクロサービスで何が起こっているかを可視化するソフトです。

機能

以下のような機能があります。

  • サービスグラフの可視化
  • 変数を定義
  • 分散トレーシング
  • ヘルス表示・計算
  • メトリクス収集、グラフ
  • サービスディスカバリ

アーキテクチャ

IstioとJaegerをラッピングしたような仕組みになっています。

http://www.kiali.io/images/documentation/architecture/architecture.png

使ってみる

公式ページに従ってインストールをしてください。

Secretを作成する

これらのSecretはUIで認可をするために使われます。

KIALI_USERNAME=$(read -p 'Kiali Username: ' uval && echo -n $uval | base64)
KIALI_PASSPHRASE=$(read -sp 'Kiali Passphrase: ' pval && echo -n $pval | base64)

そしてSecretを作成します。

ログインする

以下のコマンドでポート転送をします。

kubectl -n istio-system port-forward (kubectl -n istio-system get pod -l app=kiali -o jsonpath='{.items[0].metadata.name}') 20001:20001 &

そしてアクセスすると以下のような画面になります。

f:id:bobchan1915:20181006044239p:plain

ログイン名、パスワードは共にadminで入られます。

サービスグラフを確認

どのようにマイクロサービスが通信しているかが見られます。

しかし、何かしらアプリケーションのバグでグラフが書かれていません。

f:id:bobchan1915:20181006044913p:plain

再度、LinkerdのProxyをつけてデプロイされると以下のようになります。

f:id:bobchan1915:20181006055003p:plain

なので正常そうなのですが、、、原因がわからないため調査します。

公式ページだと以下のようにできています。

ヘルス

f:id:bobchan1915:20181006044902p:plain

サイドパネルによる詳細

f:id:bobchan1915:20181006044846p:plain

トラフィックアニメーション

f:id:bobchan1915:20181006044814p:plain

アプリケーション、ワークロードとサービスを見る

以下のようにWorkloadsでアプリケーションを確認することができます。

f:id:bobchan1915:20181006045238p:plain

またServicesからは詳しく見ることができます。

f:id:bobchan1915:20181006045553p:plain

メトリクス

ServicesInbound Metricsから見られます。しかし、単位も書いてなくグラフはわかりづらいです。

f:id:bobchan1915:20181006045738p:plain

まとめ

サービスグラフがうまくいってなかったのでしばらくはアプリケーション側の問題を探します。

しかし、メトリクスや分散トレーシングはすでにIstioや他の機能で実現できるので、メリットがあるとすればリッチなサービスグラフかなと感じました。