$ oc annotate knativeserving <your_knative_CR> -n knative-serving serverless.openshift.io/default-enable-http2=true
OpenShift Serverless 只支持不安全路由或边缘终止路由。不安全路由或边缘终止路由不支持 OpenShift Container Platform 上的 HTTP/2。这些路由也不支持 gRPC,因为 gRPC 通过 HTTP/2 传输。如果您的应用程序使用这些协议,则必须直接使用入口网关调用应用程序。为此,您必须找到入口网关的公共地址和应用程序的特定主机。
此方法适用于 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)
)
1 | 您的 ksvc URL。 |
2 | 您的证书。 |