サービスメッシュプロキシは、要求された URI と仮想サービスで構成された HTTP ルールに基づいてリクエストを処理します。仮想サービスは、URI パスの完全一致、プレフィックス一致、および正規表現一致をサポートしています。このトピックでは、URI パス一致ルールの構成方法について説明します。
前提条件
準備が完了し、helloworld サービスと sleep サービスがデプロイされています。詳細については、「準備」をご参照ください。
手順
サービス構成が有効になっているかどうかを確認します。
kubeconfig ファイルの情報に基づいて、kubectl を使用して Container Service for Kubernetes (ACK) クラスタに接続し、次のコマンドを実行して sleep サービスの bash を有効にします。
kubectl exec -it deploy/sleep -- sh
次のコマンドを実行して、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****
istioctl ツールを使用して、次のコマンドを実行し、helloworld サービスのレイヤー 7 ウェイポイントプロキシをデプロイします。
istioctl x waypoint apply --service-account helloworld
次のコンテンツを使用して、宛先ルールを作成します。詳細については、「宛先ルールの管理」をご参照ください。
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
次のコンテンツを使用して、仮想サービスを作成し、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
構成が有効になっているかどうかを確認します。
kubeconfig ファイルの情報に基づいて、kubectl を使用して ACK クラスタに接続し、次のコマンドを実行して sleep サービスの bash を有効にします。
kubectl exec -it deploy/sleep -- sh
次のコマンドを実行して、helloworld サービスの
/hello
パスにリクエストを送信します。curl helloworld:5000/hello
期待される出力は、常に helloworld-v1 がリクエストに応答することです。
Hello version: v1, instance: helloworld-v1-6986f64596-s****