通过在 Compute Engine 上使用自动扩缩脚本或运行时服务,您可以自动执行持续集成和持续部署 (CI/CD) 流水线。 不过,由于这些资源在查询全球 API 端点时严重依赖于全球性资源定义,因此这种方法可能会在多区域架构中引入单点故障。
为了降低这种风险,您可以将服务配置为访问全球资源的区域视图。通过向计算工作负载运行所在的确切区域内的区域化只读端点发送 GET 和
LIST 请求,您的服务可以将其 API 使用与全球控制平面或其他区域中可能发生的服务中断隔离开来。如需详细了解
区域化只读端点和弹性最佳实践,请参阅使用区域视图进行弹性控制平面读取。
准备工作
-
如果您尚未设置身份验证,请进行设置。身份验证用于验证您的身份,以便访问 Google Cloud 服务和 API。如需从本地开发环境运行
代码或示例,您可以通过选择以下选项之一向
Compute Engine 进行身份验证:
{1
选择标签页以了解您打算如何使用本页面上的示例:
控制台
当您使用 Google Cloud 控制台访问 Google Cloud 服务和 API 时,无需设置身份验证。
gcloud
-
安装 Google Cloud CLI。 安装完成后, 初始化 Google Cloud CLI,方法是运行以下命令:
gcloud init如果您使用的是外部身份提供方 (IdP),则必须先 使用联合身份登录 gcloud CLI。
-
- 设置默认区域和可用区。
REST
如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的 凭证。
安装 Google Cloud CLI。
如果您使用的是外部身份提供方 (IdP),则必须先 使用联合身份登录 gcloud CLI。
如需了解详情,请参阅 身份验证文档 中的 Google Cloud 使用 REST 时进行身份验证。
所需角色
如需获得以区域方式访问全球资源所需的权限,请让管理员向您授予项目或操作系统映像的 Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1) IAM 角色。如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
此预定义角色可提供 以区域方式访问全球资源所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
以区域方式访问全球资源需要以下权限:
-
如需获取项目的区域视图:
compute.projects.get针对项目的 -
如需获取操作系统映像的区域视图:
compute.images.get和compute.images.list针对项目或操作系统映像
项目资源
您可以使用 projectViews 只读端点获取全球项目资源的区域视图。
当您查询 projectViews 端点时,Compute Engine
会返回标准全球 compute.Project
资源对象。资源本身仍为全球资源。
获取项目资源的区域视图
您可以使用 Google Cloud CLI 或 REST API 获取全球项目的区域视图。
gcloud
如需通过特定
区域的控制平面描述全球项目,请运行
gcloud compute project-views describe 命令:
gcloud compute project-views describe \
--region=REGION \
--project=PROJECT_ID
替换以下内容:
REGION: API 请求的 Google Cloud 区域,例如us-central1。PROJECT_ID:您的项目 ID。
REST
如需通过特定
区域的控制平面描述全球项目,请向
projectViews方法发送 GET 请求。
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/projectViews"
替换以下内容:
PROJECT_ID:您的项目 ID。REGION:API 请求的 Google Cloud 区域,例如us-central1。
API 会直接返回标准 compute.Project 资源表示法。
{
"kind": "compute#project",
"id": "1234567890123456789",
"creationTimestamp": "2024-01-15T10:00:00.000-08:00",
"name": "my-project12345",
"commonInstanceMetadata": {
"items": [
{
"key": "example-key",
"value": "example-value"
}
]
},
"selfLink": "https://www.googleapis.com/compute/v1/projects/my-project12345",
"defaultServiceAccount": "SERVICE_ACCOUNT_EMAIL"
}
操作系统映像资源
您可以使用 imageViews 只读端点获取全球操作系统映像资源的区域视图。
当您查询 imageViews 端点时,Compute Engine
会返回标准全球 compute.Image
资源对象。资源本身仍为全球资源。
获取操作系统映像资源的区域列表
您可以使用 gcloud CLI 或 REST API 列出可通过特定区域端点供您的项目使用的所有全球操作系统映像。
gcloud
如需使用区域端点列出全球操作系统映像,请运行
gcloud compute image-views list 命令:
gcloud compute image-views list \
--region=REGION \
--project=PROJECT_ID
替换以下内容:
REGION:API 请求的 Google Cloud 区域,例如us-central1。PROJECT_ID:您的项目 ID。
REST
如需使用区域端点列出全球操作系统映像,请向 imageViews 方法发送 GET 请求:
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/imageViews"
替换以下内容:
PROJECT_ID:您的项目 ID。REGION:API 请求的 Google Cloud 区域,例如us-central1。
获取操作系统映像资源的区域视图
您可以使用 gcloud CLI 或 REST API 通过区域端点检索特定全球操作系统映像的信息。
gcloud
如需使用区域端点检索全球操作系统映像的详细信息,请运行
gcloud compute image-views describe命令:
gcloud compute image-views describe IMAGE_NAME \
--region=REGION \
--project=PROJECT_ID
替换以下内容:
IMAGE_NAME:全球操作系统映像资源的名称。REGION:API 请求的 Google Cloud 区域,例如us-central1。PROJECT_ID:您的项目 ID。
REST
如需使用区域端点检索全球操作系统映像的详细信息,请向特定的
imageViews 方法发送 GET 请求:
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/imageViews/IMAGE_NAME"
替换以下内容:
PROJECT_ID:您的项目 ID。REGION: API 请求的 Google Cloud 区域,例如us-central1。IMAGE_NAME:全球操作系统映像资源的名称。
API 会直接返回标准 compute.Image 资源表示法。
{
"kind": "compute#image",
"id": "1234567890123456789",
"creationTimestamp": "2024-01-15T10:00:00.000-08:00",
"name": "my-image12345",
"sourceDisk": "https://www.googleapis.com/compute/v1/projects/my-project12345/zones/us-central1-a/disks/my-disk12345",
"sourceDiskId": "1234567890123456789",
"sourceType": "RAW",
"status": "READY",
"selfLink": "https://www.googleapis.com/compute/v1/projects/my-project12345/global/images/my-image12345"
}
后续步骤
- 详细了解项目资源。
- 详细了解操作系统映像。
- 了解如何排查全球资源的区域视图问题。