我正在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才能正常工作?
答案 0 :(得分:1)
对于其他陷入此问题的人。
ESP需要访问两个单独的端点才能运行而不会崩溃。他们是
要正常运行,还需要
如果您的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。