GCP Deployment Manager部署完成后如何调用HTTP端点或发布主题消息
GCP Deployment Manager 部署完成后触发动作的实现方案
GCP Deployment Manager 没有单独提供"部署完成后置钩子"的显式配置项,但有3种可直接落地的方案满足需求,不需要额外引入第三方工具:
- 使用Action类型资源作为部署流程最后一步
Deployment Manager 支持声明action类型的特殊资源,这类资源不会创建实体云资源,仅会在部署流程执行到对应步骤时调用指定API。你只需要给这个action资源配置metadata.dependsOn参数,显式依赖本次部署要创建的所有业务资源,就能保证它在所有资源部署完成后才执行。
常用的action配置可以直接实现:- 向Pub/Sub主题发布消息:使用
gcp-types/pubsub-v1:projects.topics.publish作为action类型,填入目标主题ID和消息内容即可,后续可以通过Pub/Sub的推送/拉取订阅触发Cloud Function、调用HTTP端点 - 直接触发Cloud Function:使用
gcp-types/cloudfunctions-v1:projects.locations.functions.call作为action类型,传入函数名和触发参数
如果需要调用公网HTTP端点,通过上述Pub/Sub或Cloud Function做一层转发即可。
注意:如果使用Action资源方案,记得给资源配置
create生命周期策略,限定该action仅在首次创建部署时执行,避免后续更新、删除部署时重复触发动作。 - 向Pub/Sub主题发布消息:使用
- 基于Cloud Logging日志路由触发
所有Deployment Manager的部署状态变更都会同步上报到Cloud Logging,你可以直接配置日志路由规则实现无侵入触发:- 设置日志过滤条件,匹配
resource.type="deployment" jsonPayload.operationType="deploy" jsonPayload.status="DONE",同时加上目标部署的名称过滤条件,避免误触发同项目下的其他部署 - 为匹配到的日志配置导出目标,支持直接发送到Pub/Sub主题、触发Cloud Function、推送HTTP请求到指定端点
这个方案不需要修改现有DM模板的任何内容,还可以额外配置匹配部署失败的日志做异常告警。
- 设置日志过滤条件,匹配
- 封装部署命令追加后续逻辑
如果你是通过脚本、CI/CD流水线执行部署,可以直接在gcloud deployment-manager deployments create/update命令执行返回成功后,追加执行你需要的逻辑:比如调用gcloud pubsub topics publish发消息、用curl请求目标HTTP端点、执行gcloud functions call触发函数,逻辑和Azure中通过az CLI追加Web请求的实现完全一致。
内容的提问来源于stack exchange,提问作者xaos_xv
相关产品推荐
相关产品推荐

