在 Compute Engine 上使用自動調度資源指令碼或執行階段服務,即可自動執行持續整合與持續部署 (CI/CD) 管道。不過,由於這些資源在查詢全域 API 端點時,會大量依附於全域資源定義,因此這種做法可能會在多區域架構中造成單一故障點。
如要降低這項風險,您可以設定服務,存取全域資源的區域檢視畫面。只要將 GET 和 LIST 要求傳送至運算工作負載所在區域的區域化唯讀端點,服務就能將 API 用量與全球控制層或其他區域的潛在服務中斷問題隔離開來。如要進一步瞭解區域性唯讀端點和復原最佳做法,請參閱「使用區域檢視畫面,確保控制層讀取作業具備復原能力」。
事前準備
-
如果尚未設定驗證,請先完成設定。驗證程序會確認您的身分,以便授予 Google Cloud 服務和 API 的存取權。如要從本機開發環境執行程式碼或範例,您可以選取下列其中一個選項,向 Compute Engine 進行驗證:
選取這個頁面上範例的預計用途分頁:
控制台
使用 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 進行驗證」。
必要的角色
如要取得以區域性方式存取全域性資源所需的權限,請要求管理員授予您專案或 OS 映像檔的 Compute 執行個體管理員 (v1) (roles/compute.instanceAdmin.v1) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
這個預先定義的角色具備以區域方式存取全域性資源所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:
所需權限
如要存取區域性全域資源,必須具備下列權限:
-
如要取得專案的區域檢視畫面:
compute.projects.get專案 -
如要取得 OS 映像檔的區域檢視畫面:
專案或 OS 映像檔的
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"
}
OS 映像檔資源
您可以使用 imageViews 唯讀端點,取得全域 OS 映像檔資源的區域檢視畫面。查詢 imageViews 端點時,Compute Engine 會傳回標準的全球 compute.Image 資源物件。資源本身仍為全域資源。
取得 OS 映像檔資源的區域清單
您可以使用 gcloud CLI 或 REST API,透過特定區域端點列出專案可用的所有全域 OS 映像檔。
gcloud
如要使用區域端點列出全域 OS 映像檔,請執行 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
如要使用區域端點列出全域 OS 映像檔,請對 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。
取得 OS 映像檔資源的區域檢視畫面
您可以使用 gcloud CLI 或 REST API,透過區域端點擷取特定全域 OS 映像檔的資訊。
gcloud
如要使用區域端點擷取全域 OS 映像檔的詳細資料,請執行 gcloud compute image-views describe 指令:
gcloud compute image-views describe IMAGE_NAME \
--region=REGION \
--project=PROJECT_ID
更改下列內容:
IMAGE_NAME:全域 OS 映像檔資源的名稱。REGION:API 要求的 Google Cloud 區域,例如us-central1。PROJECT_ID:您的專案 ID。
REST
如要使用區域端點擷取全域 OS 映像檔的詳細資料,請向特定 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:全域 OS 映像檔資源的名稱。
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"
}
後續步驟
- 進一步瞭解專案資源。
- 進一步瞭解 OS 映像檔。
- 瞭解如何排解全域資源區域檢視畫面的問題。