全部產品
Search
文件中心

Alibaba Cloud Service Mesh:如何規範定義服務的協議類型

更新時間:Jun 30, 2024

阿里雲Service MeshASM支援代理任何TCP流量,包括HTTP、HTTPS、gRPC和原始TCP協議等,預設可以自動檢測HTTP和HTTP2流量。對於無法自動識別的協議,將被視為普通TCP流量。為了正確識別協議類型,提供額外的功能,在資料面叢集中必須規範定義服務的協議類型。本文介紹如何規範定義服務的協議類型。

背景資訊

ASM常見的協議類型包括HTTP、HTTP2、HTTPS、TCP、TLS、gRPC、gRPC-Web、Mongo、MySQL和Redis。ASM定義服務的協議類型有以下兩種方式。

方式一:使用服務連接埠名稱指定協議類型

在Service中的ports中,portname需設定為{協議名稱}{協議名稱}-{自訂尾碼}。例如服務的9090連接埠是gRPC協議類型,可以設定portnamegrpc-demo;服務的3306連接埠是MySQL資料庫協議,可以設定portnamemysql。YAML樣本如下:

kind: Service
metadata:
  name: myservice
spec:
  ports:
  - port: 9090
    name: grpc-demo
  - port: 3306
    name: mysql

方式二:使用服務連接埠的appProtocol指定協議類型

若您的阿里雲Service MeshASM版本≥v1.8.6,且使用的資料面叢集為阿里雲Container ServiceKubernetes(版本≥v1.18)或者社區版本Kubernetes(版本≥v1.18),可以使用Service的appProtocol指定協議類型。指定協議類型為HTTPS的YAML樣本如下:

kind: Service
metadata:
  name: myservice
spec:
  ports:
   -port: 3306
    name: database
    appProtocol: https
說明

ports.appProtocol的生效優先順序高於ports.name