All Products
Search
Document Center

Microservices Engine:Rutekan traffic WebSocket dengan gateway cloud-native

Last Updated:Jun 22, 2026

Protokol WebSocket memungkinkan komunikasi dua arah persisten berlatensi rendah antara klien dan server. Saat Anda mengakses layanan WebSocket dari luar kluster Kubernetes, gateway cloud-native MSE menerima dan meneruskan permintaan ke layanan backend yang sesuai berdasarkan aturan routing yang telah ditentukan. Tutorial ini menjelaskan cara men-deploy aplikasi WebSocket di kluster Container Service for Kubernetes (ACK) dan menggunakan gateway cloud-native MSE untuk penerusan traffic.

Prasyarat

Langkah 1: Deploy aplikasi WebSocket

Untuk instruksi lengkap, lihat Buat workload stateless menggunakan Deployment.

Tutorial ini menggunakan metode service discovery native Kubernetes. Resource API Service deklaratif mendaftarkan layanan backend ke CoreDNS. Layanan backend contoh menyediakan beberapa titik akhir WebSocket. Terapkan konfigurasi YAML berikut di kluster ACK Anda:

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: sockbin
  name: sockbin-app
  namespace: default
spec:
  progressDeadlineSeconds: 600
  replicas: 2
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: sockbin
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: sockbin
    spec:
      containers:
        - image: therebelrobot/sockbin
          imagePullPolicy: Always
          name: sockbin
          ports:
            - containerPort: 4080
              protocol: TCP
          resources:
            limits:
              cpu: 500m
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: sockbin
  name: sockbin-service
  namespace: default
spec:
  ports:
    - name: http
      port: 4080
      protocol: TCP
      targetPort: 4080
  selector:
    app: sockbin
  sessionAffinity: None
  type: NodePort

Langkah 2: Rutekan traffic WebSocket

Tambahkan kluster ACK sebagai sumber layanan untuk gateway, lalu tambahkan layanan Sockbin.

Tambahkan sumber layanan

  1. Masuk ke Konsol MSE, lalu pilih wilayah di bilah navigasi atas.

  2. Di panel navigasi kiri, pilih Cloud-native Gateway > Gateways. Di halaman Gateways, klik ID gateway tersebut.

  3. Di panel navigasi kiri, klik Routes. Lalu, klik tab Source.

  4. Klik Add Source, konfigurasikan parameter berikut, lalu klik OK.

    Parameter

    Deskripsi

    Source Type

    Pilih Container Service.

    ACK/ACK Serverless Cluster

    Pilih kluster tempat layanan backend Anda dideploy.

    Listen to Kubernetes Ingress

    Jika Anda mengaktifkan opsi ini, gateway cloud-native MSE secara otomatis mendengarkan perubahan pada resource Ingress dan menerapkan konfigurasi nama domain serta rute yang didefinisikan dalam resource tersebut.

    Jika Anda menonaktifkan opsi ini, gateway berhenti mendengarkan resource Ingress, dan semua konfigurasi yang sebelumnya diterapkan dari resource tersebut menjadi tidak valid.

    Catatan

    Nama domain dan rute yang Anda konfigurasikan secara manual di Konsol MSE memiliki prioritas lebih tinggi dibandingkan konfigurasi dari resource Ingress.

Tambahkan layanan

  1. Masuk ke Konsol MSE, lalu pilih wilayah di bilah navigasi atas.

  2. Di panel navigasi kiri, pilih Cloud-native Gateway > Gateways. Di halaman Gateways, klik ID gateway tersebut.

  3. Di panel navigasi kiri, klik Routes. Lalu, klik tab Services.

  4. Klik Create Service, konfigurasikan parameter berikut, lalu klik OK.

    Parameter

    Deskripsi

    Service Sources

    Pilih Container Service.

    Namespaces

    Pilih namespace dari kluster target.

    Services

    Pilih layanan Anda dari daftar.

Tambahkan rute Sockbin

  1. Masuk ke Konsol MSE, lalu pilih wilayah di bilah navigasi atas.

  2. Di panel navigasi kiri, pilih Cloud-native Gateway > Gateways. Di halaman Gateways, klik ID gateway tersebut.

  3. Di panel navigasi kiri, klik Routes. Lalu, klik tab Routes.

  4. Klik Add Route, konfigurasikan parameter berikut, lalu klik Save and Advertise.

    Parameter

    Deskripsi

    Route Name

    Masukkan sockbin-route.

    Domain Name

    Pilih nama domain default *.

    Path

    Untuk kondisi pencocokan, pilih Prefix. Untuk nilai path, masukkan /.

    Scenario

    Pilih Single Service.

    Backend Service

    Pilih target Service dan Service Port.

Verifikasi hasil

Anda dapat menggunakan salah satu metode berikut untuk memverifikasi bahwa layanan WebSocket tersedia.

Metode 1: Uji dengan UI Sockbin

  1. Masuk ke Konsol MSE, lalu pilih wilayah di bilah navigasi atas.

  2. Di panel navigasi kiri, pilih Cloud-native Gateway > Gateways. Di halaman Gateways, klik ID gateway tersebut.

  3. Di halaman Overview gateway, buka tab Gateway Ingress. Temukan titik akhir publik instans Server Load Balancer (SLB) terkait dan buka di browser.

    Gateway merutekan permintaan ke UI layanan Sockbin berdasarkan nama domain dan path dalam handshake WebSocket.

    Output:
    CONNECTING to / ...
    CONNECTED to /
    SENT: Hello Sockbin!
    RESPONSE: { "timestamp": "Tue May 31 2022 07:49:41 GMT+0000 (UTC)", "url": "http://sockb.in/", "reqData": "Hello Sockbin!" }

Metode 2: Uji dengan client WebSocket

Sebagai contoh, Anda dapat menggunakan client WebSocket Python untuk menerima respons server dengan penundaan 1 detik.

#!/usr/bin/env python
import asyncio
import websockets
async def hello():
    async with websockets.connect("ws://ip_addr/delay/1000") as websocket:
        await websocket.send("Hello Test")
        text = await websocket.recv()
        print(text)
asyncio.run(hello())