9.7. HTTP2 と gRPC の使用
OpenShift Serverless はセキュアでないルートまたは edge-terminated ルートのみをサポートします。非セキュアなルートまたは edge-terminated ルートは OpenShift Container Platform で HTTP2 をサポートしません。gRPC は HTTP2 によって転送されるため、これらのルートは gRPC もサポートしません。アプリケーションでこれらのプロトコルを使用する場合は、Ingress ゲートウェイを使用してアプリケーションを直接呼び出す必要があります。これを実行するには、Ingress ゲートウェイのパブリックアドレスとアプリケーションの特定のホストを見つける必要があります。
9.7.1. HTTP2 および gRPC を使用したサーバーレスアプリケーションとの対話
この方法は、OpenShift Container Platform 4.10 以降が対象です。古いバージョンについては、以下のセクションを参照してください。
前提条件
- OpenShift Serverless Operator と Knative Serving をクラスターにインストールしている。
-
OpenShift CLI (
oc
) がインストールされている。 - Knative サービスを作成する。
- OpenShift Container Platform 4.10 以降をアップグレードする。
- OpenShift Ingress コントローラーで HTTP/2 を有効にする。
手順
serverless.openshift.io/default-enable-http2=true
アノテーションをKnativeServing
カスタムリソースに追加します。$ oc annotate knativeserving <your_knative_CR> -n knative-serving serverless.openshift.io/default-enable-http2=true
アノテーションが追加されたら、Kourier サービスの
appProtocol
値がh2c
であることを確認できます。$ oc get svc -n knative-serving-ingress kourier -o jsonpath="{.spec.ports[0].appProtocol}"
出力例
h2c
以下のように、外部トラフィックに HTTP/2 プロトコルで gRPC フレームワークを使用できるようになりました。
import "google.golang.org/grpc" grpc.Dial( YOUR_URL, 1 grpc.WithTransportCredentials(insecure.NewCredentials())), 2 )