GCP部署模式Skill deploying-on-gcp

此技能专注于在Google Cloud Platform (GCP)上构建和部署应用程序与基础设施,提供计算、存储、数据库、数据分析和机器学习服务的选型指南、架构模式和最佳实践。适用于云原生开发、数据管道设计、ML工作流实现和成本优化,关键词包括GCP、云计算、部署、架构、数据分析、机器学习、云原生、无服务器、Kubernetes、BigQuery、Vertex AI。

GCP 0 次安装 0 次浏览 更新于 3/23/2026

name: deploying-on-gcp description: 使用Google Cloud Platform (GCP)服务实现应用程序。当在GCP基础设施上构建时使用,选择计算/存储/数据库服务,设计数据分析管道,实现ML工作流,或使用BigQuery、Cloud Run、GKE、Vertex AI和其他GCP服务架构云原生应用程序。

GCP模式

使用Google Cloud Platform服务构建应用程序和基础设施,采用适当的服务选择、架构模式和最佳实践。

目的

此技能为Google Cloud Platform (GCP)服务提供决策框架和实施模式,涵盖计算、存储、数据库、数据分析、机器学习、网络和安全。它基于工作负载需求指导服务选择,并展示使用Terraform、Python SDK和gcloud CLI的生产就绪模式。

何时使用

在以下情况使用此技能:

  • 选择GCP计算服务(Cloud Run、GKE、Cloud Functions、Compute Engine、App Engine)
  • 选择存储或数据库服务(Cloud Storage、Cloud SQL、Spanner、Firestore、Bigtable、BigQuery)
  • 设计数据分析管道(BigQuery、Pub/Sub、Dataflow、Dataproc、Composer)
  • 实现ML工作流(Vertex AI、AutoML、预训练API)
  • 架构网络基础设施(VPC、负载均衡、CDN、Cloud Armor)
  • 设置IAM、安全和成本优化
  • 从AWS或Azure迁移到GCP
  • 构建多云或GCP优先架构

核心概念

GCP服务类别

计算选项:

  • Cloud Run: 用于无状态HTTP服务的无服务器容器(自动缩放到零)
  • GKE(Google Kubernetes Engine): 用于复杂编排的托管Kubernetes
  • Cloud Functions: 用于简单处理的事件驱动函数
  • Compute Engine: 用于完整操作系统控制的虚拟机
  • App Engine: 用于Web应用程序的平台即服务

存储与数据库:

  • Cloud Storage: 具有标准/近线/冷线/归档层的对象存储
  • Cloud SQL: 托管PostgreSQL/MySQL/SQL Server(最高96TB)
  • Cloud Spanner: 具有99.999% SLA的全局分布式SQL
  • Firestore: 具有实时同步的NoSQL文档数据库
  • Bigtable: 用于时间序列和IoT的宽列NoSQL(PB级)
  • AlloyDB: PostgreSQL兼容,性能提升4倍

数据与分析:

  • BigQuery: 无服务器数据仓库(PB级SQL分析)
  • Pub/Sub: 全局消息和事件流
  • Dataflow: 用于流和批处理的Apache Beam
  • Dataproc: 托管Spark和Hadoop集群
  • Cloud Composer: 用于工作流的托管Apache Airflow

AI/ML服务:

  • Vertex AI: 统一ML平台(训练、部署、监控)
  • AutoML: 用于标准任务的无代码ML
  • 预训练API: 视觉、自然语言、语音、翻译
  • TPUs: 用于大型模型训练的Tensor处理单元

决策框架:计算服务选择

需要在GCP中运行代码?
├─ HTTP服务?
│  ├─ 是 → 无状态?
│  │  ├─ 是 → Cloud Run(自动缩放到零)
│  │  └─ 否 → 需要Kubernetes? → GKE | Compute Engine
│  └─ 否(事件驱动)
│     ├─ 简单函数? → Cloud Functions
│     └─ 复杂编排? → GKE | Cloud Run Jobs

