GCP同项目VPC Service Controls下Cloud Composer与Cloud Functions的防火墙、DNS配置问题
同GCP项目下Cloud Composer与Cloud Functions叠加VPC Service Controls后服务异常排查指引
核心问题根源定位
- 私有DNS路由冲突:为Cloud Functions配置私有DNS时,若误解绑、覆盖原有为Cloud Composer创建的
googleapis.com私有托管区,会导致Composer核心组件(web服务器、SQL客户端、监控上报模块)无法解析GCP内部API端点,触发健康检查失败 - 常见场景:单独为Functions新建独立的
googleapis.com私有区域,未同步包含Composer依赖的sql-component.googleapis.com、monitoring.googleapis.com、composer.googleapis.com细分解析记录 - 防火墙规则配置覆盖:为Cloud Functions配置Serverless VPC访问对应的防火墙规则时,若误修改原有Composer节点的网络访问权限,会切断Composer节点到Cloud SQL实例、集群内部组件的连通性
- 常见场景:将原有允许Composer节点网段访问Cloud SQL
3306端口的规则,替换为仅允许Functions服务网段访问的规则 - VPC Service Controls边界权限错位:配置第二个服务的VPC SC规则时,若将原有已加入边界的Composer相关资源、服务身份移出访问范围,会触发SC策略的访问拦截,导致Composer组件的跨服务调用被阻断
- 镜像版本兼容问题:当前使用的
composer-1.16.3-airflow-1.10.15版本存在已知适配缺陷,Airflow内置组件默认通过公网出口访问Cloud Functions端点,未适配私有DNS解析逻辑,会在叠加SC规则时被拦截,进而判定整体环境不健康
两项服务共存的标准化配置流程
- 统一规划私有DNS配置
- 集中托管所有依赖的私有解析记录,不拆分独立DNS区域:将
googleapis.com、cloudfunctions.net、pkg.dev、gcr.io四类域名的解析记录全部纳入绑定VPC的私有托管区,同时补齐Composer依赖的Cloud SQL、监控、日志、Composer API的细分解析条目,避免域名路由优先级冲突 - 确认私有DNS区域的绑定范围覆盖Composer私有IP所在的整个VPC网段,不做网段级的拆分绑定
- 分层叠加防火墙规则
- 保留原有Composer网络规则:保留Composer节点到Cloud SQL
3306端口的出站规则、Composer Web Server8080端口的入站规则、节点到GCP私有API地址段的出站规则,不做源地址、目标地址、端口范围的修改 - 新增Functions专属规则:单独添加允许Serverless VPC Access Connector网段到VPC内资源的访问规则,不覆盖原有Composer规则的配置条目
- 统一配置VPC Service Controls服务边界
- 将项目内所有受保护资源统一纳入同一个SC服务边界:包括Cloud Composer环境、关联Cloud SQL实例、核心Cloud Storage桶、所有Cloud Functions服务、Artifact Registry仓库、底层GKE集群
- 配置统一的出入站权限,允许本项目内所有服务身份的互访,不为单个服务配置独立的高优先级拒绝规则
- 版本适配调整
- 针对
composer-1.16.3-airflow-1.10.15镜像版本,在Airflow配置中强制指定Cloud Functions的内部私有端点作为默认调用地址,避免组件走公网出口触发SC拦截
内容的提问来源于stack exchange,提问作者elaspog
相关产品推荐
相关产品推荐

