Service Mesh (ASM) peut rediriger tout trafic TCP, y compris HTTP, HTTPS, gRPC et TCP brut. Par défaut, ASM détecte automatiquement le trafic HTTP et HTTP/2 et traite le trafic non reconnu comme du TCP simple. Pour permettre à ASM d'identifier les protocoles et d'offrir des fonctionnalités supplémentaires, spécifiez le protocole de chaque service dans le cluster du plan de données.
Informations générales
ASM prend en charge les protocoles courants suivants : HTTP, HTTP/2, HTTPS, TCP, TLS, gRPC, gRPC-Web, Mongo, MySQL et Redis. Deux méthodes permettent de spécifier le protocole d'un service :
Méthode 1 : Définir le nom du port d'un service pour spécifier le protocole de service
Dans le champ ports d'un service, définissez le name de chaque port sur {Nom du protocole} ou {Nom du protocole}-{Suffixe personnalisé}. Dans l'exemple suivant, le port 9090 utilise le protocole gRPC ; son name est donc défini sur grpc-demo. Le port 3306 utilise le protocole MySQL ; son name est donc défini sur mysql :
kind: Service
metadata:
name: myservice
spec:
ports:
- port: 9090
name: grpc-demo
- port: 3306
name: mysql
Méthode 2 : Définir l'appProtocol d'un port de service pour spécifier le protocole de service
Pour utiliser cette méthode, votre instance ASM doit exécuter la version 1.8.6 ou ultérieure. Le cluster du plan de données doit être un cluster Alibaba Cloud Container Service for Kubernetes (ACK) ou un cluster Kubernetes open source exécutant Kubernetes 1.18 ou une version ultérieure. Définissez le champ appProtocol d'un port de service pour spécifier le protocole. L'exemple suivant spécifie HTTPS comme protocole de service :
kind: Service
metadata:
name: myservice
spec:
ports:
- port: 3306
name: database
appProtocol: https
ports.appProtocol est prioritaire sur ports.name.