全部产品
Search
文档中心

Alibaba Cloud Service Mesh:Skenario 1: Teruskan ID jejak dalam jejak

更新时间:Jul 02, 2025

Jalur lalu lintas dalam mode permissif memungkinkan Anda mengisolasi versi aplikasi. Trafik diarahkan ke jalur yang berbeda berdasarkan header routing permintaan dan header permintaan pass-through end-to-end (E2E). Ketika layanan dalam jalur saling memanggil, jika layanan yang akan dipanggil tidak ada di jalur tersebut, permintaan akan diteruskan ke layanan yang sama di jalur dasar. Fitur ini memastikan integritas rantai panggilan dan menyederhanakan pengelolaan trafik. Topik ini menjelaskan cara menggunakan jalur lalu lintas dalam mode permissif untuk skenario di mana header routing permintaan berbeda dari header permintaan pass-through E2E.

Penting

Sebelum memulai, pastikan Anda telah membaca dan memahami topik Gunakan jalur lalu lintas dalam mode permissif untuk mengelola trafik ujung ke ujung dan konten terkait.

Deskripsi skenario

Dalam contoh ini, tiga jalur (s1, s2, dan s3) dibuat untuk mewakili tiga versi layanan mocka, mockb, dan mockc. Jalur s1 adalah jalur dasar yang mencakup semua layanan v1. Jalur s2 hanya mencakup layanan mocka dan mockc versi v2, sedangkan jalur s3 hanya mencakup layanan mockb versi v3.

