Compute Engine 多版本:演进稳定不破坏生产

Google 宣布 Compute Engine API 多版本功能正式全面可用(GA)。这套机制在保留原有 /v1 API 不变的前提下,引入基于日期的不可变版本快照,目的是让平台团队既能获得 API 稳定性,又能按自己的节奏采用新语义、安全默认值和现代化错误模型。

过去十多年,Compute Engine 的 /v1 API 一直是数百万 VM、GKE 集群和大型 AI 基础设施的控制面。单一版本曾带来一个承诺:写一次集成,多年运行不变。但随着架构规模变大,团队面临两难:生产负载要求绝对稳定和严格向后兼容,而客户希望更快拿到更安全的默认值、更强的区域韧性、机器可读的错误模型和更声明式的 API。在原有 /v1 上直接改进,可能破坏现有自动化。新版本模型把选择权交还给使用者。

新模型称为 interface-based versioning (IBV),对齐 Google AIP-185。与 /v1 并行推出两类版本:stable 版本(YYYY-MM-DD)按季度发布,第一个是 2026-09-01;一旦发布,schema 和行为默认值被冻结,不再引入破坏性变更,目前也没有 end-of-support 日期。preview 版本(YYYY-MM-DD-preview)节奏更快,例如 2026-10-01-preview,从某个 stable 版本分出,让开发者提前试用新特性和 API 设计,生命周期固定为一年。现有 /v1 API 继续完全支持,并仍是未指定日期版本时的默认入口;已有应用、脚本和集成无需修改。

调用方式上,日期版本继续使用 /compute/v1/ 基础 URL 路径,通过 HTTP 头 X-Goog-Api-Version 或查询参数 $apiVersion 指定目标版本。这样可以保持资源 selfLink URI 在工具和服务间一致。关键改进包括:在新版本中,AggregatedList 的全局查询默认启用 partial success,避免单个区域短暂故障导致整个全局列表请求失败;错误响应采用 google.rpc.ErrorInfo 结构,提供标准化的 reason、domain 和上下文元数据(比如请求无效版本 ID 时返回 supported_versions 列表),不再需要脆弱的正则解析错误字符串;新版本还能收紧过宽的旧 IAM 权限检查并引入更安全的配置默认值,同时不影响继续跑在 /v1 上的旧自动化;也为演进十年前的资源 schema 提供了通向现代 AIP 的清晰路径。

客户端接入方面,各语言的 SDK 发布会自动绑定特定的日期版本,但保留 /v1 的包命名空间(compute_v1、apiv1),枚举以字符串形式呈现,升级依赖不需要改 import 路径;preview 特性通过 -preview 的 SDK 版本体验。gcloud compute 指向捆绑的 stable 版本,新的 gcloud preview compute 命令组指向 preview 版本,旧的 gcloud compute、beta、alpha 脚本照常工作。Terraform 的 google provider 使用 stable 日期 API,google-beta 则使用 preview API,升级 provider 版本即可,HCL 脚本里不需要手动配置 API 版本。直接调 REST 的开发者用 HTTP 头或查询参数即可选择版本,并可获取对应版本的 Discovery Documents。

该功能已覆盖所有 Google Cloud 区域,初始 stable 版本为 2026-09-01,同时提供 2026-10-01-preview。官方文档包括 Compute Engine API Versioning Guide、Creating API Requests and Handling Responses 和 Compute Engine REST API Reference,并可在文档中用版本选择器查看新版本 schema。

Introducing Compute Engine API multi-versioning: Predictable evolution without breaking production

查看原文