http - 如何将 Istio Service Mesh 从 http 升级到 http2?
问题描述
我们在 Kubernetes 上并使用 Istio 服务网格。目前,网关中有 HTTPS 的 SSL 终止。我在 istio-proxy 日志中看到 HTTP 协议是 HTTP 1.1。
由于 HTTP 1.1 的各种优势,我想将其升级到 HTTP2。客户应该通过 SSL/TLS 调用我们的服务 HTTP2。
我正在使用此博客进行有关此主题的内部演示。
这些是瓶颈:
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 的网关文档中看到的示例。
我想知道:这是否允许来自浏览器(仅支持此模式)的 HTTP2 over TLS 连接?我可以像使用 HTTPS 一样提供 HTTP2 的 tls 详细信息吗?
2) 还有哪些其他需要更新的 Istio 配置?
3)这种变化会破坏目前使用http协议的微服务吗?我怎样才能减轻这种情况?
4)我正在阅读 DestinationRule 和upgrade policy。这合适吗?
解决方案
据我所知,istio 文档和 istio功能阶段(http2 处于稳定阶段)
1)这是否允许来自浏览器(仅支持此模式)的 HTTP2 over TLS 连接?我可以像使用 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:
- "*"
手动协议选择
可以通过命名服务端口名称手动指定协议:[-]。支持以下协议:
- grpc
- grpc
- 网络
- http
- http2
- https
- 蒙哥
- mysql*
- 雷迪斯*
- tcp
- tls
- UDP
*默认情况下禁用这些协议,以避免意外启用实验性功能。要启用它们,请配置相应的 Pilot 环境变量。
kind: Service
metadata:
name: myservice
spec:
ports:
- number: 80
name: http2
3)这种变化会破坏目前使用http协议的微服务吗?我怎样才能减轻这种情况?
4) 我正在阅读 DestinationRule 和升级政策。这合适吗?
我认为它应该很合适,您必须升级h2UpgradePolicy并将服务更改为 http2。
我希望它会帮助你。
推荐阅读
- python-3.x - 在 docker 容器中运行 pip install 适用于每个 python 包,除了依赖注入器
- angular - 按字母顺序排列下拉菜单
- python - ValueError:为 pd df 和 np.array 设置具有序列的数组元素
- android - Camera2 API 在 android Marshmallow 中不起作用
- excel - 无法将表格移动到 Workbook_SheetBeforeDelete 事件中的隐藏工作表
- git - Azure Pipelines:合并拉取请求源分支名称后运行 CI 构建?
- python - python中是否可以进行迭代计算?
- angular - 传单地图上绘制多边形的自定义颜色
- elasticsearch - 带有玩家排名的 Elasticsearch 排行榜
- ubuntu - Hadoop hdfs 中的安全模式