Langkah 1: Buat grup jalur dan jalur yang sesuai

  1. Buat grup jalur.

    1. Masuk ke Konsol ASM. Di panel navigasi sebelah kiri, pilih Service Mesh > Mesh Management.

    2. Di halaman Mesh Management, klik nama instance ASM. Di panel navigasi sebelah kiri, pilih Traffic Management Center > Traffic Lane.

    3. Di halaman Traffic Lane, klik Create Swimlane Group. Di panel Create Swimlane Group, atur parameter dan klik OK.

      Parameter

      Deskripsi

      Name of swim lane group

      Untuk contoh ini, masukkan test.

      Istio gateway for an ingress gateway

      Pilih ingressgateway.

      Lane Mode

      Pilih Permissive Mode.

      Pass-through Mode of Trace Context

      Pilih Pass Through Trace ID.

      Trace ID Request Header

      Masukkan my-trace-id. Hal ini karena layanan sampel dalam contoh ini mentransmisikan secara transparan header permintaan my-trace-id dalam jejak.

      Routing Request Header

      Anda dapat menentukan parameter ini berdasarkan kebutuhan bisnis Anda. Gerbang ASM merutekan trafik ke jalur dan mempertahankan konteks jalur berdasarkan isi header routing permintaan. Untuk contoh ini, masukkan x-asm-prefer-tag.

      Swimlane Services

      Pilih klaster ACK tempat Anda menerapkan layanan sampel dari daftar drop-down Kluster Kubernetes dan pilih default dari daftar drop-down Namespace. Kemudian, pilih mocka, mockb, dan mockc dalam daftar layanan, dan klik ikon 移动 untuk menambahkan layanan ke bagian selected.

      Setelah grup jalur dibuat, label trafik secara otomatis dihasilkan untuk grup tersebut. Anda dapat memilih Pusat Manajemen Trafik > TrafficLabel di panel navigasi sebelah kiri untuk melihat label trafik. Sebagai contoh, label trafik berikut dihasilkan untuk layanan mocka.

      Tampilkan kode YAML label trafik

      apiVersion: istio.alibabacloud.com/v1beta1
      kind: TrafficLabel
      metadata:
        labels:
          asm-system: 'true'
          provider: asm
          swimlane-group: test
        name: asm-swimlane-test-mocka
        namespace: default
      spec:
        rules:
          - labels:
              - name: asm-label
                valueFrom:
                  - '$getExternalInboundRequestHeader(x-asm-prefer-tag, my-trace-id)'
        workloadSelector:
          labels:
            app: mocka
      
  2. Buat jalur s1, s2, dan s3, serta ikat jalur s1 ke versi v1 layanan sampel, jalur s2 ke versi v2 layanan sampel, dan jalur s3 ke versi v3 layanan sampel.

    1. Di bagian Traffic Rule Definition halaman Traffic Lane, klik Create swimlanes.

    2. Di kotak dialog Create swimlanes, atur parameter dan klik OK.

      Parameter

      Deskripsi

      Swimlane Name

      Beri nama tiga jalur sebagai s1, s2, dan s3 masing-masing.

      Configure Service Tag

      Label Key: Pilih ASM_TRAFFIC_TAG.

      Label Value: Pilih v1 untuk jalur s1, v2 untuk jalur s2, dan v3 untuk jalur s3.

      Add Service

      Untuk jalur s1, pilih mocka(default), mockb(default), dan mockc(default).

      Untuk jalur s2, pilih mocka(default) dan mockc(default).

      Untuk jalur s3, pilih mockb(default).

      Gambar berikut menunjukkan konfigurasi jalur s1.

      image.png

      Setelah ketiga jalur dibuat, Anda dapat melihatnya di bagian Definisi Aturan Trafik, seperti ditunjukkan pada gambar berikut.image.png

      Catatan

      Secara default, jalur pertama yang Anda buat dalam grup jalur diatur sebagai jalur dasar. Ketika trafik ditujukan untuk layanan yang tidak ada di jalur lain, permintaan diteruskan ke jalur dasar sesuai dengan mekanisme fallback. Untuk informasi lebih lanjut tentang cara mengubah jalur dasar, lihat Ubah jalur dasar dalam mode permissif.

      Aturan tujuan dan layanan virtual secara otomatis dihasilkan untuk setiap layanan dalam jalur. Anda dapat memilih Traffic Management Center > DestinationRule atau VirtualService di panel navigasi sebelah kiri untuk melihat aturan tujuan atau layanan virtual. Sebagai contoh, aturan tujuan dan layanan virtual berikut dihasilkan untuk layanan mocka.

      Tampilkan kode YAML contoh aturan tujuan

      apiVersion: networking.istio.io/v1beta1
      kind: DestinationRule
      metadata:
        labels:
          asm-system: 'true'
          provider: asm
          swimlane-group: test
        name: trafficlabel-dr-test-default-mocka
        namespace: istio-system
      spec:
        host: mocka.default.svc.cluster.local
        subsets:
          - labels:
              ASM_TRAFFIC_TAG: v1
            name: s1
          - labels:
              ASM_TRAFFIC_TAG: v2
            name: s2
      

      Tampilkan kode YAML contoh layanan virtual

      apiVersion: networking.istio.io/v1beta1
      kind: VirtualService
      metadata:
        labels:
          asm-system: 'true'
          provider: asm
          swimlane-group: test
        name: trafficlabel-vs-test-default-mocka
        namespace: istio-system
      spec:
        hosts:
          - mocka.default.svc.cluster.local
        http:
          - name: default
            route:
              - destination:
                  host: mocka.default.svc.cluster.local
                  subset: $asm-label
                fallback:
                  target:
                    host: mocka.default.svc.cluster.local
                    subset: s1
      
  3. Buat aturan routing trafik untuk setiap jalur.

    1. Di bagian Traffic Rule Definition halaman Traffic Lane, temukan jalur untuk mana Anda ingin membuat aturan routing trafik, dan klik Ingress traffic rules di kolom Actions.

    2. Di kotak dialog Add drainage rule, atur parameter dan klik OK.

      Contoh ini mengasumsikan bahwa jalur permintaan masuk dari semua layanan dalam jalur adalah /mock, dan aturan routing trafik yang sama dikonfigurasikan untuk setiap jalur.

      Parameter

      Deskripsi

      Ingress service

      Untuk contoh ini, pilih mocka.default.svc.cluster.local.

      Ingress traffic rules

      Untuk contoh ini, atur parameter Name menjadi r1, r2, dan r3 masing-masing untuk ketiga jalur. Atur parameter realm name menjadi *.

      Matching request URI

      Untuk contoh ini, atur parameter Method menjadi Exact dan parameter Content menjadi /mock.

      Gambar berikut menunjukkan konfigurasi aturan routing trafik untuk jalur s1.

      image.png

      Setelah aturan routing trafik dibuat, Anda dapat melihatnya di bagian Definisi Aturan Trafik, seperti ditunjukkan pada gambar berikut. image.png

      Setelah aturan routing trafik dibuat, layanan virtual secara otomatis dihasilkan untuk jalur tersebut. Sebagai contoh, layanan virtual berikut dihasilkan untuk jalur s2.

      Tampilkan kode YAML contoh layanan virtual

      apiVersion: networking.istio.io/v1beta1
      kind: VirtualService
      metadata:
        labels:
          asm-system: 'true'
          provider: asm
          swimlane-group: test
        name: swimlane-ingress-vs-test-s2
        namespace: istio-system
      spec:
        gateways:
          - istio-system/ingressgateway
        hosts:
          - '*'
        http:
          - match:
              - headers:
                  x-asm-prefer-tag:
                    exact: s2
                uri:
                  exact: /mock
            name: r2
            route:
              - destination:
                  host: mocka.default.svc.cluster.local
                  subset: s2
                fallback:
                  target:
                    host: mocka.default.svc.cluster.local
                    subset: s1

