×

OpenShift Serverless 只支持不安全路由或边缘终止路由。不安全路由或边缘终止路由不支持 OpenShift Container Platform 上的 HTTP/2。这些路由也不支持 gRPC,因为 gRPC 通过 HTTP/2 传输。如果您的应用程序使用这些协议,则必须直接使用入口网关调用应用程序。为此,您必须找到入口网关的公共地址和应用程序的特定主机。

使用 HTTP/2 和 gRPC 与无服务器应用程序交互

此方法适用于 OpenShift Container Platform 4.10 及更高版本。对于旧版本,请参阅以下部分。

前提条件
  • 在您的集群上安装 OpenShift Serverless Operator 和 Knative Serving。

  • 安装 OpenShift CLI (oc)。

  • 创建一个 Knative 服务。

  • 升级到 OpenShift Container Platform 4.10 或更高版本。

  • 在 OpenShift Ingress 控制器上启用 HTTP/2。

步骤
  1. serverless.openshift.io/default-enable-http2=true 注解添加到 KnativeServing 自定义资源

    $ oc annotate knativeserving <your_knative_CR> -n knative-serving serverless.openshift.io/default-enable-http2=true
  2. 添加注解后,您可以验证 Kourier 服务的 appProtocol 值是否为 h2c

    $ oc get svc -n knative-serving-ingress kourier -o jsonpath="{.spec.ports[0].appProtocol}"
    示例输出
    h2c
  3. 现在您可以使用 HTTP/2 协议上的 gRPC 框架进行外部流量,例如

    import "google.golang.org/grpc"
    
    grpc.Dial(
       YOUR_URL, (1)
       grpc.WithTransportCredentials(insecure.NewCredentials())), (2)
    )
    1 您的 ksvc URL。
    2 您的证书。