Service Mesh (ASM) は、HTTP、HTTPS、gRPC、raw TCP など、あらゆる TCP トラフィックをプロキシできます。デフォルトでは、ASM が HTTP および HTTP2 トラフィックを自動検出し、認識できないトラフィックはプレーン TCP として処理します。ASM がプロトコルを識別して追加機能を提供できるように、データプレーンクラスター内のすべての Service のプロトコルを指定する必要があります。
背景情報
ASM は、HTTP、HTTP2、HTTPS、TCP、TLS、gRPC、gRPC-Web、Mongo、MySQL、Redis などの一般的なプロトコルをサポートしています。Service のプロトコルを指定する方法は 2 つあります:
方法 1:Service のポート名によるプロトコル指定
サービスの ports フィールドで、各 port の name を {プロトコル名} または {プロトコル名}-{カスタムサフィックス} に設定します。 次の例では、ポート 9090 は gRPC プロトコルを使用するため、その name は grpc-demo に設定され、ポート 3306 は MySQL プロトコルを使用するため、その name は mysql に設定されています:
kind: Service
metadata:
name: myservice
spec:
ports:
- port: 9090
name: grpc-demo
- port: 3306
name: mysql方法 2:サービスポートの appProtocol によるプロトコル指定
この方法を使用するには、ASM インスタンスが 1.8.6 以降で実行されている必要があります。データプレーンクラスターは Alibaba Cloud Container Service for Kubernetes (ACK) クラスター、または Kubernetes 1.18 以降を実行するオープンソース Kubernetes クラスターである必要があります。サービスポートの appProtocol フィールドを設定してプロトコルを指定します。次の例では、サービスポートのプロトコルとして HTTPS を指定しています:
kind: Service
metadata:
name: myservice
spec:
ports:
- port: 3306
name: database
appProtocol: httpsports.appProtocol は ports.name よりも優先されます。