Service Mesh (ASM) では、HTTP、HTTPS、gRPC、TCP プロトコルに基づくトラフィックを含む、あらゆる TCP トラフィックを管理できます。ASM は HTTP および HTTP2 トラフィックを自動的に識別できます。プロトコルが自動的に識別できないトラフィックは、TCP トラフィックとして扱われます。ASM がプロトコルを識別して目的の機能を提供できるようにするには、データプレーン上のクラスター内のサービスのプロトコルを指定する必要があります。このトピックでは、サービスのプロトコルを標準的な方法で指定する方法について説明します。
背景情報
ASM は、HTTP、HTTP2、HTTPS、TCP、TLS、gRPC、gRPC-Web、Mongo、MySQL、Redis などの一般的なプロトコルをサポートしています。以下のいずれかの方法を使用して、サービスのプロトコルを指定できます。
方法 1:サービスのポート名を設定してサービスプロトコルを指定する
サービスの YAML ファイルで、ポートの名前を {プロトコル名} または {プロトコル名}-{カスタムサフィックス} の形式で設定します。 次の例では、gRPC プロトコルを使用するポート 9090 の名前は grpc-demo に設定され、MySQL プロトコルを使用するポート 3306 の名前は mysql に設定されています。
kind: Service
metadata:
name: myservice
spec:
ports:
- port: 9090
name: grpc-demo
- port: 3306
name: mysql方法 2:サービスポートの appProtocol を設定してサービスプロトコルを指定する
ASM インスタンスが V1.8.6 以降であり、Alibaba Cloud Container Service for Kubernetes (ACK) クラスターまたは V1.18 以降のオープンソース Kubernetes クラスターを使用している場合は、サービスポートの appProtocol を設定してサービスプロトコルを指定できます。次の例は、HTTPS をサービスプロトコルとして指定する YAML ファイルを示しています。
kind: Service
metadata:
name: myservice
spec:
ports:
-port: 3306
name: database
appProtocol: httpsappProtocol は name よりも優先順位が高くなります。