Langkah 2: Verifikasi bahwa fitur rilis canary ujung ke ujung berfungsi

  1. Peroleh alamat IP publik dari gerbang masuk. Untuk informasi lebih lanjut, lihat Langkah 2: Dapatkan alamat IP gerbang masuk ASM.

  2. Jalankan perintah berikut untuk mengonfigurasi variabel lingkungan.

    xxx.xxx.xxx.xxx adalah alamat IP yang diperoleh di sublangkah 1.

    export ASM_GATEWAY_IP=xxx.xxx.xxx.xxx
  3. Verifikasi bahwa fitur rilis canary ujung ke ujung berfungsi.

    1. Jalankan perintah berikut untuk mengakses layanan di jalur s1.

      Dalam perintah, nilai dari x-asm-prefer-tag adalah s1, yaitu nama jalur s1 yang Anda konfigurasikan saat membuat jalur s1 di sublangkah 2 Langkah 1.

      for i in {1..100};  do curl   -H 'x-asm-prefer-tag: s1' -H'my-trace-id: x000'$i http://${ASM_GATEWAY_IP}/mock ;  echo ''; sleep 1; done;

      Keluaran yang diharapkan:

      -> mocka(version: v1, ip: 172.17.0.54)-> mockb(version: v1, ip: 172.17.0.129)-> mockc(version: v1, ip: 172.17.0.130)

      Keluaran menunjukkan bahwa trafik yang ditentukan oleh header HTTP x-asm-prefer-tag: s1 mengalir ke layanan yang relevan di jalur s1. Ini sesuai dengan harapan.

    2. Jalankan perintah berikut untuk mengakses layanan di jalur s2.

      Dalam perintah, nilai dari x-asm-prefer-tag adalah s2, yaitu nama jalur s2 yang Anda konfigurasikan saat membuat jalur s2 di sublangkah 2 Langkah 1.

      for i in {1..100};  do curl   -H 'x-asm-prefer-tag: s2' -H'my-trace-id: x000'$i http://${ASM_GATEWAY_IP}/mock ;  echo ''; sleep 1; done;

      Keluaran yang diharapkan:

      -> mocka(version: v2, ip: 172.17.0.9)-> mockb(version: v1, ip: 172.17.0.129)-> mockc(version: v2, ip: 172.17.0.128)

      Keluaran menunjukkan bahwa trafik yang ditentukan oleh header HTTP x-asm-prefer-tag: s2 mengalir ke layanan yang relevan di jalur s2. Ini sesuai dengan harapan. Ketika trafik ditujukan untuk layanan mockb yang tidak ada di jalur s2, trafik diteruskan ke layanan mockb di jalur dasar s1 sesuai dengan mekanisme fallback. Kemudian, trafik dikirim ke layanan mockc di jalur s2 seperti yang diharapkan.

    3. Jalankan perintah berikut untuk mengakses layanan di jalur s3.

      Dalam perintah, nilai dari x-asm-prefer-tag adalah s3, yaitu nama jalur s3 yang Anda konfigurasikan saat membuat jalur s3 di sublangkah 2 Langkah 1.

      for i in {1..100};  do curl   -H 'x-asm-prefer-tag: s3' -H'my-trace-id: x000'$i http://${ASM_GATEWAY_IP}/mock ;  echo ''; sleep 1; done;

      Keluaran yang diharapkan:

      mocka(version: v1, ip: 192.168.1.103)-> mockb(version: v3, ip: 192.168.1.120)-> mockc(version: v1, ip: 192.168.1.105)

      Keluaran menunjukkan bahwa trafik yang ditentukan oleh header HTTP my-request-id: s3 mengalir ke layanan yang relevan di jalur s3. Ini sesuai dengan harapan. Ketika trafik ditujukan untuk layanan mocka dan mockc yang tidak ada di jalur s3, trafik diteruskan ke layanan mocka dan mockc di jalur dasar s1 sesuai dengan mekanisme fallback.

Ubah jalur dasar dalam mode permissif

Catatan

Anda hanya dapat mengubah jalur dasar dalam grup jalur mode permissif yang berisi setidaknya dua jalur.

  1. Masuk ke Konsol ASM. Di panel navigasi sebelah kiri, pilih Service Mesh > Mesh Management.

  2. Di halaman Mesh Management, klik nama instance ASM. Di panel navigasi sebelah kiri, pilih Traffic Management Center > Traffic Lane.

  3. Di halaman Traffic Lane, klik tab grup jalur untuk mana Anda ingin mengubah jalur dasar. Di bagian Traffic Rule Definition, klik ikon 238D682D-C76F-4c7c-974E-501245431A86.png di sebelah Baseline Lane.

  4. Pilih nama jalur dasar yang ingin Anda ubah dan klik confirm edit.