すべてのプロダクト
Search
ドキュメントセンター

:URI パス一致ルールの設定

最終更新日:Jan 13, 2025

サービスメッシュプロキシは、要求された URI と仮想サービスで設定された HTTP ルールに基づいてリクエストを処理します。仮想サービスは、URI パスの完全一致、プレフィックス一致、および正規表現一致をサポートしています。このトピックでは、URI パス一致ルールの設定方法について説明します。

前提条件

準備が完了し、helloworld サービスと sleep サービスがデプロイされています。詳細については、「準備」をご参照ください。

手順

  1. サービス設定が有効になっているかどうかを確認します。

    1. kubeconfig ファイルの情報に基づいて、kubectl を使用して Container Service for Kubernetes (ACK) クラスタに接続し、次のコマンドを実行して sleep サービスの bash を有効にします。

      kubectl exec -it deploy/sleep -- sh
    2. 次のコマンドを実行して、helloworld サービスにリクエストを送信します。

      curl helloworld:5000/hello

      期待される出力は、helloworld-v1 または helloworld-v2 がランダムにリクエストに応答することです。

      Hello version: v2, instance: helloworld-v2-6b96c5684-4****
      Hello version: v1, instance: helloworld-v1-6d77f4c4cf-p****
  2. 次の内容を使用して、宛先ルールを設定します。詳細については、「宛先ルールの管理」をご参照ください。

    apiVersion: networking.istio.io/v1beta1
    kind: DestinationRule
    metadata:
      name: helloworld
      namespace: default
    spec:
      host: helloworld
      subsets:
        - labels:
            version: v1
          name: v1
        - labels:
            version: v2
          name: v2
    
  3. 次の内容を使用して、仮想サービスを作成し、URI パス一致設定を追加します。詳細については、「仮想サービスの管理」をご参照ください。

  4. apiVersion: networking.istio.io/v1beta1
    kind: VirtualService
    metadata:
      name: helloworld-vs
      namespace: default
    spec:
      hosts:
        - helloworld
      http:
        - match:
            - uri:
                exact: /hello
          route:
            - destination:
                host: helloworld
                subset: v1
  5. 設定が有効になっているかどうかを確認します。

    1. kubeconfig ファイルの情報に基づいて、kubectl を使用して ACK クラスタに接続し、次のコマンドを実行して sleep サービスの bash を有効にします。

      kubectl exec -it deploy/sleep -- sh
    2. 次のコマンドを実行して、helloworld サービスの /hello パスにリクエストを送信します。

      curl helloworld:5000/hello

      期待される出力は、常に helloworld-v1 がリクエストに応答することです。

      Hello version: v1, instance: helloworld-v1-6d77f4c4cf-p****