首页 > 解决方案 > 如何将 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。这合适吗?

标签: httpkuberneteshttp2kubernetes-ingressistio

解决方案


据我所知,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。


我希望它会帮助你。


推荐阅读