选择指南:

  • 首选: Cloud Run(除非需要状态或Kubernetes)
  • 需要Kubernetes: GKE Autopilot(托管)或Standard(完全控制)
  • 简单事件: Cloud Functions(最长执行60分钟)
  • 完全控制: Compute Engine(具有自定义配置的VM)

决策框架:数据库选择

选择数据库类型:
├─ 关系型(SQL)
│  ├─ 需要多区域? → Cloud Spanner
│  ├─ PostgreSQL + 高性能? → AlloyDB
│  └─ 标准RDBMS → Cloud SQL(PostgreSQL/MySQL/SQL Server)
│
├─ 文档型(NoSQL)
│  ├─ 具有离线同步的移动/Web? → Firestore
│  └─ 灵活模式,无离线? → MongoDB Atlas(市场)
│
├─ 键值型
│  ├─ 时间序列或IoT数据? → Bigtable
│  └─ 缓存层? → Memorystore(Redis/Memcached)
│
└─ 分析型
   └─ PB级SQL分析 → BigQuery

决策框架:存储选择

需要存储类型?
├─ 对象/文件
│  ├─ 频繁访问 → Cloud Storage(标准)
│  ├─ 月度访问 → Cloud Storage(近线)
│  ├─ 季度访问 → Cloud Storage(冷线)
│  └─ 年度访问 → Cloud Storage(归档)
│
├─ 块存储 → 持久磁盘(SSD/标准/极端)
└─ 共享文件系统 → Filestore(NFS)

GCP vs AWS vs Azure服务映射

类别 GCP AWS Azure
无服务器容器 Cloud Run Fargate 容器实例
Kubernetes GKE EKS AKS
函数 Cloud Functions Lambda Functions
虚拟机 Compute Engine EC2 虚拟机
对象存储 Cloud Storage S3 Blob存储
SQL数据库 Cloud SQL RDS SQL数据库
NoSQL文档 Firestore DynamoDB Cosmos DB
数据仓库 BigQuery Redshift Synapse
消息传递 Pub/Sub SNS/SQS 服务总线
ML平台 Vertex AI SageMaker 机器学习

架构模式

模式1:无服务器Web应用程序

使用案例: 具有数据库和缓存的无状态HTTP API

架构:

互联网 → Cloud负载均衡器 → Cloud Run → Cloud SQL(PostgreSQL)
                                            → Memorystore(Redis)
                                            → Cloud Storage

关键服务:

  • Cloud Run用于API服务(自动缩放容器)
  • Cloud SQL用于事务数据
  • Memorystore用于缓存
  • Cloud Storage用于文件上传

详细Terraform配置见references/compute-services.md

模式2:数据分析平台

使用案例: 实时事件处理和分析

架构:

数据源 → Pub/Sub → Dataflow → BigQuery → Looker/Tableau
                          ↓
                     Cloud Storage(暂存)

关键服务:

  • Pub/Sub用于事件摄取(至少一次交付)
  • Dataflow用于流处理(Apache Beam)
  • BigQuery用于分析(分区表、聚类)
  • Cloud Storage用于暂存和备份

BigQuery优化模式见references/data-analytics.md

模式3:ML管道

使用案例: 端到端机器学习工作流

架构:

训练数据(GCS) → Vertex AI训练 → 模型注册表 → Vertex AI端点
                                                              ↓
                                                         预测

关键服务:

  • Vertex AI Workbench用于笔记本开发
  • Vertex AI训练用于自定义模型(GPU/TPU支持)
  • Vertex AI端点用于模型服务(自动缩放)
  • Vertex AI管道用于编排(Kubeflow)

ML实现示例见references/ml-ai-services.md

模式4:GKE微服务平台

使用案例: 具有多个服务的复杂编排

架构:

互联网 → Cloud负载均衡器 → GKE集群
                                   ├─ 入口控制器
                                   ├─ 服务网格(可选)
                                   ├─ 微服务A
                                   ├─ 微服务B
                                   └─ 微服务C

