メッシュの可視化

このタスクでは、Istioメッシュのさまざまな側面を可視化する方法を示します。

このタスクでは、Kialiアドオンをインストールし、Webベースのグラフィカルユーザーインターフェースを使用して、メッシュのサービスグラフとIstio設定オブジェクトを表示します。

このタスクでは、Bookinfoサンプルアプリケーションを例として使用します。このタスクでは、Bookinfoアプリケーションがbookinfo名前空間にインストールされていることを前提としています。

始める前に

Kialiのインストールドキュメントに従って、Kialiをクラスタにデプロイしてください。

グラフの生成

  1. クラスタでサービスが実行されていることを確認するには、次のコマンドを実行します。

    $ kubectl -n istio-system get svc kiali
    
  2. BookinfoのURLを確認するには、BookinfoイングレスのGATEWAY_URLを確認するための手順に従ってください。

  3. メッシュにトラフィックを送信するには、3つのオプションがあります。

    • Webブラウザでhttp://$GATEWAY_URL/productpageにアクセスします。

    • 以下のコマンドを複数回実行します。

      $ curl http://$GATEWAY_URL/productpage
      
    • システムにwatchコマンドがインストールされている場合は、以下のようにして継続的にリクエストを送信します。

      $ watch -n 1 curl -o /dev/null -s -w %{http_code} $GATEWAY_URL/productpage
      
  4. Kiali UIを開くには、Kubernetes環境で以下のコマンドを実行します。

    $ istioctl dashboard kiali
    
  5. ログイン直後に表示される**概要**ページでメッシュの概要を確認します。**概要**ページには、メッシュ内にサービスを持つすべての名前空間が表示されます。以下のスクリーンショットは同様のページを示しています。

    Example Overview
    概要の例
  6. 名前空間グラフを表示するには、Bookinfo概要カードのケバブメニューでGraphオプションを選択します。ケバブメニューはカードの右上にあり、3つの縦に並んだドットのように見えます。クリックして利用可能なオプションを確認します。ページは以下に似ています。

    Example Graph
    グラフの例
  7. グラフは、一定期間におけるサービスメッシュを通過するトラフィックを表しています。Istioテレメトリを使用して生成されます。

  8. メトリクスのサマリーを表示するには、グラフ内のノードまたはエッジを選択して、右側のサマリー詳細パネルにメトリックの詳細を表示します。

  9. 異なるグラフの種類を使用してサービスメッシュを表示するには、**グラフの種類**ドロップダウンメニューからグラフの種類を選択します。選択できるグラフの種類はいくつかあります。**アプリケーション**、**バージョン付きアプリケーション**、**ワークロード**、**サービス**です。

    • **アプリケーション**グラフの種類は、アプリケーションのすべてのバージョンを単一のグラフノードに集約します。次の例は、reviewsアプリケーションの3つのバージョンを表す単一の**reviews**ノードを示しています。Show Service Nodes表示オプションが無効になっていることに注意してください。

      Example App Graph
      アプリケーショングラフの例
    • **バージョン付きアプリケーション**グラフの種類は、アプリケーションの各バージョンごとにノードを表示しますが、特定のアプリケーションのすべてのバージョンはグループ化されます。次の例は、reviewsアプリケーションの3つのバージョンを表す3つのノードを含む**reviews**グループボックスを示しています。

      Example Versioned App Graph
      バージョン付きアプリケーショングラフの例
    • **ワークロード**グラフの種類は、サービスメッシュ内の各ワークロードごとにノードを表示します。このグラフの種類では、appラベルとversionラベルを使用する必要がないため、コンポーネントにこれらのラベルを使用しないことを選択した場合、これが最適なグラフの種類になる可能性があります。

      Example Workload Graph
      ワークロードグラフの例
    • **サービス**グラフの種類は、メッシュ内のサービストラフィックの高レベルな集約を示します。

      Example Service Graph
      サービスグラフの例

Istio設定の調査

  1. 左側のメニューオプションは、**アプリケーション**、**ワークロード**、**サービス**、**Istio構成**のリストビューにつながります。次のスクリーンショットは、Bookinfo名前空間の**サービス**情報を示しています。

    Example Details
    詳細の例

トラフィックシフト

Kialiトラフィックシフトウィザードを使用して、2つ以上のワークロードにルーティングするリクエストトラフィックの特定の割合を定義できます。

  1. bookinfoグラフの**バージョン付きアプリケーショングラフ**を表示します。

    • 各ワークロードにルーティングされるトラフィックの割合を表示するには、**トラフィック分散**エッジラベル**表示**オプションが有効になっていることを確認します。

    • グラフにサービスノードを表示するには、**サービスノードの表示**オプションが有効になっていることを確認します。

    Bookinfo Graph Options
    Bookinfoグラフオプション
  2. ratingsサービス(三角形)ノードをクリックして、bookinfoグラフ内のratingsサービスに焦点を当てます。ratingsサービスのトラフィックは、2つのratingsワークロードv1v2に均等に分散されていることに注意してください(リクエストの50%が各ワークロードにルーティングされます)。

    Graph Showing Percentage of Traffic
    トラフィックの割合を示すグラフ
  3. サイドパネルにある**ratings**リンクをクリックして、ratingsサービスの詳細ビューに移動します。これは、ratingsサービスノードを右クリックして、コンテキストメニューからDetailsを選択することでも実行できます。

  4. **アクション**ドロップダウンメニューから**トラフィックシフト**を選択して、トラフィックシフトウィザードにアクセスします。

    Service Actions Menu
    サービスアクションメニュー
  5. スライダーをドラッグして、各ワークロードにルーティングするトラフィックの割合を指定します。ratings-v1は10%、ratings-v2は90%に設定します。

    Weighted Routing Wizard
    重み付けルーティングウィザード
  6. **プレビュー**ボタンをクリックして、ウィザードによって生成されるYAMLを表示します。

    Routing Wizard Preview
    ルーティングウィザードプレビュー
  7. **作成**ボタンをクリックして確認し、新しいトラフィック設定を適用します。

  8. 左側のナビゲーションバーで**グラフ**をクリックして、bookinfoグラフに戻ります。ratingsサービスノードにvirtual serviceアイコンが付いていることに注意してください。

  9. bookinfoアプリケーションにリクエストを送信します。たとえば、1秒間に1つのリクエストを送信するには、システムにwatchがインストールされている場合、このコマンドを実行できます。

    $ watch -n 1 curl -o /dev/null -s -w %{http_code} $GATEWAY_URL/productpage
    
  10. 数分後、トラフィックの割合が新しいトラフィックルートを反映していることに気付くでしょう。これにより、新しいトラフィックルートがすべてのトラフィックリクエストの90%をratings-v2に正常にルーティングしていることが確認されます。

    90% Ratings Traffic Routed to ratings-v2
    90%のratingsトラフィックがratings-v2にルーティングされました。

