App Engine内部流量指什么?配置内部入口后同项目服务无法访问如何解决?
App Engine同项目服务内部访问方案解答
需求可行性说明
该配置需求可以实现,你遇到的访问失败问题是对App Engine内部流量的定义和默认路由规则理解有误导致的。
App Engine「内部流量」的定义
App Engine ingress规则中internal选项所识别的内部流量,仅包含以下几类:
- 来自同一VPC网络内的GCP资源流量(如Compute Engine实例、配置了VPC连接器的Cloud Functions、GKE集群节点)
- 经对等VPC、云专线接入到同一VPC的本地数据中心流量
- 同一项目/授权项目下的GCP托管服务内网流量(如Cloud Tasks、Cloud Scheduler、Pub/Sub推送请求)
默认配置下的App Engine服务出站流量走公网路径,不属于内部流量范畴
同项目App Engine互访失败的原因
你当前仅配置了目标服务的ingress规则为仅允许内部流量,但未调整源App Engine服务的出站路由:默认情况下App Engine的所有出站请求会通过公网出口发起,源IP为GCP的公网出口地址,不会走VPC内部链路,因此会被目标服务的ingress规则拦截。
正确配置步骤
你已经配置了VPC访问连接器,只需要给所有需要访问目标微服务的源App Engine服务追加VPC路由配置即可:
- 编辑源App Engine服务的
app.yaml配置文件,追加VPC访问连接器配置,指定所有出站流量走VPC连接器:
vpc_access_connector: name: projects/<你的项目ID>/locations/<对应区域>/connectors/<你的VPC连接器名称> egress_setting: all-traffic
- 重新部署源App Engine服务后,其发起的所有请求都会通过VPC内部链路传输,会被目标服务的
internalingress规则识别为合法内部流量,即可正常访问。
如果你使用的是App Engine灵活环境,只需要将源服务配置为加入同一VPC即可,无需额外配置出站路由规则。
内容的提问来源于stack exchange,提问作者Ioannis Deligiannis
相关产品推荐
相关产品推荐

