)
Encore 平台实战为 GCP Cloud Run 环境配置静态出站 IPCloud NAT VPC Egress 完整指南【免费下载链接】encoreThe infrastructure platform for the intelligence era项目地址: https://gitcode.com/GitHub_Trending/encor/encore本篇指南面向使用 Encore Cloud 将应用部署到 Google Cloud Run 的开发者讲解如何为应用配置稳定的出站 IP 地址静态 Egress IP。默认情况下 Cloud Run 的出站流量来自 Google 动态 IP 池第三方无法对你的应用做 IP 白名单通过将出站流量路由到环境 VPC并经绑定了预留静态 IP 的 Cloud NAT 网关转发即可获得固定出口地址。读完本文你将掌握在 GCP Console 中为 Encore 环境预留静态 IP 并创建 Cloud NAT 网关、在 Encore Cloud 控制台将 Cloud Run 的 VPC egress 切换为 All traffic、验证出口 IP 是否生效以及了解这一配置对成本、可用性与多区域架构的影响。问题背景为什么 Cloud Run 需要静态出站 IP默认情况下GCP Cloud Run 服务发往互联网的出站流量使用一批Google 官方拥有的 IP 地址IP 池这些地址会随时间变化。这带来一个直接后果第三方无法对你的应用做 IP 维度的白名单放行因为源 IP 是不确定的。典型受影响的场景包括对接合作伙伴或第三方 API需要对方按 IP 白名单放行你的调用连接要求基于 IP 做访问控制的外部数据库与外部服务满足合规要求——审计与合规体系往往要求已知的、可审计的出站地址。要获得稳定的出站 IP思路是让服务的出站流量先进入你环境的 VPC再经由绑定了预留静态 IP 的 Cloud NAT 网关转发到互联网。出站流量的源 IP 就固定为 NAT 网关上的静态地址。从 Encore 平台侧看这套方案与 Encore Cloud 的 GCP 基础设施模型天然契合Encore Cloud 为每个环境预置独立的 GCP 项目与 VPC 网络详见 GCP 基础设施文档所有资源部署在私有网络内外部流量只能通过指定的入口点进入Cloud NAT 恰好填补了私有网络出站这一环。整个配置只需要两步在 GCP Console中为 Encore 环境的 VPC 创建一个绑定预留静态 IP 的 Cloud NAT 网关在 Encore Cloud 控制台中将该环境的 Cloud Run 服务配置为将All traffic全部流量路由到 VPC。前置条件一个部署到GCP Cloud Run而非 GKE的 Encore 环境。Encore Cloud 支持在创建环境时选择 GCP Cloud Run 作为计算平台参见 环境创建与配置。拥有该 Encore 环境对应 GCP 项目的控制台访问权限。Encore Cloud 为每个环境提供独立专用的 GCP 项目你需要在这个项目里操作。对 Encore Cloud 控制台具备相应权限管理员角色可修改基础设施配置。Step 1创建 Cloud NAT 网关Encore Cloud 为每个环境预置了专用 GCP 项目与VPC 网络。Cloud NAT 网关必须创建在该项目内、且与你的环境部署所在的同一区域。1.1 预留静态外部 IP 地址打开 GCP Console选择 Encore 环境对应的 GCP 项目进入VPC network IP addresses点击Reserve external static IP address预留外部静态 IP 地址为 IP 命名例如encore-egress-ip将Type类型设为Regional区域级并选择你环境部署所在的区域点击Reserve预留。注意此处必须选择Regional类型因为 Cloud NAT 是区域级资源需要与 NAT 网关处于同一区域。1.2 创建 Cloud NAT 网关进入Network services Cloud NAT点击Get started / Create Cloud NAT gateway创建 Cloud NAT 网关为网关命名例如encore-egress-nat将NAT typeNAT 类型设为Public公网选择Network网络为 Encore Cloud 为该环境预置的 VPCRegion区域与上面预留 IP 的区域保持一致在Cloud Router部分创建一个新的路由器或选择同一网络、同一区域内已存在的路由器在Cloud NAT mappingCloud NAT 映射下保持默认的源选择方式使所有子网 IP 范围都能使用该网关将NAT IP addressesNAT IP 地址设为Manual手动并选择你在上一步预留的静态 IP点击Create创建。关键顺序提醒一定要先创建好 Cloud NAT 网关再执行下一步修改 VPC egress 设置。一旦出站流量被路由到 VPC对互联网的访问就完全依赖 NAT 网关——如果没有它你的服务将无法访问互联网。Step 2让 Cloud Run 的所有出站流量走 VPC默认情况下Cloud Run 只会把发往私有 IP 段的流量送进 VPC而发往互联网的流量仍直接经 Google 的 IP 池发出。要迫使互联网流量也走 NAT 网关需要修改 VPC egress 设置打开 Encore Cloud 控制台进入你的环境打开Infrastructure基础设施标签页找到 Cloud Run 配置将VPC egressVPC 出站流量设为All traffic所有流量应用Apply该变更。生效机制控制台中发起的基础设施变更会作为部署的一部分被应用。因此修改完成后需要触发一次新的部署或推送一次提交才能使设置生效。Encore Cloud 的部署遵循基础设施预置 → 部署容器 → 清理未用资源的三阶段流程详见 Managing Infrastructure 中的部署阶段说明。验证配置是否生效部署完成后从你的任意一个服务发起一次出站请求访问一个会回显调用方 IP 地址的服务例如https://api.ipify.org确认返回的 IP 与你预留的静态 IP 一致。一个简单的做法是在 Encore 服务中暴露一个端点返回外部服务回显的 IP或直接在日志中观察// 在某个服务中发起出站请求并记录响应 resp, err : http.Get(https://api.ipify.org) // 读取响应体即为当前出站 IP也可以从服务所在环境的日志中查看api.ipify.org这类探测请求的返回内容逐环境确认All traffic配置已生效。使用注意事项所有出站流量都会受影响将 egress 设为All traffic后每一条出站请求——包括对公共 API 的调用——都会经过 VPC 与 NAT 网关。这意味着会产生NAT 数据处理费用NAT data processing charges这部分成本需要纳入预算NAT 网关会成为你所有互联网访问的单点依赖一旦网关或相关网络组件异常服务将失去全部外网连通能力。每个区域与网络需要一个网关Cloud NAT 是区域级资源。如果一个环境横跨多个区域部署需要在每个区域分别创建绑定了该区域预留静态 IP 的网关。高并发场景需要多个静态 IP单个 NAT IP 对发往同一目标地址的并发连接数存在上限。如果你的应用有大量并发出站连接例如高吞吐的数据回传、Webhook 推送等建议为网关分配多个预留静态 IP并在第三方处将所有这些 IP 全部加入白名单。手动创建的资源会被保留Encore Cloud不会覆盖它不管理的资源。你在 GCP Console 手动创建的 Cloud NAT 网关与预留静态 IP在后续任何部署中都不会被改动或删除。这得益于 Encore Cloud 的 drift-aware漂移感知更新策略部署前它会拉取资源当前属性若检测到在控制台手动修改造成的漂移会将其视为当前状态更新内部表示而非强制回写详见 Infrastructure Configuration 中关于控制台手动配置的说明。GKE 环境特殊说明如果你的环境运行在GKEGoogle Kubernetes Engine而非 Cloud Run上VPC egress 设置并不适用——Kubernetes Pod 本身已经通过 VPC 网络出站。此时应检查该网络是否已存在 Cloud NAT 网关若存在只需给现有网关附加预留静态 IP即可切勿重复创建第二个网关。从源码与文档看实现依据以上操作与 Encore Cloud 的 GCP 基础设施模型完全一致相关依据可在本仓库文档中交叉印证环境级项目与 VPC 隔离Encore Cloud 为每个环境预置独立 GCP 项目与私有网络所有资源只能通过 VPC 内部通信见 GCP 基础设施文档。Cloud NAT 正是在这个 VPC 内为私有网络提供受控的出站路径。部署阶段与变更生效方式基础设施变更随部署分三阶段应用预置 → 部署 → 清理这与文档中修改 VPC egress 后需触发新部署的要求一致见 Managing Infrastructure 的 Deployment Phases 一节。手动配置不被覆盖Encore Cloud 采用 PATCH 式更新、避免全量同步、漂移感知更新三大策略保证控制台手动创建的 NAT/静态 IP 在后续部署中安全保留见 Infrastructure Configuration。与 AWS 侧的对称设计Encore 在 AWS 侧同样内置了出站网络组件——VPC 公有子网内包含 Internet Gateway 与 NAT Gateway为私有子网中的计算实例提供出站通路见 AWS 基础设施文档。GCP 侧之所以需要手动配置 Cloud NAT正是因为 Cloud Run 默认直连 Google IP 池而非像 AWS 私有子网那样天然走 NAT。总结步骤操作位置关键动作1aGCP Console环境专用项目VPC network IP addresses预留Regional静态外部 IP1bGCP Console环境专用项目Network services Cloud NAT创建PublicNAT绑定该静态 IP选择 Encore 环境的 VPC 与区域2Encore Cloud 控制台Infrastructure 标签页 → Cloud Run 配置 →VPC egress All traffic→ Apply3触发部署推送提交或手动部署等待三阶段部署完成4验证从服务发起出站请求用api.ipify.org等回显服务确认源 IP 为预留静态 IP配置完成后你的 Encore 应用GCP Cloud Run便拥有可被第三方白名单、可审计的固定出站 IP同时请谨记All traffic 影响全部出站流量、NAT 为区域级资源、高并发需多 IP、手动资源永不被覆盖这四条核心注意事项以便在生产环境中合理规划成本与高可用性。【免费下载链接】encoreThe infrastructure platform for the intelligence era项目地址: https://gitcode.com/GitHub_Trending/encor/encore创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考