GKE可扩展服务代理需要访问哪些URL

时间:2019-05-27 03:25:24

标签: url google-kubernetes-engine grpc istio

我正在Google Kubenetes Engine中运行Istio。我的应用程序使用gRPC并具有可扩展服务代理容器以链接到Google Enpoints服务。

默认情况下,GKE上的Istio阻止所有出口请求,因为它需要从Istio网格外部请求一些数据,所以bu破坏了ESP容器。

ESP的日志告诉我,它正试图访问IP 169.254.169.254以获取一些元数据,因此我打开了Istio的出口通道以实现这一点,

但是,ESP接下来尝试的是“从推出服务中获取服务配置ID”。再次,它被阻止了,但是这次日志错误并没有告诉我它正在尝试访问的URL,仅告诉了路径。所以我不知道要打开哪个网址。

这是日志条目:

  

警告:正在重试(重试(总计= 2,连接=无,读取=无,重定向=无,   由'ProtocolError('Connection)断开的连接后,status = None))   已终止。”,错误(104,“对等方重置连接”))”:   /v1/services/rev79.endpoints.rev79-232812.cloud.goog/rollouts?filter=status=SUCCESS

那么谁能告诉我ESP需要访问哪些URL才能正常工作?

2 个答案:

答案 0 :(得分:1)

对于其他陷入此问题的人。

ESP需要访问两个单独的端点才能运行而不会崩溃。他们是

  • servicemanagement.googleapis.com(HTTPS)
  • 169.254.269.254(HTTP)

要正常运行,还需要

  • servicecontrol.googleapis.com(HTTPS)

如果您的Istio网格中有严格的出口筛选,则将需要两个ServiceEntry资源来实现此目的。

apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
  name: endpoints-cert
spec:
  hosts:
  - metadata.google # this field does not matter
  addresses:
  - 169.254.169.254/32
  ports:
  - number: 80
    name: http
    protocol: HTTP
  resolution: NONE
  location: MESH_EXTERNAL

---

apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
  name: endpoints-metadata
spec:
  hosts:
  - "servicemanagement.googleapis.com"
  - "servicecontrol.googleapis.com"
  ports:
  - number: 80 # may not be necessary
    name: http
    protocol: HTTP
  - number: 443
    name: https
    protocol: HTTPS
  resolution: DNS
  location: MESH_EXTERNAL

如果您使用的是出口网关,则您需要为以下两个配置额外的配置 这些端点。

答案 1 :(得分:0)

我最终通过使用关键词搜索路径的一部分,偶然发现了我想要的东西。 这看起来像ESP尝试访问的内容: https://servicemanagement.googleapis.com/v1/services/{serviceName}/rollouts/{rolloutId}

实际上,打开到该主机的路由会启动并运行ESP。