如何实现同VPC下两个Cloud Run实例组网:一对外一仅内部访问
问题分析与配置调整方案
一、需要调整的核心配置
1. 对齐Serverless VPC Access连接器的子网配置
Cloud Run设置Ingress: Internal后,仅允许同VPC内的资源(含通过VPC连接器接入的资源)访问。当前两个服务的连接器分属不同子网,需调整确保单体应用的请求能通过VPC抵达新服务:
- 方案一(推荐):将新服务的连接器切换为与单体应用一致的
default-internal
修改新服务配置如下:
保持Using Serverless VPC Access connector: default-internal Network: default Subnet: 10.8.0.0/28Traffic routing: route all traffic to the VPC即可,确保请求全走VPC链路。 - 方案二:若需保留新服务的子网,需确认同VPC内两个子网的路由默认打通(同VPC默认允许子网间通信),同时将单体应用的
Traffic routing改为route all traffic to the VPC,让单体的请求通过VPC连接器进入VPC后访问新服务子网。
2. 设置新服务的Ingress为Internal
直接更新新服务的Ingress控制:
Ingress Control: Internal
此配置会限制仅VPC内部资源、通过VPC连接器接入的资源及Google内部运维服务可访问该服务,彻底关闭公网入口。
3. 验证VPC防火墙规则
确认VPC防火墙允许两个子网间的通信:
- 放行来自单体应用子网(10.8.0.0/28)的流量访问新服务的服务端口
- 放行新服务的响应流量返回至单体应用子网
(同VPC默认规则已允许子网间全流量,若有自定义规则需检查是否存在拦截)
二、最佳实践
- 统一内部服务的VPC连接器:内部互访的Cloud Run服务优先使用同一VPC连接器或同子网的连接器,降低网络配置复杂度,减少跨子网的潜在问题。
- 严格控制Ingress范围:生产环境中内部服务必须设置
Ingress: Internal,杜绝公网暴露的安全风险。 - 按需配置流量路由:
- 仅需访问内部资源的服务,设置
Traffic routing: route only requests to private IPs to the VPC,节省VPC连接器带宽成本。 - 需完全隔离在VPC内的服务(禁止访问公网),设置
Traffic routing: route all traffic to the VPC,配合VPC防火墙限制公网访问。
- 仅需访问内部资源的服务,设置
- 定期审计网络配置:清理冗余的VPC连接器,收紧过度宽松的防火墙规则,确保网络安全合规。
- 启用VPC Service Controls(可选):对敏感服务,通过VPC Service Controls构建安全边界,进一步防止数据泄露。
内容的提问来源于stack exchange,提问作者Groovy Duke
相关产品推荐
相关产品推荐

