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

Cloud Run配置备份:如何备份待删除服务的配置及关联资源

备份Cloud Run服务配置及关联工件的简便方法

以下是针对Cloud Run服务的完整备份方案,覆盖核心配置、关联镜像、触发器、权限及依赖资源:

1. 导出服务核心配置

用gcloud命令导出服务的完整配置(包含镜像、资源限制、环境变量、VPC配置等所有细节)到JSON文件:

gcloud run services describe YOUR_SERVICE_NAME --region YOUR_REGION --format=json > service-config-backup.json

这个文件可直接用于后续恢复服务(若需要)。

2. 备份关联容器镜像

Cloud Run服务依赖的容器镜像需单独备份,避免原仓库清理后丢失:

  • 复制到备份仓库(推荐用Artifact Registry):
    # 格式:gcloud artifacts docker tags add 原镜像地址 备份镜像地址
    gcloud artifacts docker tags add us-central1-docker.pkg.dev/your-project/repo/image:v1 us-central1-docker.pkg.dev/your-project/backup-repo/image:v1-backup
    
  • 导出到本地tar包(适合离线备份):
    docker pull YOUR_IMAGE_ADDRESS
    docker save YOUR_IMAGE_ADDRESS -o image-backup.tar
    

3. 备份关联资源

触发器配置

如果服务绑定了Cloud Run触发器(如Pub/Sub、Storage事件),导出触发器配置:

gcloud run triggers describe YOUR_TRIGGER_NAME --region YOUR_REGION --format=json > trigger-config-backup.json

IAM权限

导出服务的所有IAM绑定(角色、成员关系):

gcloud run services get-iam-policy YOUR_SERVICE_NAME --region YOUR_REGION --format=json > service-iam-backup.json

依赖的秘密/配置项

如果服务引用了Secret Manager或Config Map,需单独备份:

  • 备份Secret Manager中的秘密:
    gcloud secrets versions access latest --secret=YOUR_SECRET_NAME > secret-backup.txt
    
  • 备份关联的Config Map:
    # 先获取服务关联的Config Map列表
    gcloud run services describe YOUR_SERVICE_NAME --region YOUR_REGION --format="value(spec.template.spec.containers[0].envFrom)" > configmap-refs.txt
    # 逐个导出Config Map
    gcloud configmaps describe YOUR_CONFIGMAP_NAME --namespace cloud-run-system --format=json > configmap-backup.json
    

4. 批量备份脚本(多场景适用)

如果需要处理多个服务,可使用以下bash脚本批量完成备份:

#!/bin/bash
REGION="us-central1"
# 替换为你要备份的服务列表
TARGET_SERVICES=("service-a" "service-b" "service-c")

for SERVICE in "${TARGET_SERVICES[@]}"; do
    # 创建单独的备份目录
    mkdir -p "cloud-run-backups/$SERVICE"
    
    # 导出服务核心配置
    gcloud run services describe $SERVICE --region $REGION --format=json > "cloud-run-backups/$SERVICE/config.json"
    
    # 导出IAM权限
    gcloud run services get-iam-policy $SERVICE --region $REGION --format=json > "cloud-run-backups/$SERVICE/iam.json"
    
    # 备份容器镜像
    IMAGE=$(gcloud run services describe $SERVICE --region $REGION --format="value(spec.template.spec.containers[0].image)")
    docker pull $IMAGE
    docker save $IMAGE -o "cloud-run-backups/$SERVICE/image.tar"
    
    # 导出关联触发器
    TRIGGER_LIST=$(gcloud run triggers list --region $REGION --filter="serviceName=$SERVICE" --format="value(name)")
    for TRIGGER in $TRIGGER_LIST; do
        gcloud run triggers describe $TRIGGER --region $REGION --format=json > "cloud-run-backups/$SERVICE/trigger-$TRIGGER.json"
    done
done

5. 备份验证

  • 检查导出的JSON文件是否包含spec.template.spec.containers[0].image、env、resources等关键字段;
  • 确认镜像备份可正常导入(本地tar包可通过docker load -i image-backup.tar验证);
  • 核对IAM绑定文件中的角色和成员是否与当前服务权限一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 02:10:31