Tous les produits
Search
Centre de documentation

Microservices Engine:Acheminer le trafic WebSocket avec une passerelle cloud-native

Dernière mise à jour :Aug 11, 2026

WebSocket permet une communication bidirectionnelle persistante et à faible latence entre les clients et les serveurs. Lorsque vous accédez à un service WebSocket depuis l'extérieur d'un cluster Kubernetes, une passerelle cloud-native MSE reçoit les requêtes et les transfère vers le service backend approprié en fonction des règles de routage. Cette rubrique explique comment déployer une application WebSocket dans un cluster Container Service for Kubernetes (ACK) et acheminer le trafic via une passerelle cloud-native MSE.

Prérequis

Étape 1 : Déployer l'application WebSocket

Pour obtenir des instructions détaillées, consultez la rubrique Créer une charge de travail sans état à l'aide d'un déploiement.

Ce tutoriel utilise la découverte de service native de Kubernetes. Une ressource Service enregistre le backend auprès de CoreDNS. L'exemple de backend fournit plusieurs endpoints WebSocket. Appliquez la configuration YAML suivante dans votre cluster ACK :

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

Étape 2 : Acheminer le trafic WebSocket

Ajoutez le cluster ACK en tant que source de service pour la passerelle, puis ajoutez le service Sockbin.

Ajouter une source de service

  1. Connectez-vous à la console MSE, puis sélectionnez une région dans la barre de navigation supérieure.

  2. Dans le volet de navigation de gauche, choisissez Cloud-native Gateway > Gateways. Sur la page Gateways, cliquez sur l'ID de la passerelle.

  3. Dans le volet de navigation de gauche, cliquez sur Routes. Ensuite, cliquez sur l'onglet Source.

  4. Cliquez sur Add Source, configurez les paramètres suivants, puis cliquez sur OK.

    Paramètre

    Description

    Source Type

    Sélectionnez Container Service.

    ACK/ACK Serverless Cluster

    Sélectionnez le cluster dans lequel votre service backend est déployé.

    Listen to Kubernetes Ingress

    Si vous activez cette option, la passerelle cloud-native MSE écoute automatiquement les modifications apportées aux ressources Ingress et applique les configurations de nom de domaine et de route définies dans ces ressources.

    Si vous désactivez cette option, la passerelle arrête d'écouter les ressources Ingress et toutes les configurations précédemment appliquées à partir de ces ressources deviennent invalides.

    Remarque

    Les noms de domaine et les routes que vous configurez manuellement dans la console MSE ont priorité sur les configurations provenant des ressources Ingress.

Ajouter un service

  1. Connectez-vous à la console MSE, puis sélectionnez une région dans la barre de navigation supérieure.

  2. Dans le volet de navigation de gauche, choisissez Cloud-native Gateway > Gateways. Sur la page Gateways, cliquez sur l'ID de la passerelle.

  3. Dans le volet de navigation de gauche, cliquez sur Routes. Ensuite, cliquez sur l'onglet Services.

  4. Cliquez sur Create Service, configurez les paramètres suivants, puis cliquez sur OK.

    |
    **Paramètre**
    |
    **Description**
    | | --- | --- | |
    **Service Sources**
    |
    Sélectionnez **Container Service**.
    | |
    **Namespaces**
    |
    Sélectionnez le namespace du cluster cible.
    | |
    **Services**
    |
    Sélectionnez votre service dans la liste.
    |















Ajouter une route Sockbin

  1. Connectez-vous à la console MSE, puis sélectionnez une région dans la barre de navigation supérieure.

  2. Dans le volet de navigation de gauche, choisissez Service Sources > Container Service. Sur la page Gateways, cliquez sur l'ID de la passerelle.

  3. Dans le volet de navigation de gauche, cliquez sur Namespaces. Ensuite, cliquez sur l'onglet Services.

  4. Cliquez sur Add Route, configurez les paramètres suivants, puis cliquez sur Save and Advertise.

    |
    **Paramètre**
    |
    **Description**
    | | --- | --- | |
    **Route Name**
    |
    Saisissez `sockbin-route`.
    | |
    **Domain Name**
    |
    Sélectionnez le nom de domaine par défaut *.
    | |
    **Path**
    |
    Pour la condition de correspondance, sélectionnez **Prefix**. Pour la valeur du chemin, saisissez `/`.
    | |
    **Scenario**
    |
    Sélectionnez **Single Service**.
    | |
    **Backend Service**
    |
    Sélectionnez le **Service** cible et le **Service Port** cible.
    |























Vérifier les résultats

Utilisez l'une des méthodes suivantes pour vérifier que le service WebSocket est disponible.

Méthode 1 : Tester avec l'interface utilisateur Sockbin

  1. Connectez-vous à la console MSE, puis sélectionnez une région dans la barre de navigation supérieure.

  2. Dans le volet de navigation de gauche, choisissez Cloud-native Gateway > Gateways. Sur la page Gateways, cliquez sur l'ID de la passerelle.

  3. Sur la page Overview de la passerelle, accédez à l'onglet Gateway Ingress. Recherchez l'endpoint public de l'instance Server Load Balancer (SLB) associée et ouvrez-la dans un navigateur.

    La passerelle achemine la requête vers l'interface utilisateur du service Sockbin en fonction du nom de domaine et du chemin dans le 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!" }

Méthode 2 : Tester avec un client WebSocket

Vous pouvez également utiliser un client WebSocket Python. L'exemple suivant reçoit une réponse du serveur avec un délai d'une seconde.

#!/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())