O Service Mesh (ASM) atua como proxy para qualquer tráfego TCP, incluindo HTTP, HTTPS, gRPC e TCP puro. Por padrão, o ASM detecta automaticamente o tráfego HTTP e HTTP2 e trata o tráfego não reconhecido como TCP simples. Para que o ASM identifique os protocolos e ofereça recursos adicionais, especifique o protocolo de cada service no cluster do plano de dados.
Informações básicas
O ASM oferece suporte aos seguintes protocolos comuns: HTTP, HTTP2, HTTPS, TCP, TLS, gRPC, gRPC-Web, Mongo, MySQL e Redis. Há dois métodos para especificar o protocolo de um service:
Método 1: Definir o nome da porta de um service para especificar o protocolo do service
No campo ports de um service, defina o name de cada port como {Protocol name} ou {Protocol name}-{Custom suffix}. No exemplo a seguir, a porta 9090 utiliza o protocolo gRPC; portanto, seu name é definido como grpc-demo. A porta 3306 utiliza o protocolo MySQL; assim, seu name é definido como mysql:
kind: Service
metadata:
name: myservice
spec:
ports:
- port: 9090
name: grpc-demo
- port: 3306
name: mysql
Método 2: Definir o appProtocol de uma porta de service para especificar o protocolo do service
Para utilizar este método, sua instância do ASM deve executar a versão 1.8.6 ou posterior. O cluster do plano de dados precisa ser um cluster do Alibaba Cloud Container Service for Kubernetes (ACK) ou um cluster Kubernetes open source com o Kubernetes 1.18 ou superior. Defina o campo appProtocol de uma porta de service para especificar o protocolo. O exemplo a seguir define HTTPS como o protocolo do service:
kind: Service
metadata:
name: myservice
spec:
ports:
- port: 3306
name: database
appProtocol: https
O campo ports.appProtocol tem precedência sobre ports.name.