我们在Kubernetes上并使用Istio Service Mesh。当前,网关中有HTTPS的SSL终端。我在istio-proxy日志中看到HTTP协议(protocol)是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中看到的示例。
我想知道:这是否将允许来自浏览器(仅支持此模式)的HTTP2 over TLS连接?我可以像使用HTTPS一样提供HTTP2的tls详细信息吗?
2)还有哪些其他Istio配置要更新?
3)这个变化会中断当前正在使用http协议(protocol)的微服务吗?我该如何缓解呢?
4)我正在阅读有关DestinationRule和upgrade policy的信息。这很合适吗?
最佳答案
根据我的知识istio documentation和istio feature stages(处于稳定阶段的http2)
是的,它应该允许使用http2。
您可以选择应用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:
- "*"
手动协议(protocol)选择
kind: Service
metadata:
name: myservice
spec:
ports:
- number: 80
name: http2
我认为应该很合适,您必须升级h2UpgradePolicy并将服务更改为http2。
希望对您有帮助。