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

Alibaba Cloud Service Mesh:ヘッダーマッチングの設定

最終更新日:Jan 14, 2025

リクエストを区別し、異なる処理を実行するために、リクエストのヘッダーにカスタムフィールドを含めることができます。このトピックでは、ヘッダーマッチングの設定方法について説明します。

前提条件

準備が完了し、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-7567d85fd7-d****
  2. istioctl ツールを使用して、次のコマンドを実行し、helloworld サービスのレイヤー 7 ウェイポイントプロキシをデプロイします。

    istioctl x waypoint apply --service-account helloworld-v1
    istioctl x waypoint apply --service-account helloworld-v2
  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. 次のコンテンツを使用して、仮想サービスを作成し、ヘッダーマッチング設定を追加します。詳細については、「仮想サービスの管理」をご参照ください。

    次の設定は、test-header リクエストヘッダーが完全に一致することを示しています。値が v1 の場合、リクエストは helloworld-v1 に送信されます。値が v2 の場合、リクエストは helloworld-v2 に送信されます。

    apiVersion: networking.istio.io/v1beta1
    kind: VirtualService
    metadata:
      name: helloworld-vs
      namespace: default
    spec:
      hosts:
        - helloworld
      http:
        - match:
            - headers:
                test-header:
                  exact: v1
          route:
            - destination: 
                host: helloworld
                subset: v1
        - match:
            - headers:
                test-header:
                  exact: v2
          route:
            - destination: 
                host: helloworld
                subset: v2
  5. ヘッダーマッチング設定が有効になっているかどうかを確認します。

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

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

      curl -H "test-header:v1" helloworld:5000/hello

      期待される出力:

      Hello version: v1, instance: helloworld-v1-7567d85fd7-d****
    3. 次のコマンドを実行して、ヘッダー test-header: v2 を含むリクエストを helloworld サービスに送信します。

      curl -H "test-header:v2" helloworld:5000/hello

      期待される出力:

      Hello version: v2, instance: helloworld-v2-7d48f6b995-6****

      上記の結果は、ヘッダーマッチング設定が有効になっていることを示しています。