Istio設定の検証

KialiはIstioリソースを検証して、適切な規則とセマンティクスに従っていることを確認できます。Istioリソースの構成で検出された問題は、不適切な構成の重大度に応じて、エラーまたは警告としてフラグ付けされます。Kialiが実行するすべての検証チェックのリストについては、Kiali検証ページを参照してください。

サービスポート名の無効な構成を強制して、Kialiが検証エラーをどのように報告するかを確認します。

  1. detailsサービスのポート名をhttpからfooに変更します。

    $ kubectl patch service details -n bookinfo --type json -p '[{"op":"replace","path":"/spec/ports/0/name", "value":"foo"}]'
    
  2. 左側のナビゲーションバーで**サービス**をクリックして、**サービス**リストに移動します。

  3. まだ選択されていない場合は、**名前空間**ドロップダウンメニューからbookinfoを選択します。

  4. details行の**構成**列に表示されるエラーアイコンに注意してください。

    Services List Showing Invalid Configuration
    無効な構成を示すサービスリスト
  5. **名前**列の**details**リンクをクリックして、サービス詳細ビューに移動します。

  6. エラーアイコンの上にカーソルを置くと、エラーを説明するツールチップが表示されます。

    Service Details Describing the Invalid Configuration
    無効な構成を説明するサービス詳細
  7. ポート名をhttpに戻して構成を修正し、bookinfoを元の状態に戻します。

    $ kubectl patch service details -n bookinfo --type json -p '[{"op":"replace","path":"/spec/ports/0/name", "value":"http"}]'
    
    Service Details Showing Valid Configuration
    有効な構成を示すサービス詳細

Istio設定YAMLの表示と編集

Kialiは、Istio構成リソースの表示と編集のためのYAMLエディターを提供します。YAMLエディターは、不適切な構成を検出した場合にも検証メッセージを提供します。

  1. bookinfo VirtualServiceにエラーを導入します。

    $ kubectl patch vs bookinfo -n bookinfo --type json -p '[{"op":"replace","path":"/spec/gateways/0", "value":"bookinfo-gateway-invalid"}]'
    
  2. 左側のナビゲーションバーでIstio Configをクリックして、Istio構成リストに移動します。

  3. まだ選択されていない場合は、**名前空間**ドロップダウンメニューからbookinfoを選択します。

  4. 構成の問題を警告するエラーアイコンに注意してください。

    Istio Config List Incorrect Configuration
    不適切な構成を示すIstio構成リスト
  5. bookinfo行の**構成**列にあるエラーアイコンをクリックして、bookinfo仮想サービスビューに移動します。

  6. **YAML**タブが事前に選択されています。検証チェック通知が関連付けられている行の色強調表示とアイコンに注意してください。

    YAML Editor Showing Validation Notifications
    検証通知を示すYAMLエディター
  7. 赤いアイコンの上にカーソルを置くと、エラーをトリガーした検証チェックを知らせるツールチップメッセージが表示されます。エラーの原因と解決方法の詳細については、Kiali検証ページで検証エラーメッセージを検索してください。

    YAML Editor Showing Error Tool Tip
    エラーツールチップを示すYAMLエディター
  8. 仮想サービスbookinfoを元の状態にリセットします。

    $ kubectl patch vs bookinfo -n bookinfo --type json -p '[{"op":"replace","path":"/spec/gateways/0", "value":"bookinfo-gateway"}]'
    

追加機能

Kialiには、このタスクで確認した以外にも多くの機能があります。たとえば、Jaeger tracingとの統合などがあります。

これらの追加機能の詳細については、Kialiドキュメントを参照してください。

Kialiをより深く探求するには、Kialiチュートリアルを実行することをお勧めします。

クリーンアップ

フォローアップタスクを計画していない場合は、BookinfoサンプルアプリケーションとKialiをクラスタから削除します。

  1. Bookinfoアプリケーションを削除するには、Bookinfoクリーンアップ手順を参照してください。

  2. Kubernetes環境からKialiを削除するには

    $ kubectl delete -f https://raw.githubusercontent.com/istio/istio/release-1.24/samples/addons/kiali.yaml
    
この情報は役に立ちましたか?
改善のための提案はありますか?

ご意見ありがとうございます!