All Products
Search
Document Center

Alibaba Cloud Service Mesh:Konfigurasikan traffic mirroring

Last Updated:Apr 21, 2026

Traffic mirroring mengirimkan salinan traffic langsung ke versi layanan sekunder untuk pengujian terhadap permintaan produksi nyata—tanpa memengaruhi pengguna akhir. Gunakan fitur ini untuk memvalidasi versi layanan baru sebelum mengalihkan traffic produksi ke versi tersebut.

Topik ini menjelaskan cara merutekan seluruh traffic ke helloworld-v1 dan mencerminkan salinan setiap permintaan ke helloworld-v2.

Prasyarat

Selesaikan persiapan dan deploy layanan helloworld dan sleep. Untuk detailnya, lihat Preparations.

Langkah 1: Verifikasi perutean garis dasar

Sebelum menerapkan aturan mirroring, pastikan bahwa baik helloworld-v1 maupun helloworld-v2 menerima traffic melalui load balancing normal.

  1. Buka shell di Pod sleep:

    kubectl exec -it deploy/sleep -- sh
  2. Kirim permintaan ke layanan helloworld:

    curl helloworld:5000/hello

    Tanggapan berasal dari v1 atau v2 secara acak:

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

    atau

    Hello version: v2, instance: helloworld-v2-6b96c5684-4****

Langkah 2: Buat destination rule dan virtual service

Definisikan dua subset (v1 dan v2) untuk layanan helloworld, lalu buat virtual service yang merutekan seluruh traffic ke v1 dan mencerminkannya ke v2.

Membuat aturan tujuan

Terapkan DestinationRule berikut untuk mendefinisikan subset v1 dan v2. Untuk detailnya, lihat Manage destination rules.

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

Buat virtual service dengan mirroring

Terapkan VirtualService berikut. Blok route mengirimkan seluruh traffic ke helloworld-v1. Blok mirror mengirimkan salinan setiap permintaan ke helloworld-v2. Untuk detailnya, lihat Manage virtual services.

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

Langkah 3: Verifikasi mirroring

Pastikan v1 menangani semua tanggapan

  1. Buka shell di Pod sleep:

    kubectl exec -it deploy/sleep -- sh
  2. Kirim permintaan ke layanan helloworld:

    curl helloworld:5000/hello

    Sekarang, setiap tanggapan hanya berasal dari v1:

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

Pastikan v2 menerima traffic yang dicerminkan

Buka Mesh Topology untuk memeriksa topologi layanan. Topologi tersebut menunjukkan bahwa permintaan disalin ke helloworld-v2, meskipun v1 adalah satu-satunya versi yang merespons klien. Untuk detailnya, lihat Use Mesh Topology to view the topology of an application.

Service topology showing mirrored traffic to helloworld-v2