Cloud Deploy 支援分析工作,可使用 Google Cloud Observability 根據指標和其他資料產生的警告,這些資料也來自 Google Cloud Observability。不過,您也可以擴充 Cloud Deploy,使用其他指標供應商。本文說明如何設定及使用分析作業,以及自訂容器的相關規定,包括分析所選供應商指標的邏輯。
事前準備
-
登入 Google 帳戶。
如果還沒有帳戶,請 註冊新帳戶。
-
安裝 Google Cloud CLI。
-
如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
-
執行下列指令,初始化 gcloud CLI:
gcloud init 啟用 Compute Engine 和 Cloud Deploy API (如果尚未啟用):
啟用 API 時所需的角色
如要啟用 API,您必須具備
serviceusage.services.enable權限。如果您建立了專案,可能已透過擁有者角色 (roles/owner) 取得這項權限。否則,您可以透過服務使用情形管理員角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色。gcloud services enable clouddeploy.googleapis.com
compute.googleapis.com -
安裝 Google Cloud CLI。
-
如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
-
執行下列指令,初始化 gcloud CLI:
gcloud init 啟用 Compute Engine 和 Cloud Deploy API (如果尚未啟用):
啟用 API 時所需的角色
如要啟用 API,您必須具備
serviceusage.services.enable權限。如果您建立了專案,可能已透過擁有者角色 (roles/owner) 取得這項權限。否則,您可以透過服務使用情形管理員角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色。gcloud services enable clouddeploy.googleapis.com
compute.googleapis.com
必要的角色
如要取得建立及使用分析作業所需的權限,請要求管理員在專案帳戶中授予下列 IAM 角色:
- Cloud Deploy Job Runner (
roles/clouddeploy.jobRunner) - IAM 服務帳戶使用者 (
roles/iam.serviceAccountUser) - 服務使用情形消費者 (
roles/serviceusage.serviceUsageConsumer)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
為確保 Cloud Deploy 服務帳戶具備建立及使用分析工作的必要權限,請要求管理員將專案的下列 IAM 角色授予 Cloud Deploy 服務帳戶:
- IAM 服務帳戶使用者 (
roles/iam.serviceAccountUser) - Cloud Deploy 版本發布者 (
roles/clouddeploy.releaser) - Cloud Deploy 作業人員 (
roles/clouddeploy.operator)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
管理員或許也能透過自訂角色或其他預先定義的角色,授予 Cloud Deploy 服務帳戶必要權限。
設定自訂分析工作
自訂分析工作與使用 Google Cloud Observability 快訊的分析工作相同,但自訂工作會使用一或多個工作,這些工作會參照自訂容器,以及要在這些容器上執行的指令,以便處理指標供應商的資料。
本節說明如何設定使用非Google Cloud 監控供應商的 Cloud Deploy 分析作業。
analysis 節可以直接在部署策略設定 (strategy.standard.analysis,適用於標準策略) 中使用。如要設定每個階段的分析,請使用自訂 Canary (strategy.canary.customCanaryDepolyment.phaseConfigs.phaseId.analysis)。
strategy:
standard:
analysis:
duration: DURATION
customChecks:
- id: CHECK_ID
frequency: FREQUENCY
task:
type: container
image: IMAGE_NAME
command: COMMAND
args: [ARGS]
env:
[VAR_NAME: VALUE]
其中:
DURATION這是執行分析工作的時間長度 (以秒為單位)。時間到期後,工作就會完成。如果分析失敗 (容器傳回非零的結束代碼),工作會在時間長度到期前結束 (
FAILED)。CHECK_ID個人檢查的 ID。這個 ID 在這項分析作業中不得重複
FREQUENCY執行個別檢查的頻率 (以秒為單位)。
IMAGE_NAME用於識別容器映像檔的路徑和名稱。
COMMAND這是要在該容器上執行的指令,例如殼層指令碼 (
/bin/bash)。ARGS是該指令的引數清單。這是以半形逗號分隔的清單。如果 COMMAND_TO_RUN 是「/bin/sh」,則其中一個引數會是
-c,另一個引數則是在您叫用的殼層中執行的完整指令。VAR_NAME要傳遞至容器的環境變數名稱。您可以使用環境變數設定容器的行為。也就是說,變數及其值會告知容器要在指標供應商中監控哪些項目。
您可以在這裡使用系統參數做為環境變數。
VALUE每個環境變數的值。Cloud Deploy 不會對這些環境變數執行任何操作,只會將這些變數及其值傳遞至容器。容器會根據您的分析邏輯使用這些值。
自訂分析定義中的每項檢查都包含參照容器的工作、要在該容器上執行的指令,以及要傳遞至該容器的任何適用環境變數。
自訂容器
如果是自訂分析,您提供的容器會負責分析所用指標供應商的遙測資料、記錄或其他資料。Cloud Deploy 分析工作會等待容器傳回程式碼。
自訂容器必須執行的動作
自訂容器負責從指標供應商擷取資料、判斷指標、記錄或其他資料是否指出應用程式運作正常,並將結果傳回 Cloud Deploy。
自訂容器必須傳回的內容
Cloud Deploy 對自訂容器沒有任何要求,只要傳回零或非零的結束代碼即可。如果容器傳回非零的結束代碼,分析就會失敗。
容器可將結果寫入名為 results.json 的檔案 (JSON 格式),該檔案位於 Cloud Deploy 提供的 Cloud Storage bucket 中。檔案會包含鍵/值組合形式的中繼資料。這並非強制要求。
可用的環境變數
Cloud Deploy 也會在執行環境中提供並填入下列環境變數。您可以在部署掛鉤、驗證作業,或自訂目標的算繪或部署作業中使用這些環境變數。
ANTHOS_MEMBERSHIP如果是
ANTHOS類型的目標,則為 Anthos 成員的完整資源名稱。CLOUD_RUN_LOCATION如果是
RUN類型的目標,則為 Cloud Run 服務部署所在的區域。CLOUD_RUN_PROJECT如果是
RUN類型的目標,則為建立 Cloud Run 服務的專案。CLOUD_RUN_SERVICE如果是
RUN類型的目標,則為已部署的 Cloud Run 服務名稱。CLOUD_RUN_SERVICE_URLS如果是
RUN類型的目標,則為使用者用來存取服務的網址 (以半形逗號分隔的清單)。您可以在Google Cloud 控制台的 Cloud Run 服務詳細資料中找到這些資訊。成功部署 Cloud Run 服務後,Cloud Run 會產生網址。因此,這項環境變數僅適用於部署後掛鉤和驗證工作。CLOUD_RUN_REVISION如果是
RUN類型的目標,則為 Cloud Run 服務的特定修訂版本。GKE_CLUSTER如果是
GKE類型的目標,則為 Google Kubernetes Engine 叢集的完整指定資源名稱,例如projects/p/locations/us-central1/clusters/dev。TARGET_TYPE目標的特定執行階段類型。
GKE、ANTHOS或RUN。如果是自訂目標,則不會設定這項值。CLOUD_DEPLOY_LOCATION包含 Cloud Deploy 資源的區域。
CLOUD_DEPLOY_DELIVERY_PIPELINE推送管道的 ID。
CLOUD_DEPLOY_TARGET目標的 ID。
CLOUD_DEPLOY_PROJECT包含 Cloud Deploy 資源的專案專案編號。 Google Cloud
CLOUD_DEPLOY_PROJECT_ID專案的 Google Cloud 專案 ID。
CLOUD_DEPLOY_RELEASE執行 Hook 的發布版本 ID。
CLOUD_DEPLOY_ROLLOUT包含掛鉤作業的推出作業 ID。
CLOUD_DEPLOY_JOB_RUN工作執行的 ID,代表目前執行的工作。
CLOUD_DEPLOY_PHASE推出作業中的階段,包含部署掛鉤、驗證工作,或自訂顯示或部署的工作。
後續步驟
瞭解如何設定部署分析。
如要查看分析的設定結構定義,請參閱 Cloud Deploy 設定參考資料。
進一步瞭解部署自動化功能。
進一步瞭解部署策略。