我们在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的位置:

  • Gateway

  • 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:
        - "*"
    

  • Service protocol selection


  • 手动协议(protocol)选择


  • grpc
  • grpc
  • 网站
  • http
  • http2
  • https
  • mongo
  • mysql *
  • redis *
  • tcp
  • tls
  • udp


  • kind: Service
    metadata:
      name: myservice
    spec:
      ports:
      - number: 80
        name: http2
    



    我认为应该很合适,您必须升级h2UpgradePolicy并将服务更改为http2。

    希望对您有帮助。

    10-08 19:31