Service Mesh(ASM)を使用して、サービス宛てのトラフィックのコピーをミラーリングされたサービスに送信できます。このトピックでは、ミラーリングを構成する方法について説明します。
前提条件
準備が完了し、helloworld サービスと sleep サービスがデプロイされています。詳細については、「準備」をご参照ください。
手順
サービス構成が有効になっているかどうかを確認します。
kubeconfig ファイルの情報に基づいて、kubectl を使用して Container Service for Kubernetes(ACK)クラスターに接続し、次のコマンドを実行して sleep サービスの bash を有効にします。
kubectl exec -it deploy/sleep -- sh次のコマンドを実行して、helloworld サービスにリクエストを送信します。
curl helloworld:5000/hello予想される出力:
Hello version: v2, instance: helloworld-v2-6b96c5684-4**** Hello version: v1, instance: helloworld-v1-6d77f4c4cf-p****予想される出力は、helloworld-v1 または helloworld-v2 がランダムにリクエストに応答することです。
helloworld サービスのトラフィックルールを構成し、helloworld-v1 がリクエストを受信して応答するように構成し、リクエストを helloworld-v2 にミラーリングします。
次のコンテンツを使用して、宛先ルールを構成します。詳細については、「宛先ルールの管理」をご参照ください。
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次のコンテンツを使用して、仮想サービスを作成します。詳細については、「仮想サービスの管理」をご参照ください。
apiVersion: networking.istio.io/v1beta1 kind: VirtualService metadata: name: helloworld-vs namespace: default spec: hosts: - helloworld http: - mirror: host: helloworld subset: v2 route: - destination: host: helloworld subset: v1
構成が有効になっているかどうかを確認します。
kubeconfig ファイルの情報に基づいて、kubectl を使用して ACK クラスターに接続し、次のコマンドを実行して sleep サービスの bash を有効にします。
kubectl exec -it deploy/sleep -- sh次のコマンドを実行して、helloworld サービスにリクエストを送信します。
curl helloworld:5000/hello予想される出力は、常に helloworld-v1 がリクエストに応答することです。
Hello version: v1, instance: helloworld-v1-6d77f4c4cf-p****サービスのトポロジを表示します。詳細については、「メッシュトポロジを使用してアプリケーションのトポロジを表示する」をご参照ください。
予想される出力:リクエストは helloworld-v2 にコピーされます。
