You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Artifact Registry自动部署到Compute Engine?

解决方案

完全可以合并两个步骤,这里有两种最常用的实现方式:

方案1:直接扩展Cloud Build流程(最省事,适合绝大多数场景)

你不需要新增任何额外的GCP服务,只要在现有的Cloud Build配置里加一步即可:

  1. 先给Cloud Build的默认服务账号授权:给它分配目标VM的compute.instances.reset权限,或者直接授予roles/compute.instanceAdmin.v1角色,建议权限范围限定到你这台目标VM,避免权限溢出。
  2. 修改你的cloudbuild.yaml配置,在镜像推送至Artifact Registry的步骤后面,新增一个重启VM的步骤,示例配置如下:
steps:
  # 你原来的构建、推送镜像步骤保留
  - name: 'gcr.io/cloud-builders/docker'
    args: ['build', '-t', 'us-central1-docker.pkg.dev/你的项目ID/仓库名/镜像名:tag', '.']
  - name: 'gcr.io/cloud-builders/docker'
    args: ['push', 'us-central1-docker.pkg.dev/你的项目ID/仓库名/镜像名:tag']
  # 新增的重启VM步骤
  - name: 'gcr.io/cloud-builders/gcloud'
    args: ['compute', 'instances', 'reset', '你的VM名称', '--zone', 'VM所在可用区,比如us-central1-a']

配置完成后,只要你推送新代码触发构建,镜像推送成功后就会自动重启VM,拉取新镜像运行,完全不需要手动操作。

方案2:通过Eventarc监听Artifact Registry事件(解耦构建和部署流程)

如果你有多条构建流水线都往同一个Artifact Registry仓库推送镜像,不想把重启逻辑绑在某一条构建流程里,可以用这个方案:

  1. 配置Eventarc触发器,监听对应Artifact Registry仓库的新镜像推送事件。
  2. 触发目标可以选Cloud Function(在函数里写逻辑调用VM重启接口),也可以直接配置为调用Compute Engine的实例重置接口。
    这种方式不管是从哪里推送的新镜像,都会自动触发VM拉取新镜像部署。

额外优化建议

如果你不想每次都重启整台VM,可以给运行Container-Optimized OS的VM写个轻量的定时脚本,定期对比本地运行的容器镜像digest和Artifact Registry里的最新镜像digest,发现有更新就直接重启容器,不用重启整个VM,部署速度会更快。

内容的提问来源于stack exchange,提问作者manocormen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 11:09:01