All Products
Search
Document Center

Alibaba Cloud Service Mesh:Mengakses layanan WebSocket melalui gerbang masuk

Last Updated:Jun 22, 2026

Topik ini menjelaskan cara mengakses layanan WebSocket di dalam mesh melalui gerbang masuk ASM.

Prasyarat

Langkah 1: Deploy aplikasi contoh

  1. Hubungkan ke kluster menggunakan kubectl. Untuk informasi selengkapnya, lihat Dapatkan file kubeconfig kluster dan gunakan kubectl untuk terhubung ke kluster.

  2. Buat file YAML bernama tornado.yaml dengan konten berikut.

    apiVersion: v1
    kind: Service
    metadata:
      name: tornado
      labels:
        app: tornado
        service: tornado
    spec:
      ports:
      - port: 8888
        name: http
      selector:
        app: tornado
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: tornado
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: tornado
          version: v1
      template:
        metadata:
          labels:
            app: tornado
            version: v1
        spec:
          containers:
          - name: tornado
            image: registry.cn-beijing.aliyuncs.com/aliacs-app-catalog/tornado:lastest
            imagePullPolicy: Always
            ports:
            - containerPort: 8888
    ---
  3. Jalankan perintah berikut untuk membuat aplikasi tornado.

    kubectl apply -f tornado.yaml

Langkah 2: Konfigurasikan aturan routing

  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. Buat Gateway.

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

    2. Atur Namespaces menjadi default, tempel konten berikut, lalu klik Create.

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

      Atur number menjadi 80 agar layanan WebSocket dapat menerima koneksi HTTP atau TCP masuk atau keluar pada Port 80.

  5. Buat VirtualService.

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

    2. Atur Namespaces menjadi default, tempel konten berikut, lalu klik Create.

      apiVersion: networking.istio.io/v1alpha3
      kind: VirtualService
      metadata:
        name: tornado
      spec:
        hosts:
        - "*"
        gateways:
        - tornado-gateway
        http:
        - match:
          - uri:
              prefix: /
          route:
          - destination:
              host: tornado
            weight: 100

      Mengatur hosts menjadi * memungkinkan permintaan apa pun untuk mengakses layanan WebSocket.

Langkah 3: Dapatkan alamat gerbang masuk

Konsol ASM

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

  2. Pada halaman Mesh Management, klik nama instans ASM. Di panel navigasi sebelah kiri, pilih ASM Gateways > Ingress Gateway.

  3. Pada halaman Ingress Gateway, temukan Service address.

Konsol ACK

  1. Masuk ke Konsol ACK. Di panel navigasi sebelah kiri, klik Clusters.

  2. Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi sebelah kiri, klik Network > Services.

  3. Di bagian atas halaman Hosts, pilih Namespaces dari daftar drop-down Namespace. Di kolom External IP, temukan alamat IP yang terkait dengan Port 80 untuk layanan istio-ingressgateway.

Langkah 4: Verifikasi akses layanan WebSocket

  1. Masukkan http://<alamat gerbang masuk> di empat browser berbeda.

    Halaman menampilkan judul tornado WebSocket example. Status WebSocket adalah open (ditandai dengan label hijau). Di bawahnya, halaman menampilkan sembilan entri data dalam tiga tabel dengan kolom No., id, dan value. Semua nilai awal adalah 0.

  2. Jalankan perintah berikut untuk mengirim permintaan ke layanan WebSocket.

    curl "http://<alamat gerbang masuk>/api?id=8&value=300"
    curl "http://<alamat gerbang masuk>/api?id=5&value=600"
    curl "http://<alamat gerbang masuk>/api?id=1&value=200"
    curl "http://<alamat gerbang masuk>/api?id=3&value=290"

    Data pada halaman layanan WebSocket di keempat browser diperbarui secara bersamaan dan menampilkan hasil yang identik.

Langkah 5: Beralih ke protokol wss

  1. Konfigurasikan Sertifikat server dan kunci privat untuk gerbang. Untuk informasi selengkapnya, lihat Langkah 1: Siapkan Sertifikat server dan kunci privat untuk multiple host.

    Pastikan Anda memiliki Secret bernama myexample-credential yang berisi Sertifikat dan kunci privat di namespace istio-system kluster ACK Anda.

  2. Modifikasi Gateway yang telah Anda buat di Langkah 2: Konfigurasikan aturan routing.

    Contoh YAML:

    apiVersion: networking.istio.io/v1alpha3
    kind: Gateway
    metadata:
      name: tornado-gateway
    spec:
      selector:
        istio: ingressgateway
      servers:
      - port:
          number: 80
          name: http
          protocol: HTTP
        hosts:
        - "*"
      - hosts:
        - "*"
        port:
          name: https
          number: 443
          protocol: HTTPS
        tls:
          credentialName: myexample-credential
          mode: SIMPLE

Langkah 6: Verifikasi akses layanan WebSocket melalui wss

  1. Modifikasi file hosts di mesin lokal Anda agar a.aliyun.com di-resolve ke alamat IP gerbang ASM. Hal ini memungkinkan Anda mengakses gerbang ASM menggunakan Nama domain yang tercantum dalam Sertifikat yang dikonfigurasi di Langkah 5.

  2. Di empat browser berbeda, buka https://a.aliyun.com.

    Halaman menampilkan judul tornado WebSocket example. Status WebSocket adalah open (ditandai dengan label hijau). Di bawahnya, halaman menampilkan sembilan entri data dalam tiga tabel dengan kolom No., id, dan value. Semua nilai awal adalah 0.

  3. Jalankan perintah berikut untuk mengirim permintaan ke layanan WebSocket.

    curl -k "https://<alamat gerbang masuk>/api?id=8&value=300"
    curl -k "https://<alamat gerbang masuk>/api?id=5&value=600"
    curl -k "https://<alamat gerbang masuk>/api?id=1&value=200"
    curl -k "https://<alamat gerbang masuk>/api?id=3&value=290"

    Data pada halaman layanan WebSocket di keempat browser diperbarui secara bersamaan dan menampilkan hasil yang identik.