サービス間のインタラクションを可視化および監視する必要がある場合は、メッシュトポロジーを有効化します。メッシュトポロジー グラフを使用すると、サービスの健全性をリアルタイムで監視し、サービス間のレイテンシーと通信の問題を分析し、トラフィックがサービス全体でどのように流れ、分散するかを理解できます。これにより、問題を迅速に特定して解決し、サービスの信頼性と高いパフォーマンスを確保できます。
機能の概要
メッシュトポロジーは、Service Mesh の可観測性ツールです。リアルタイムのリクエストトラフィックとメッシュ設定データを組み合わせることで、メッシュトラフィックを強力に可視化します。これにより、サービスの呼び出し動作と正常性ステータスを即座に把握でき、問題の迅速な特定に役立ちます。メッシュトポロジーは、以下の機能を提供します。
-
トラフィック呼び出しトポロジー グラフ:メッシュトポロジーは、リアルタイムのリクエストトラフィックをトポロジー グラフとして可視化します。
-
メッシュ設定の可視化: メッシュトポロジーは、Service Mesh の設定を使用して、トポロジーグラフ上のノードに注釈を付けます。これにより、どの設定がアクティブであるかを即座に理解できます。これらには、ピア認証、仮想サービス、宛先ルール、ASM サーキットブレーキング、レート制限などが含まれます。
-
健全性ステータスの可視化:メッシュトポロジーは、ノードまたはエッジの色を使用してサービスまたはリクエストの健全性ステータスを表し、問題のあるノードまたはリクエストを迅速に特定できます。
-
トラフィックリプレイ:トラフィックリプレイを使用すると、選択した過去の期間のトラフィックを再生でき、その期間中のアプリケーショントラフィックを徹底的に検査できます。
ステップ 1:メッシュトポロジーの有効化
方法 1:新規 ASM インスタンスの作成
ASM コンソール にログインします。左側のナビゲーションウィンドウで、 を選択します。
-
Mesh Management ページで、Create ASM Instance をクリックします。
-
Observability セクションで、Enable Prometheus Metrics を選択します。次に、必要に応じて Prometheus タイプを選択し、関連する操作を行います。
[Prometheus タイプ]
[操作]
Managed Service for Prometheus
Prometheus によるメトリクス収集 を選択し、次に Kialiを有効にする を選択します。Managed Service for Prometheus の統合と課金情報の詳細については、「メッシュ監視のために Managed Service for Prometheus を統合する」および「課金」をご参照ください。
セルフマネージド Prometheus
自己作成prometheusを有効にする を選択し、次に Kialiを有効にする を選択します。ASM メッシュトポロジーが使用する Prometheus サービスエンドポイント (つまり、セルフマネージド Prometheus サービスのアクセスエンドポイント) を入力します。セルフマネージド Prometheus の統合の詳細については、「メッシュ監視のためにセルフマネージド Prometheus を統合する」をご参照ください。
説明-
Enable Prometheus Metrics を選択すると、お使いの Service Mesh インスタンスのメトリクス収集が有効になります。この操作では、ARMS インスタンスまたはセルフマネージド Prometheus インスタンスは自動的に作成されません。
-
Enable Prometheus Metrics と Kialiを有効にする の両方の選択を解除すると、メッシュトポロジーが無効になります。
-
-
必要な情報を設定し、Service Agreement をよく読んで選択します。次に、ページ下部の Create Service Mesh をクリックします。
設定項目の詳細については、「ASM インスタンスの作成」をご参照ください。
-
新しく作成した ASM インスタンスに Container Service for Kubernetes (ACK) クラスターを追加します。詳細については、「ASM インスタンスにクラスターを追加する」をご参照ください。
方法 2:既存 ASM インスタンスの使用
ASM インスタンスに ACK クラスターがすでに追加されていることを確認してください。詳細については、「ASM インスタンスにクラスターを追加する」をご参照ください。
ASM バージョン 1.12.4.50 より前
ASM コンソール にログインします。左側のナビゲーションウィンドウで、 を選択します。
-
Mesh Management ページで、対象のインスタンス名をクリックします。左側のナビゲーションペインで、 を選択します。ページの右側で、Settings をクリックします。
-
Settings Update パネルで、Enable Prometheus Metrics を選択します。次に、必要に応じて Prometheus タイプを選択し、関連する操作を行います。
[Prometheus タイプ]
[操作]
Managed Service for Prometheus
Prometheus によるメトリクス収集 を選択し、次に Kialiを有効にする を選択します。Managed Service for Prometheus の統合と課金情報の詳細については、「メッシュ監視のために Managed Service for Prometheus を統合する」および「課金」をご参照ください。
セルフマネージド Prometheus
自己作成prometheusを有効にする を選択し、次に Kialiを有効にする を選択します。ASM メッシュトポロジーが使用する Prometheus サービスエンドポイント (つまり、セルフマネージド Prometheus サービスのアクセスエンドポイント) を入力します。セルフマネージド Prometheus の統合の詳細については、「メッシュ監視のためにセルフマネージド Prometheus を統合する」をご参照ください。
-
設定が完了したら、Settings Update パネルの下部で OK をクリックします。
ASM バージョン 1.12.4.50 以降
メッシュトポロジーは、Service Meshと Prometheus メトリクスの統合に依存します。メッシュモニタリングのために Prometheus をまだ統合していない場合は、まず統合してください。詳細については、「メッシュモニタリングのために Prometheus 向けマネージドサービスを統合する」および「メッシュモニタリングのためにセルフマネージド Prometheus を統合する」をご参照ください。Prometheus 向けマネージドサービスの請求情報については、「請求」をご参照ください。
ASM コンソール にログインします。左側のナビゲーションウィンドウで、 を選択します。
-
Mesh Management ページで、対象のインスタンス名をクリックします。左側のナビゲーションペインで、 を選択します。Activate ASM mesh topology セクションで、ASM バージョンに基づいて次の操作を行います。
-
ASM バージョン 1.18.2.112 より前:Activate をクリックします。
-
ASM バージョン 1.18.2.112 以降:次のいずれかのデプロイメントモードを選択します。2 つのモードの違いとマネージドモードの設定方法については、「マネージドモードでメッシュトポロジーを有効化する」をご参照ください。
-
In-Kubernetes-cluster Mode をクリックし、ASM メッシュトポロジーが使用する Prometheus サービスエンドポイントを入力して、Activate をクリックします。
-
Managed Mode をクリックし、Activate をクリックして、表示されるダイアログボックスで必要な情報を設定し、OK をクリックします。
-
-
ステップ 2:メッシュトポロジーへのアクセス
メッシュトポロジーには 3 つの方法でアクセスできます。直接アクセスには ASM バージョン 1.12.4.50 以降が必要です。カスタムアクセスには ASM バージョン 1.16.4.5 以降が必要です。
方法 1:メッシュトポロジーへの直接アクセス
ASM バージョンが 1.12.4.50 以降の場合、Classic Load Balancer (CLB) を自動的に作成して ASM メッシュトポロジーにアクセスし、メッシュトポロジー サービスに直接アクセスすることを選択できます。
ASM コンソール にログインします。左側のナビゲーションウィンドウで、 を選択します。
-
Mesh Management ページで、対象のインスタンス名をクリックします。左側のナビゲーションペインで、 を選択します。
-
Access セクションで、ASM インスタンスのバージョンに基づいて次の操作を行います。
-
ASM バージョン 1.15.3.120 より前:Automatically Create Internet-facing CLB Instance to Access ASM Mesh Topology を選択します。
-
ASM バージョン 1.15.3.120 以降、1.17.2.19 より前:Automatically Create Internet-facing CLB Instance to Access ASM Mesh Topology の横にあるスイッチをオンにします。表示されるダイアログボックスで、OK をクリックします。
-
ASM バージョン 1.17.2.19 以降:Create CLB Instance to Access ASM Mesh Topology の横にあるスイッチをオンにします。表示されるダイアログボックスで、必要に応じて必要な設定を行い、OK をクリックします。
メッシュトポロジーアクセスを有効にすると、お使いの Service Mesh は一時的な更新状態になります。
-
-
お使いの Service Mesh の更新が完了したかどうかを確認してください。
-
左側のナビゲーションペインで、 を選択します。
-
Basic Information セクションで、Service Mesh の Status を確認します。
Status が Updating の場合、更新が進行中です。Status が Running の場合、更新が完了しています。
-
-
Mesh Topology ページの Access セクションで、Click here to access ASM Mesh Topology または Copy token and open in new window をクリックして、メッシュトポロジーログインページに移動します。
方法 2:ASM ゲートウェイを使用したメッシュトポロジーへのアクセス
-
イングレスゲートウェイを作成し、メッシュトポロジーアクセスをサポートするポート設定をイングレスゲートウェイに追加します。詳細については、「イングレスゲートウェイサービスの作成」または「KubeAPI を使用したイングレスゲートウェイの管理」をご参照ください。
次の YAML は、サンプルポート設定を示しています。
- name: http-kiali port: 20001 protocol: TCP targetPort: 20001spec: clusterIds: - c729bdf9ef09b4a259e693f76axxx cpu: {} externalTrafficPolicy: Local maxReplicas: 5 minReplicas: 2 ports: - name: status-port port: 15020 targetPort: 15020 - name: http2 port: 80 targetPort: 80 - name: https port: 443 targetPort: 443 - name: tls port: 15443 targetPort: 15443 - name: http-kiali port: 20001 protocol: TCP targetPort: 20001 -
次の YAML を使用して Gateway を作成します。詳細については、「Gateway の管理」をご参照ください。
apiVersion: networking.istio.io/v1alpha3 kind: Gateway metadata: name: kiali-gateway namespace: istio-system spec: selector: istio: ingressgateway servers: - hosts: - '*' port: name: http number: 20001 protocol: HTTP -
次の YAML を使用して VirtualService を作成します。詳細については、「VirtualService の管理」をご参照ください。
apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: kiali-vs namespace: istio-system spec: gateways: - kiali-gateway hosts: - '*' http: - route: - destination: host: kiali port: number: 20001 -
メッシュトポロジーにログインします。
ASM コンソール にログインします。左側のナビゲーションウィンドウで、 を選択します。
-
Mesh Management ページで、対象のインスタンス名をクリックします。左側のナビゲーションペインで、 を選択します。
-
Config Info セクションで、Activate ASM mesh topology の横にある Ingressゲートウェイを介したアクセス をクリックして、メッシュトポロジーログインページに移動します。
方法 3:メッシュトポロジーへのカスタムアクセス
メッシュトポロジーを有効にすると、Kubernetes クラスターの istio-system Namespace に Kiali という名前の Service が作成されます。この Service のプロキシサービスを作成することで、メッシュトポロジーにアクセスできます。たとえば、Kiali Service 用に Nginx リバースプロキシを作成し、Nginx を介してメッシュトポロジーにアクセスします。[カスタムアクセス設定] を使用して、Kiali Service へのアクセス方法を定義できます。この方法には ASM バージョン 1.16.4.5 以降が必要です。ASM バージョンのアップグレードの詳細については、「ASM インスタンスのアップグレード」をご参照ください。
ASM コンソール にログインします。左側のナビゲーションウィンドウで、 を選択します。
[メッシュ管理] ページで、ASM インスタンスの名前をクリックします。左側のナビゲーションウィンドウで、 を選択します。
-
Authentication セクションの下で、[詳細オプションを展開] をクリックします。Customize Access Modes セクションで、必要な情報を設定し、Save configuration of Mesh Topology をクリックします。
[設定項目]
[説明]
Customize a Domain Name
メッシュトポロジーで利用するカスタムドメイン名を定義します。カスタムドメイン名を使用してメッシュトポロジーにアクセスする場合は、この設定を行ってください。そうしないと、OIDC ログインフローに影響を与える可能性があります。OIDC を使用してメッシュトポロジーにログオンすると、メッシュトポロジーはリダイレクト URI 内のドメイン名をカスタムドメイン名に置き換えて、OIDC アプリケーションとの適切な統合を確保します。
Customize a Port
メッシュトポロジー サービスがリッスンするポートを定義します。デフォルトは 20001 です。これを設定すると、メッシュトポロジー サービスは指定されたカスタムポートでリッスンします。
Customize a Service Root Path
メッシュトポロジーで利用するルートパスを定義します。デフォルトは / です。これを設定すると、メッシュトポロジーは指定されたパスからコンテンツを提供します。メッシュトポロジーにアクセスするときは、元のアクセスアドレスにカスタムルートパスを追加してください。
Select a Protocol (https/http)
メッシュトポロジーで利用するプロトコルを定義します。http または https のみがサポートされています。HTTPS を使用してメッシュトポロジーにアクセスする場合は、この設定を行ってください。そうしないと、OIDC ログインフローに影響を与える可能性があります。OIDC を使用してメッシュトポロジーにログオンすると、メッシュトпоロジーはリダイレクト URI 内のプロトコル部分をカスタムプロトコルに置き換えて、OIDC アプリケーションとの適切な統合を確保します。
ステップ 3:メッシュトポロジーへのログオン
メッシュトポロジーには 3 つの方法でログオンできます。OIDC ログインには ASM バージョン 1.15.3.120 以降が必要です。Alibaba Cloud アカウント ID ログインには ASM バージョン 1.16.4.5 以降が必要です。
方法 1:トークンを使用したメッシュトポロジーへのログオン
ASM バージョン 1.12.4.50 より前
ACK コンソールからトークンを取得し、それを使用してメッシュトポロジーにログオンします。
ACK コンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、 を選択します。
-
シークレット ページで、Namespaces に [istio-system] を選択し、[kiali-service-account-token-****] をクリックしてから、[token] 行の横にある
アイコンをクリックしてトークンをコピーします。 -
メッシュトポロジーログインページで、トークンを貼り付け、[ログイン] をクリックしてメッシュトポロジーコンソールにアクセスします。
ASM バージョン 1.12.4.50 以降
ASM コンソールからトークンを取得し、それを使用してメッシュトポロジーにログオンします。
ASM コンソール にログインします。左側のナビゲーションウィンドウで、 を選択します。
-
Mesh Management ページで、対象のインスタンス名をクリックします。左側のナビゲーションペインで、 を選択します。
-
Mesh Topology ページの Access セクションで、Copy token and open in new window をクリックします。
-
メッシュトポロジーログインページで、トークンを貼り付け、[ログイン] をクリックしてメッシュトポロジーコンソールにアクセスします。
方法 2:OIDC を使用したメッシュトポロジーへのログオン
OIDC (OpenID Connect) は、シングルサインオン (SSO) を実装するために一般的に使用される ID 認証および承認プロトコルです。OIDC プロトコルを使用して ID プロバイダー (IdP) と統合し、メッシュトポロジーにログオンできます。この方法には ASM バージョン 1.15.3.120 以降が必要です。ASM バージョンのアップグレードの詳細については、「ASM インスタンスのアップグレード」をご参照ください。
-
ID プロバイダー (IdP) を設定します。詳細については、「メッシュアプリケーションで SSO を実現するために ASM を Alibaba Cloud IDaaS と統合する」のステップ 1 およびステップ 2 をご参照ください。
[ログインリダイレクト URI] を、メッシュトポロジーの CLB の IP アドレス (CLB 経由の直接アクセスの場合) または ASM ゲートウェイアドレス (ASM ゲートウェイ経由のアクセスの場合) に設定します。例:
-
CLB 経由でメッシュトпоロジーにアクセスし、CLB IP が
xxx.xxx.xxx.xxxの場合、[ログインリダイレクト URI] をhttp://xxx.xxx.xxx.xxx:20001に設定します。20001の後に/や/xxxなどのパスを追加しないでください。 -
ASM ゲートウェイ経由でメッシュトポロジーにアクセスし、ゲートウェイ IP が
yyy.yyy.yyy.yyyの場合、[ログインリダイレクト URI] をhttp://yyy.yyy.yyy.yyy:20001に設定します。20001の後に/や/xxxなどのパスを追加しないでください。
-
-
OIDC を使用してメッシュトポロジーにログオンします。
ASM コンソール にログインします。左側のナビゲーションウィンドウで、 を選択します。
-
Mesh Management ページで、対象のインスタンス名をクリックします。左側のナビゲーションペインで、 を選択します。
-
Authentication セクションで、Login with OIDC を選択します。必要な情報を設定し、Save configuration of Mesh Topology をクリックしてから、[新しいページで ASM メッシュトポロジーを開く] をクリックします。
-
メッシュトポロジーログインページで、[OpenID でログイン] をクリックして、OIDC アプリケーションログインページに移動します。
方法 3:Alibaba Cloud アカウント ID を使用したメッシュトポロジーへのログオン
OIDC プロトコルを使用して Alibaba Cloud RAM OAuth アプリケーションと統合し、Alibaba Cloud アカウント ID でメッシュトポロジーにログオンできます。詳細については、「Web アプリケーションから Alibaba Cloud へのログオン」をご参照ください。
この方法を使用すると、ASM は、asm-kiali というプレフィックスを持つ Alibaba Cloud RAM OAuth アプリケーションを自動的に作成し、それをメッシュトポロジーと統合します。この方法には ASM バージョン 1.16.4.5 以降が必要です。ASM バージョンのアップグレードの詳細については、「ASM インスタンスのアップグレード」をご参照ください。
ASM コンソール にログインします。左側のナビゲーションウィンドウで、 を選択します。
[メッシュ管理] ページで、ASM インスタンスの名前をクリックします。左側のナビゲーションウィンドウで、 を選択します。
-
[ログイン認証方法] セクションで、[Alibaba Cloud アカウント ID ログオン] を選択します。表示されるダイアログボックスで、[コールバックアドレスを追加] をクリックし、コールバックアドレスを入力してから、OK をクリックします。
メッシュは短時間の更新を行います。更新が完了するまで待ってから次に進んでください。
説明-
コールバックアドレスの形式については、「方法 2:OIDC を使用したメッシュトポロジーへのログオン」の [ログインリダイレクト URI] をご参照ください。
-
メッシュトポロジーへの直接アクセスを使用する場合、コールバックアドレスは自動的に入力されます。
-
-
メッシュトポロジーログインページで、[OpenID でログイン] をクリックして、Alibaba Cloud アカウント ID でログオンします。
よくある質問
ARMS Prometheus を使用してメトリクスを収集する場合、メッシュトポロジーが読み込まれないのはなぜですか。
お使いの Service Mesh ASM で [ARMS Prometheus を使用してメトリクスを収集] を選択し、ARMS Prometheus インスタンスで認証トークンを有効にしている場合、メッシュトポロジーが ARMS Prometheus インスタンスにアクセスできなくなり、メッシュトポロジーの読み込みに失敗します。 次のいずれかの解決策を選択してください。 詳細については、「ローカル Grafana に Prometheus 監視データを接続する」をご参照ください。
-
解決策 1: ARMS コンソールで、Setting ページでトークンを無効にします。詳細については、「HTTP API エンドポイントを使用して Prometheus データを Grafana またはセルフマネージドアプリケーションに接続する」をご参照ください。
-
解決策 2: メッシュトポロジーで ARMS Prometheus 認証トークンを設定して、ARMS Prometheus インスタンスに接続します。
説明この操作には ASM バージョン 1.15.3.120 以降が必要です。
ASM コンソール にログインします。左側のナビゲーションウィンドウで、 を選択します。
[メッシュ管理] ページで、ASM インスタンスの名前をクリックします。左側のナビゲーションウィンドウで、 を選択します。
-
Connection with ARMS Prometheus セクションのテキストボックスに、ARMS Prometheus 用に設定された認証トークンを入力します。次に、Save configuration of Mesh Topology をクリックして認証トークンを設定します。
メッシュトポロジーに一部のトラフィックしか表示されないのはなぜですか。
次の手順でトラブルシューティングを行ってください。
-
設定の問題
メッシュトポロジーのトラフィック表示設定で、正しいトラフィックタイプ (gRPC、HTTP、TCP など) が選択されていることを確認してください。これらのオプションを選択しないと、すべてのトラフィック情報を表示できない場合があります。
-
Namespace の制限
メッシュトポロジーで、正しい Namespace を選択していることを確認してください。一部のトラフィックは、選択されていない Namespace に存在する可能性があります。
-
データ収集と更新
-
Prometheus インスタンスがメトリクスを適切に収集していることを確認してください。ASM は、正常に収集されたデータのみを表示します。遅延、パケット損失、またはその他の問題により、一部のトラフィックデータがトポロジー グラフに即座に表示されない場合があります。
-
クラスター内のすべてのワークロードにメッシュプロキシが注入されていることを確認してください。メッシュプロキシが注入されたワークロードのみが、トラフィック監視メトリクスを報告します。
-
メッシュトポロジーページがリアルタイムで更新されることを確認するか、手動で更新して最新のトラフィックデータを取得してください。
-
-
サイドカープロキシとトラフィック設定の影響
一部のトラフィックは、サイドカープロキシ設定または ASM のサイドカートラフィック設定の影響を受け、メッシュプロキシをバイパスして観測不可能になる場合があります。サイドカープロキシ設定でポートまたはアドレスによってプロキシが無効になっているか、またはサイドカートラフィック設定で正しいインバウンドおよびアウトバウンドトラフィックの宛先が指定されているかを確認してください。
関連ドキュメント
-
異常なレイテンシーを持つ特定のリクエストが見つかった場合は、アクセスログを使用して原因を特定してください。詳細については、「アクセスログを使用して異常なリクエストレイテンシーの原因を特定する」をご参照ください。
-
クライアントからターゲットサービスにアクセスするときに、トラフィックを同じゾーン内に保つことでサービス呼び出しのレイテンシーを最小限に抑えるには、同一ゾーン優先ルーティングを使用してください。詳細については、「メッシュトポロジーを使用して同一ゾーン優先ルーティングを観測する」をご参照ください。
-
複数のクラスターにわたるトラフィックトポロジーを観測するには、マネージドモードでメッシュトポロジーを使用してください。これにより、メッシュインスタンス全体に対して 1 つのメッシュトポロジー サービスのみがデプロイされ、設定作業が削減されます。詳細については、「マネージドモードでメッシュトポロジーを有効化する」をご参照ください。
-
サイドカーリクエストのインターセプトは、メッシュ内のアプリケーションのヘルスチェックを妨げ、障害を引き起こす可能性があります。ヘルスチェックリダイレクトを有効にして、チェックが正しく実行されるようにしてください。詳細については、「メッシュ内のアプリケーションのヘルスチェックリダイレクトを有効化する」をご参照ください。