在Istio网关上启用TLS(mTLS)终止时,是否可以启用HTTP/2?然后将流量转发到支持HTTP/2的应用程序。
在Istio网关上启用TLS(mTLS)终止时,是否可以启用HTTP/2?然后将流量转发到支持HTTP/2的应用程序。
是的,这是可能的。您的服务之间的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
如果您的 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