All Products
Search
Document Center

Alibaba Cloud Service Mesh:Delegasi VirtualService di ASM

Last Updated:Jun 22, 2026

Untuk aplikasi dengan banyak layanan mikro atau aturan routing yang kompleks, satu VirtualService dapat menjadi besar dan sulit dipelihara. Untuk mengatasi hal ini, Service Mesh (ASM) menyediakan mekanisme delegate yang memungkinkan Anda membagi aturan routing ke beberapa resource VirtualService. Pendekatan ini mengurangi risiko yang terkait dengan perubahan konfigurasi routing. Topik ini menggunakan aplikasi Bookinfo sebagai contoh untuk menunjukkan cara mendefinisikan aturan routing untuk aplikasi tersebut dengan menggunakan beberapa VirtualService.

Prasyarat

Informasi latar belakang

Di Service Mesh (ASM), Anda menggunakan VirtualService untuk mendefinisikan aturan routing yang mengontrol bagaimana traffic diarahkan ke layanan. Dalam praktiknya, memelihara satu VirtualService besar bisa sangat menantang. Setiap penyesuaian routing mengharuskan Anda memodifikasi VirtualService tersebut, yang sering menyebabkan konflik pembaruan, redundansi, dan ketergantungan erat dalam konfigurasi routing. Salah konfigurasi pada aturan apa pun dapat memengaruhi layanan di kluster bidang data dan bahkan mengganggu seluruh akses layanan.

ASM memperluas resource VirtualService dengan mekanisme delegate untuk memisahkan aturan routing. Anda dapat membagi satu VirtualService menjadi satu VirtualService utama (primary) dan satu atau beberapa VirtualService sekunder (secondary). VirtualService utama mendefinisikan aturan keseluruhan, sedangkan VirtualService sekunder mendefinisikan aturan routing rinci untuk bagian tertentu dari aplikasi. VirtualService utama biasanya dikelola oleh administrator pusat, sedangkan VirtualService sekunder dikelola oleh pemilik layanan masing-masing. Pemisahan tanggung jawab ini secara signifikan mengurangi risiko perubahan aturan routing dan meningkatkan efisiensi penerapan serta peningkatan layanan secara independen.

Catatan

  • ASM tidak mendukung Delegate bersarang. Parameter Delegate hanya dapat diatur di VirtualService utama. Misalnya, jika parameter Delegate diatur baik di VirtualService utama maupun di VirtualService sekunder, maka baik VirtualService utama maupun sekunder tidak akan berlaku.

  • HTTPMatchRequest di VirtualService sekunder harus merupakan subset dari kondisi match yang sesuai di VirtualService utama. Jika tidak, terjadi konflik dan HTTPRoute tidak akan berlaku.

  • Anda hanya dapat menentukan field delegate ketika field route dan redirect pada HTTP route VirtualService utama kosong. Field hosts pada VirtualService sekunder harus kosong. Aturan routing dari VirtualService sekunder digabungkan dengan aturan dari VirtualService utama.

Langkah 1: Konfigurasi Gateway

  1. Masuk ke Konsol ASM.

  2. Di panel navigasi sebelah kiri, pilih Service Mesh > Mesh Management.

  3. Pada halaman Mesh Management, temukan instans ASM yang ingin Anda konfigurasi. Klik nama instans ASM tersebut atau klik Manage di kolom Actions.

  4. Pada halaman detail instans ASM, pilih ASM Gateways > Gateway di panel navigasi sebelah kiri. Pada halaman yang muncul, klik Create from YAML.

  5. Pilih Namespaces, tempel konten YAML berikut ke editor, lalu klik Create. Topik ini menggunakan namespace default sebagai contoh.

    apiVersion: networking.istio.io/v1alpha3
    kind: Gateway
    metadata:
      name: bookinfo-gateway
    spec:
      selector:
        istio: ingressgateway # use istio default controller
      servers:
      - port:
          number: 80
          name: http
          protocol: HTTP
        hosts:
        - "*"

    Atur number ke 80 agar layanan Bookinfo dapat menerima koneksi HTTP masuk atau keluar pada Port 80.

