如何規(guī)范定義服務(wù)的協(xié)議類型
阿里云服務(wù)網(wǎng)格ASM支持代理任何TCP流量,包括HTTP、HTTPS、gRPC和原始TCP協(xié)議等,默認(rèn)可以自動(dòng)檢測(cè)HTTP和HTTP2流量。對(duì)于無(wú)法自動(dòng)識(shí)別的協(xié)議,將被視為普通TCP流量。為了正確識(shí)別協(xié)議類型,提供額外的功能,在數(shù)據(jù)面集群中必須規(guī)范定義服務(wù)的協(xié)議類型。本文介紹如何規(guī)范定義服務(wù)的協(xié)議類型。
背景信息
ASM常見(jiàn)的協(xié)議類型包括HTTP、HTTP2、HTTPS、TCP、TLS、gRPC、gRPC-Web、Mongo、MySQL和Redis。ASM定義服務(wù)的協(xié)議類型有以下兩種方式。
方式一:使用服務(wù)端口名稱指定協(xié)議類型
在Service中的ports
中,port
的name
需設(shè)置為{協(xié)議名稱}
或{協(xié)議名稱}-{自定義后綴}
。例如服務(wù)的9090端口是gRPC協(xié)議類型,可以設(shè)置port
的name
為grpc-demo
;服務(wù)的3306端口是MySQL數(shù)據(jù)庫(kù)協(xié)議,可以設(shè)置port
的name
為mysql
。YAML示例如下:
kind: Service
metadata:
name: myservice
spec:
ports:
- port: 9090
name: grpc-demo
- port: 3306
name: mysql
方式二:使用服務(wù)端口的appProtocol指定協(xié)議類型
若您的阿里云服務(wù)網(wǎng)格ASM版本≥v1.8.6,且使用的數(shù)據(jù)面集群為阿里云容器服務(wù)Kubernetes(版本≥v1.18)或者社區(qū)版本Kubernetes(版本≥v1.18),可以使用Service的appProtocol
指定協(xié)議類型。指定協(xié)議類型為HTTPS的YAML示例如下:
kind: Service
metadata:
name: myservice
spec:
ports:
-port: 3306
name: database
appProtocol: https
ports.appProtocol
的生效優(yōu)先級(jí)高于ports.name
。