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

Alibaba Cloud Service Mesh: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-7d48f6b995-6****
      Hello version: v1, instance: helloworld-v1-6986f64596-s****
  2. istioctl ツールを使用して、次のコマンドを実行し、helloworld サービスのレイヤー 7 ウェイポイントプロキシをデプロイします。

    istioctl x waypoint apply --service-account helloworld
  3. 次のコンテンツを使用して、宛先ルールを作成します。詳細については、「宛先ルールの管理」をご参照ください。

    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
    
  4. 次のコンテンツを使用して、仮想サービスを作成し、URI パス一致構成を追加します。詳細については、「仮想サービスの管理」をご参照ください。

    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-6986f64596-s****