首页 > 解决方案 > 为什么安全 GRPC 调用无法到达入口网关?

问题描述

我在 kubernetes (1.12.x) 中安装了 istio 1.22.2 并启用了 sds。我一直在关注这一点,我能够在入口网关处为正常服务(在 HTTP/1.1 上)进行 ssl 终止。我可以在网关的访问日志中看到它。

网关

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: mygateway
spec:
  selector:
    istio: ingressgateway # use istio default ingress gateway
  servers:
  - port:
      number: 31400
      name: tcp
      protocol: HTTPS
    tls:
      mode: SIMPLE
      credentialName: "review-this-co" # must be the same as secret
    hosts:
- "xyz.example.com"

但是,当通过安全通道使用 GRPC 时,我看不到任何访问日志。(Grpc 客户端失败)。我也期待 grpc 的类似行为(即在入口网关处的 ssl 终止)。

注意:如果网关配置如下

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: mygateway
spec:
  selector:
    istio: ingressgateway # use istio default ingress gateway
  servers:
  - port:
      number: 31400
      name: tcp
      protocol: GRPC
    hosts:
    - "xyz.example.com"

已使用网络负载均衡器(通过)

标签: kubernetesgrpcistiogrpc-java

解决方案


如果我理解正确,这里的事情是:

  • GRPC 目前在HTTP2类型传输上工作

  • 当前入口无法HTTP2

那么你确定你的客户正在使用HTTP1吗?因为否则它可能不起作用。

请让我知道这是否有帮助。


推荐阅读