定義自訂分析

Cloud Deploy 支援使用 Google Cloud Observability 根據指標和其他資料 (同樣來自 Google Cloud Observability) 產生的快訊,進行分析作業。不過,您也可以擴充 Cloud Deploy,使用其他指標供應商。本文說明如何設定及使用分析工作,以及自訂容器的需求,包括分析所選供應商指標的邏輯。

事前準備

  1. 登入 Google 帳戶。

    如果沒有帳戶,請 申請新帳戶

  2. 安裝 Google Cloud CLI。

  3. 若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI

  4. 執行下列指令,初始化 gcloud CLI:

    gcloud init
  5. 確認您具備完成本指南所需的權限

  6. 確認專案已啟用計費功能 Google Cloud

  7. 啟用 Compute Engine 和 Cloud Deploy API:

    啟用 API 時所需的角色

    如要啟用 API,您需要具備服務使用情形管理員 IAM 角色 (roles/serviceusage.serviceUsageAdmin),其中包含 serviceusage.services.enable 權限。瞭解如何授予角色

    gcloud services enable clouddeploy.googleapis.com  compute.googleapis.com
  8. 安裝 Google Cloud CLI。

  9. 若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI

  10. 執行下列指令,初始化 gcloud CLI:

    gcloud init
  11. 確認您具備完成本指南所需的權限

  12. 確認專案已啟用計費功能 Google Cloud

  13. 啟用 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 服務帳戶具備建立及使用分析作業的必要權限,請要求管理員在專案中,將下列 IAM 角色授予 Cloud Deploy 服務帳戶:

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

管理員或許也能透過自訂角色或其他預先定義的角色,授予 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

    目標的特定執行階段類型。GKEANTHOSRUN。 如果是自訂目標,則不會設定這項屬性。

  • 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

    推出作業中的階段,包含部署掛鉤、驗證工作或自訂轉譯/部署的工作。

後續步驟