我们在Kubernetes上,并使用Istio Service Mesh。当前,网关中有用于HTTPS的SSL终端。我在istio-proxy日志中看到HTTP协议是HTTP 1.1。
由于其各种优点,我想将HTTP 1.1升级到HTTP2。客户应通过SSL / TLS调用我们的服务HTTP2。
我正在将此blog用于该主题的内部演示。
这些是瓶颈:
1)我想提出一个计划,以减少最少的更改。我了解我需要从
更新网关apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: bookinfo-gateway
spec:
selector:
istio: ingressgateway # use istio default controller
servers:
- port:
number: 443
name: https
protocol: HTTPS
hosts:
- "*"
tls:
mode: SIMPLE
serverCertificate: /etc/certs/server.pem
privateKey: /etc/certs/privatekey.pem
到
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: bookinfo-gateway
spec:
selector:
istio: ingressgateway # use istio default controller
servers:
- port:
number: 80
name: http2
protocol: HTTP2
hosts:
- "*"
tls:
mode: SIMPLE
serverCertificate: /etc/certs/server.pem
privateKey: /etc/certs/privatekey.pem
基于我在Istio's Gateway documentation中看到的示例。
我想知道:这是否将允许来自浏览器(仅支持此模式)的TLS上的HTTP2连接?我可以像使用HTTPS一样提供HTTP2的tls详细信息吗?
2)还有哪些其他Istio配置要更新?
3)此更改会中断当前正在使用http协议的微服务吗?我该如何缓解呢?
4)我正在阅读有关DestinationRule和upgrade policy的信息。这很合适吗?
基于我的知识,istio documentation和istio feature stages(处于稳定阶段的http2)
1)这是否将允许来自浏览器(仅支持此模式)的基于TLS的HTTP2连接?我可以像使用HTTPS一样提供HTTP2的tls详细信息吗?
是,应该允许使用http2。
2)还有哪些其他Istio配置要更新?
您可以选择应用http2的位置:
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: my-ingress
spec:
selector:
app: my-ingress-gateway
servers:
- port:
number: 80
name: **http2**
protocol: **HTTP2**
hosts:
- "*"
手动协议选择
可以通过将服务端口名称命名为[-]来手动指定协议。支持以下协议:
*这些协议默认情况下处于禁用状态,以避免意外启用实验功能。要启用它们,请配置相应的Pilot环境变量。
kind: Service
metadata:
name: myservice
spec:
ports:
- number: 80
name: http2
3)此更改会中断当前正在使用http协议的微服务吗?我该如何缓解呢?
4)我正在阅读有关DestinationRule和升级策略的信息。这很合适吗?
我认为应该很合适,您必须升级h2UpgradePolicy并将服务更改为http2。
希望对您有帮助。