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,您需要具備服務使用情形管理員 IAM 角色 (
roles/serviceusage.serviceUsageAdmin),其中包含serviceusage.services.enable權限。瞭解如何授予角色。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,您需要具備服務使用情形管理員 IAM 角色 (
roles/serviceusage.serviceUsageAdmin),其中包含serviceusage.services.enable權限。瞭解如何授予角色。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 Releaser (
roles/clouddeploy.releaser) -
Cloud Deploy Operator (
roles/clouddeploy.operator)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
管理員或許也能透過自訂角色或其他預先定義的角色,授予 Cloud Deploy 服務帳戶必要權限。
設定自訂分析工作
自訂分析工作與使用 Google Cloud Observability 快訊的分析工作相同,但自訂工作會使用一或多個工作,這些工作會參照自訂容器,以及要在這些容器上執行的指令,以處理指標供應商的資料。
本節說明如何設定使用非Google Cloud 監控供應商的 Cloud Deploy 分析工作。
analysis 節可直接用於部署策略設定 (標準策略為 strategy.standard.analysis)。如要設定每個階段的分析,請使用自訂初期測試 (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是在該容器上執行的指令,例如 Shell 指令碼 (
/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 設定參考資料。
進一步瞭解部署自動化。
進一步瞭解部署策略。