Terraform重建其他状态文件引用的资源是否会导致引用中断?
Terraform跨状态引用资源重建问题解答
1. 资源重建是否会导致服务停机
会。
微服务仓库销毁重建Cloud Function时,该资源的唯一标识符、访问endpoint等属性会发生变化。负载均衡仓库的NEG、后端服务当前绑定的是旧资源的属性值,在你未更新负载均衡配置前,所有转发到该后端的流量都会请求到已经被销毁的旧资源,直接导致服务不可用。
2. 是否需要在两个仓库分别执行操作
是,标准操作顺序如下:
- 首先在微服务仓库执行
terraform init(仅当provider、模块、远程状态配置发生变更时需要,否则可跳过),再执行terraform apply,等待Cloud Function重建完成,新的资源属性同步到远程状态。 - 之后到负载均衡仓库执行
terraform init(同上,仅配置变更时需要),再执行terraform apply,Terraform会自动刷新data数据源拉取微服务远程状态的最新属性,更新NEG和后端服务配置,恢复服务可用性。
3. 更优的解决方案
- 调整资源边界,减少跨状态依赖:将微服务对应的后端服务、NEG等和微服务强绑定的资源,从公共负载均衡仓库拆分到微服务仓库单独管理。公共负载均衡仓库仅维护顶层转发规则、代理、SSL证书等全局资源,微服务仓库只需将自身维护的NEG关联到公共代理即可,修改Cloud Function时可以直接在微服务仓库内同步更新NEG配置,无需操作公共仓库。
- 使用云厂商原生的稳定引用能力:针对GCP Cloud Function场景,可使用基于服务名称的Serverless NEG,只要Cloud Function的名称、所属项目、区域不变,即使资源重建,Serverless NEG也会自动关联到最新的Cloud Function实例,无需修改负载均衡侧配置,也不会出现服务中断。
- 实现蓝绿/滚动部署避免停机:在微服务仓库配置
create_before_destroy生命周期规则,重建Cloud Function时先创建新版本资源,再触发负载均衡配置更新将流量切到新版本,最后销毁旧版本资源,全程无服务中断。 - 自动化跨依赖仓库的同步流程:通过CI/CD流程配置触发规则,微服务仓库执行
terraform apply成功后,自动触发公共负载均衡仓库的plan和apply流程,无需人工手动执行两个仓库的操作,降低人为疏漏风险。
内容的提问来源于stack exchange,提问作者deniable_encryption
相关产品推荐
相关产品推荐

