6.6. HTTP2 / gRPC を使用したサーバーレスアプリケーションとの対話
OpenShift Container Platform ルートは HTTP2 をサポートしません。gRPC も HTTP2 によるトランスポートが使用されるため、サポートされません。アプリケーションでこれらのプロトコルを使用する場合は、Ingress ゲートウェイを使用してアプリケーションを直接呼び出す必要があります。これを実行するには、Ingress ゲートウェイのパブリックアドレスとアプリケーションの特定のホストを見つける必要があります。
手順
- アプリケーションホストを検索します。「サーバーレスアプリケーションのデプロイメントの確認」の説明を参照してください。
Ingress ゲートウェイのパブリックアドレスは、以下のコマンドを使用して判別できます。
$ oc -n knative-serving-ingress get svc kourier
出力例
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kourier LoadBalancer 172.30.51.103 a83e86291bcdd11e993af02b7a65e514-33544245.us-east-1.elb.amazonaws.com 80:31380/TCP,443:31390/TCP 67m
パブリックアドレスは
EXTERNAL-IP
フィールドで表示され、この場合はa83e86291bcdd11e993af02b7a65e514-33544245.us-east-1.elb.amazonaws.com
になります。HTTP 要求のホストヘッダーを手動でアプリケーションのホストに手動で設定しますが、Ingress ゲートウェイのパブリックアドレスに対して要求自体をダイレクトします。
以下は、「サーバーレスアプリケーションのデプロイメントの確認」の手順で記載された情報を使用した例です。
$ curl -H "Host: hello-default.example.com" a83e86291bcdd11e993af02b7a65e514-33544245.us-east-1.elb.amazonaws.com
出力例
Hello Serverless!
Ingress ゲートウェイに対して要求を直接ダイレクトする間に、権限をアプリケーションのホストに設定して gRPC 要求を行うこともできます。
以下は、Golang gRPC クライアントの内容の例です。
grpc.Dial( "a83e86291bcdd11e993af02b7a65e514-33544245.us-east-1.elb.amazonaws.com:80", grpc.WithAuthority("hello-default.example.com:80"), grpc.WithInsecure(), )
注記以下の例のように、それぞれのポート (デフォルトでは 80) を両方のホストに追加します。