Langkah 2: Konfigurasi VirtualService utama

  1. Masuk ke Konsol ASM.

  2. Di panel navigasi sebelah kiri, pilih Service Mesh > Mesh Management.

  3. Pada halaman Mesh Management, temukan instans ASM yang ingin Anda konfigurasi. Klik nama instans ASM tersebut atau klik Manage di kolom Actions.

  4. Pada halaman detail instans ASM, pilih Traffic Management Center > VirtualService di panel navigasi sebelah kiri. Pada halaman yang muncul, klik Create from YAML.

  5. Pilih Namespaces, tempel konten YAML berikut ke editor, lalu klik Create. Topik ini menggunakan namespace default sebagai contoh.

    Berikut ini membuat delegate untuk vs-1 dan vs-2, di mana vs-1 mengharuskan permintaan berisi /log untuk mengakses layanan Bookinfo, dan vs-2 mengharuskan permintaan berisi / untuk mengakses layanan Bookinfo.

    apiVersion: networking.istio.io/v1beta1
    kind: VirtualService
    metadata:
      name: bookinfo
      namespace: default
    spec:
      gateways:
        - bookinfo-gateway
      hosts:
        - '*'
      http:
        - delegate:
            name: vs-1
            namespace: ns1
          match:
            - uri:
                prefix: /log
        - delegate:
            name: vs-2
            namespace: ns1
          match:
            - uri:
                prefix: /

    Parameter dalam field delegate:

    • name: Nama delegate.

    • namespace: Namespace delegate.

Langkah 3: Konfigurasi VirtualService anak

  1. Masuk ke Konsol ASM.

  2. Di panel navigasi sebelah kiri, pilih Service Mesh > Mesh Management.

  3. Pada halaman Mesh Management, temukan instans ASM yang ingin Anda konfigurasi. Klik nama instans ASM tersebut atau klik Manage di kolom Actions.

  4. Pada halaman detail instans ASM, pilih Traffic Management Center > VirtualService di panel navigasi sebelah kiri. Pada halaman yang muncul, klik Create from YAML.

  5. Pilih Namespaces, tempel konten berikut ke editor, lalu klik Create.

    Topik ini menggunakan namespace ns1 sebagai contoh. Untuk informasi selengkapnya tentang cara membuat namespace, lihat Manage global namespaces.

    apiVersion: networking.istio.io/v1beta1
    kind: VirtualService
    metadata:
      name: vs-1
      namespace: ns1
    spec:
      http:
        - match:
            - uri:
                exact: /login
            - uri:
                exact: /logout
          route:
            - destination:
                host: productpage.default.svc.cluster.local
                port:
                  number: 9080
    • metadata: Harus konsisten dengan parameter delegate dari VirtualService utama untuk mengikat parameter delegate. Dalam contoh ini, metadata konsisten dengan parameter delegate dari vs-1, yang mengikat parameter delegate dari vs-1.

    • match: Menentukan kondisi filter untuk permintaan. Dalam contoh ini, uri diatur ke exact: /login dan exact: /logout. Hal ini memungkinkan Anda masuk dan keluar dari layanan Bookinfo.

  6. Sekali lagi, pilih ns1 Namespaces, tempel konten YAML berikut ke editor, lalu klik Create.

    apiVersion: networking.istio.io/v1beta1
    kind: VirtualService
    metadata:
      name: vs-2
      namespace: ns1
    spec:
      http:
        - match:
            - uri:
                exact: /productpage
            - uri:
                prefix: /static
            - uri:
                prefix: /api/v1/products
          route:
            - destination:
                host: productpage.default.svc.cluster.local
                port:
                  number: 9080
    • metadata: Nilainya harus konsisten dengan parameter delegate dari VirtualService utama. Ini digunakan untuk mengikat parameter delegate. Dalam contoh ini, nilainya konsisten dengan parameter delegate dari vs-2, yang berarti diikat ke delegate dari vs-2.

    • match: Menentukan kondisi filter untuk permintaan. Dalam contoh ini, permintaan harus berisi /productpage, /static, atau /api/v1/products.

Verifikasi hasil

  1. Buka browser web Anda dan akses http://<alamat IP ingress gateway>/productpage.

    Halaman berikut ditampilkan. Hal ini menunjukkan bahwa permintaan ke layanan Bookinfo yang berisi parameter /productpage berhasil, dan VirtualService untuk vs-2 telah dikonfigurasi dengan benar. Untuk informasi tentang cara mendapatkan alamat gateway ASM, lihat Obtain the ingress gateway IP address. Halaman berhasil memuat aplikasi BookInfo Sample dan menampilkan halaman produk buku The Comedy of Errors. Bagian Book Details di sebelah kiri mencantumkan bidang seperti Type, Pages, Publisher, Language, dan ISBN. Bagian Book Reviews di sebelah kanan menampilkan beberapa ulasan pengguna dan peringkat bintang. Hal ini mengonfirmasi bahwa aplikasi service mesh dapat diakses melalui gateway ASM.

  2. Klik Sign in di pojok kanan atas halaman. Pada kotak dialog yang muncul, masukkan username dan password untuk masuk ke layanan Bookinfo.

    Halaman diperbarui ke status login. Hal ini mengonfirmasi bahwa VirtualService vs-1 telah dikonfigurasi dengan benar. Setelah Anda masuk, username Anda (misalnya, jason) dan tautan sign out muncul di pojok kanan atas, yang mengonfirmasi keberhasilan proses login.