SuperAPI AI 工具集

gcp project migration

部署与运维

查看项目

更新于 10-15 21:42

技能介绍

用途:引导从一个 GCP 项目完整迁移到另一个 GCP 项目,覆盖数据库、存储、容器镜像与 Terraform 配置。

前提条件:两个项目均需 Owner/Editor 权限;已安装并认证 gcloud CLI;已安装 Docker(用于容器镜像迁移);Terraform 基础设施需先部署到新项目。

主要流程分七阶段:一、在新项目启用 sqladmin、run、artifactregistry、iamcredentials、cloudtasks、pubsub、storage、compute、vpcaccess、aiplatform 等 API;二、数据库迁移,先从旧项目导出 Cloud SQL 到 GCS 桶,再向新项目导入;三、GCS 桶迁移,先授予新账号读取旧桶权限,再创建新桶并用 gcloud storage rsync 同步;四、容器镜像迁移,先 gcloud auth configure-docker,再拉取旧镜像、打新标签并推送;五、修改 apps/infra/variables.tf 顶部的 project_id、region 变量,provider.tf 中 backend.bucket 需手动更改(Terraform 限制);六、更新 GitHub Secrets 的 GCP_WORKLOAD_IDENTITY_PROVIDER 与 GCP_SERVICE_ACCOUNT;七、修改 apps/api/src/lib/config.py 的 gcs_bucket_name,提交推送后由 GitHub Actions 自动部署。

还提供一次性自动化脚本:./.agent/skills/gcp-migration/scripts/migrate-gcp-project.sh --old-project OLD_PROJECT_ID --new-project NEW_PROJECT_ID --old-region your_old_region --new-region your_new_region

常见问题排查:Cloud Run Job 出现 TCP 连接错误通常因缺少 VPC Connector,需启用 vpcaccess API、创建连接器并附加到 Job;Direct VPC 与 VPC Connector 冲突时先 --clear-network 再添加连接器;密码认证失败可重置 Cloud SQL 用户密码;缺少环境变量时应使用 --update-env-vars 而非 --set-env-vars 以保留已有变量,必需 DATABASE_URL 与 JWT_SECRET_KEY。

限制:Terraform 的 backend.bucket 无法通过变量自动修改,需手动处理;迁移前需确保 Terraform 已部署到新项目;文档未说明具体费用、支持地区或与其它云平台的兼容性。