Как обновить Istio Service Me sh с http на http2? - PullRequest
1 голос
/ 06 января 2020

Мы находимся в Kubernetes и используем Istio Service Me sh. В настоящее время в шлюзе есть SSL-терминация для HTTPS. В журналах istio-proxy я вижу, что протокол HTTP - это HTTP 1.1.

Я хочу обновить HTTP 1.1 до HTTP2 из-за его различных преимуществ. Клиенты должны вызывать наши службы HTTP2 через SSL / TLS.

Я использую этот блог для внутренней демонстрации этой темы c.

Это узкие места:

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 .

Я хочу знать: позволит ли это HTTP2 через TLS-соединения из браузеров (которые поддерживают только этот режим)? Могу ли я предоставить подробности tls для HTTP2, как я сделал с HTTPS?

2) Какие другие конфигурации Istio нужно обновить?

3) Будет ли это изменение нарушено Микросервисы, которые используют протокол http в настоящее время? Как я могу смягчить это?

4) Я читал о DestinationRule и политике обновления . Это хорошо подходит?

1 Ответ

2 голосов
/ 06 января 2020

Насколько я знаю, документация istio и istio этапы функций (http2 в стабильной фазе)

1) Это позволит HTTP2 через TLS-соединения из браузеров (которые поддерживают только этот режим)? Могу ли я предоставить подробности tls для HTTP2, как я сделал с HTTPS?

Да, это должно разрешить 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:
    - "*"


Ручной выбор протокола

Протоколы можно указать вручную, указав имя порта службы: [-]. Поддерживаются следующие протоколы:

  • grp c
  • grp c
  • web
  • http
  • http2
  • https
  • пн go
  • mysql*
  • redis *
  • tcp
  • tls
  • udp

* Эти протоколы по умолчанию отключены, чтобы избежать случайного включения экспериментальных функций. Чтобы включить их, настройте соответствующие переменные среды Pilot.


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

3) Будет ли это изменение нарушено Микросервисы, которые в настоящее время используют протокол http? Как я могу смягчить это?

4) Я читал о DestinationRule и политике обновления. Это хорошая подгонка?

Я думаю, что она подойдет, вам нужно обновить h2UpgradePolicy и изменить службы на http2.


Надеюсь, это поможет Вам.

...