能否在Istio Gateway上启用TLS终止并启用HTTP/2?

3

在Istio网关上启用TLS(mTLS)终止时,是否可以启用HTTP/2?然后将流量转发到支持HTTP/2的应用程序。


如果您的 Web 服务器支持 HTTP2 协议,则不应该有任何问题。这里有一个由 @suren 创建的 答案,您可以按照它来全局修改 h2UpgradePolicy,将所有传入的 HTTP 1.1 连接升级为 HTTP2。 - Jakub
当 HTTP/2 请求到达时,TCP 连接将保持到 Istio Ingress 网关或 Web 应用程序? - Parviz Rozikov
据我所知,连接应该一直保持到 Web 应用程序。Ingress 网关将负责通过请求(如果是 http2)或将其从 http 升级到 http2(如果是 http)。 - Jakub
2个回答

0

是的,这是可能的。您的服务之间的Http 2是在 ALPN(在mTLS握手期间)中协商的。

然后,您可以通过将服务端口名称(协议选择)设置为http2,将来自旁路代理的流量转发到您的应用程序容器。

以下是适用于您的应用程序的示例服务:

kind: Service
metadata:
  name: myapp
spec:
  ports:
  - number: 8080
    name: http2    # protocol selection by name - important to have http2 here

0

如果您的 Web 服务器支持 HTTP2 协议,则不应该有任何问题。

当 HTTP/2 请求到来时,TCP 连接会一直保持到 Istio Ingress 网关或 Web 应用程序之间吗?

据我所知,连接应该一直保持到 Web 应用程序。Ingress 网关将负责通过请求(如果是 HTTP2)或将其从 HTTP1.1 升级到 HTTP2。


正如@suren在他的回答这里中提到的

您可以在Istio配置映射中设置h2UpgradePolicy,它将升级所有传入的http 1.1连接到http2,因此只有使用http2的连接才能通过。

非常重要:为使其正常工作,下游对等端前面的服务必须具有命名端口,并且必须称为http。

apiVersion: v1
kind: Service
metadata:
  name: demo
spec:
  ports:
  - name: http      #<- this parameter is mandatory to upgrade to HTTP2
    port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx

此外,还有一种方法可以使用 Destination Rule为特定的命名空间和Pod实现这个功能,您可以使用 ConnectionPoolSettings.HTTPSettings.H2UpgradePolicy来升级http1.1连接到http2。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接