关键特性:

  • GKE Autopilot(完全托管节点)或Standard(自定义配置)
  • 工作负载身份用于安全访问GCP服务
  • 具有私有Google访问的私有集群
  • 配置连接器用于通过Kubernetes管理GCP资源

GKE设置和最佳实践见references/compute-services.md

最佳实践

成本优化

计算:

  • 对可预测工作负载使用承诺使用折扣(57%折扣)
  • 对容错工作负载使用Spot VM(60-91%折扣)
  • Cloud Run在空闲时缩放到零(无费用)
  • GKE Autopilot仅对pod资源收费,不对节点

存储:

  • 使用适当的Cloud Storage类(标准/近线/冷线/归档)
  • 启用对象生命周期管理以转移冷数据
  • 使用冷线或归档存档备份(比标准便宜99%)

数据:

  • BigQuery:使用分区和聚类表
  • 仅查询所需列(避免SELECT *
  • 使用BI Engine进行缓存(最多10TB免费)
  • 对重度BigQuery使用考虑固定费率定价

详细成本策略见references/cost-optimization.md

安全基础

IAM最佳实践:

  • 遵循最小权限原则
  • 对应用程序使用服务账户,而非用户账户
  • 为GKE工作负载启用工作负载身份(无服务账户密钥)
  • 使用Secret Manager管理密钥,而非环境变量

网络安全:

  • 使用私有Google访问(无需公共IP访问GCP服务)
  • 为私有实例启用Cloud NAT用于出站互联网
  • 实现VPC服务控制以保护数据防外泄
  • 使用身份感知代理(IAP)进行零信任访问

数据安全:

  • 启用静态和传输中加密(默认)
  • 对敏感数据使用客户管理的加密密钥(CMEK)
  • 为数据保护实现VPC服务控制边界
  • 对所有项目启用审计日志

全面安全模式见references/security-iam.md

高可用性

多区域策略:

  • Cloud Storage:使用多区域位置(US、EU、ASIA)
  • Cloud SQL:启用区域高可用(自动故障转移)
  • Cloud Spanner:使用多区域配置(99.999% SLA)
  • 全局负载均衡:路由到最近的健康后端

备份与灾难恢复:

  • Cloud SQL:启用自动备份和时间点恢复
  • 持久磁盘:计划快照备份
  • Cloud Storage:为关键数据启用版本控制
  • BigQuery:使用表快照进行时间旅行

网络和高可用模式见references/networking.md

快速参考

常见gcloud命令

# 项目管理
gcloud projects list
gcloud config set project 项目ID

# Cloud Run
gcloud run deploy 服务名称 --image 镜像URL --region 区域
gcloud run services list

# GKE
gcloud container clusters create-auto 集群名称 --region 区域
gcloud container clusters get-credentials 集群名称 --region 区域

# Cloud Storage
gsutil mb gs://桶名称
gsutil cp 文件 gs://桶名称/

# BigQuery
bq mk 数据集名称
bq query --use_legacy_sql=false 'SELECT * FROM 数据集.表 LIMIT 10'

# Cloud SQL
gcloud sql instances create 实例名称 --database-version=POSTGRES_15 --region=区域
gcloud sql connect 实例名称 --user=postgres

完整命令参考见examples/gcloud/common-commands.sh

Python SDK快速入门

# Cloud Storage
from google.cloud import storage
client = storage.Client()
bucket = client.bucket('my-bucket')
blob = bucket.blob('file.txt')
blob.upload_from_filename('local-file.txt')

# BigQuery
from google.cloud import bigquery
client = bigquery.Client()
query = "SELECT * FROM `project.dataset.table` LIMIT 10"
results = client.query(query).result()

# Pub/Sub
from google.cloud import pubsub_v1
publisher = pubsub_v1.PublisherClient()
topic_path = publisher.topic_path('project', 'topic-name')
future = publisher.publish(topic_path, b'message data')

完整Python示例见examples/python/

Terraform快速入门

# 提供者配置
terraform {
  required_providers {
    google = {
      source  = "hashicorp/google"
      version = "~> 5.0"
    }
  }
}

provider "google" {
  project = "my-project-id"
  region  = "us-central1"
}

# Cloud Run服务
resource "google_cloud_run_service" "api" {
  name     = "api-service"
  location = "us-central1"

  template {
    spec {
      containers {
        image = "gcr.io/project/api:latest"
      }
    }
  }
}

完整Terraform示例见examples/terraform/

服务选择速查表

需求 推荐服务 替代方案
无状态HTTP API Cloud Run App Engine
复杂编排 GKE Autopilot GKE Standard
事件处理 Cloud Functions Cloud Run Jobs
对象存储 Cloud Storage N/A
关系型数据库 Cloud SQL AlloyDB, Spanner
NoSQL文档 Firestore MongoDB Atlas
时间序列数据 Bigtable N/A
数据仓库 BigQuery N/A
消息队列 Pub/Sub N/A
流处理 Dataflow Dataproc
批处理 Dataflow Dataproc
ML训练 Vertex AI 在GKE上自定义
缓存 Memorystore Redis N/A

与其他技能的集成

相关技能:

  • 基础设施即代码: 使用Terraform配置GCP资源(见examples/terraform/
  • Kubernetes操作: 在GKE上部署和管理应用程序
  • 构建CI管道: 使用Cloud Build进行到Cloud Run或GKE的CI/CD
  • 密钥管理: 使用Secret Manager进行敏感配置
  • 可观测性: 使用Cloud Monitoring和Cloud Logging进行指标和日志
  • 数据架构: 使用BigQuery和Cloud Storage设计数据湖和仓库
  • MLOps模式: 使用Vertex AI实现ML管道
  • AWS模式: 比较AWS和GCP服务等价物用于多云
  • Azure模式: 比较Azure和GCP服务等价物

渐进披露

详细文档:

  • 计算服务:references/compute-services.md获取Cloud Run、GKE、Cloud Functions、Compute Engine和App Engine模式
  • 存储与数据库:references/storage-databases.md获取详细服务选择和配置
  • 数据分析:references/data-analytics.md获取BigQuery、Pub/Sub、Dataflow和Dataproc模式
  • ML/AI服务:references/ml-ai-services.md获取Vertex AI、AutoML和预训练API使用
  • 网络:references/networking.md获取VPC、负载均衡、CDN和Cloud Armor模式
  • 安全与IAM:references/security-iam.md获取IAM模式、工作负载身份和Secret Manager
  • 成本优化:references/cost-optimization.md获取详细成本降低策略

工作示例:

  • Terraform配置:examples/terraform/获取基础设施模板
  • Python SDK使用:examples/python/获取客户端库示例
  • gcloud CLI命令:examples/gcloud/common-commands.sh获取命令参考

关键决策摘要

选择GCP时:

  • 数据分析工作负载(BigQuery是同类最佳)
  • ML/AI应用程序(Vertex AI、TPUs、Google研究支持)
  • Kubernetes原生应用程序(GKE由Kubernetes创建者开发)
  • 无服务器容器(Cloud Run成熟且成本效益高)
  • 实时流(Pub/Sub + Dataflow)

GCP的独特优势:

  • BigQuery:无服务器、PB级、最快数据仓库
  • Cloud Run:最成熟的无服务器容器平台
  • GKE:最先进的托管Kubernetes(Autopilot模式)
  • Vertex AI:统一ML平台(训练、部署、监控)
  • 按秒计费和持续使用折扣(自动成本节省)

多区域推荐:

  • 生产工作负载:使用多区域以实现99.95%+ SLA
  • Cloud Storage:多区域用于全局访问
  • Cloud Spanner:多区域用于全局事务
  • 全局负载均衡:路由到最近的健康后端