更新 SaaS 產品

本文說明如何使用 App Lifecycle Manager 更新 SaaS 產品。

App Lifecycle Manager 可透過推出作業,在多個已佈建的單元中進行更新。推出作業會根據 UnitKind 指定目標單位,並可選擇套用篩選器 (unit_filter),使用 Google Cloud CLI 指定特定單位子集。這可讓您在部署基礎中管理更新。如要執行復原,可以將單元升級至先前的版本。

如要對單一特定單位執行操作,請使用「Unit details」(單位詳細資料) 頁面上的控制項。

事前準備

更新應用程式產品前,請先完成下列事項:

建立發布版本

您必須先建立版本,才能更新應用程式。發布版本代表 SaaS 應用程式的特定版本,由藍圖套件和相關聯的設定定義。基本上,版本包含單元的更新。

控制台

  1. 前往 App Lifecycle Manager。

    前往 App Lifecycle Manager

  2. 按一下「版本」。

  3. 在「Releases」頁面,按一下「Create」(建立)。

  4. 在「Create Release」(建立版本) 頁面中:

    1. 在「版本名稱」方塊中,輸入不重複的版本名稱。
    2. 在「Unit kind」(單元 kind) 方塊中,選取與這個版本相關聯的單元 kind。
    3. 在「Only upgradeable from (optional)」(僅可從以下版本升級 (選用)) 部分,您可以選取要將單元從哪個發布版本升級至這個發布版本。這樣一來,您就能控管升級路徑。
    4. 在「Create Blueprint」(建立藍圖) 和「Store Blueprint」(儲存藍圖) 步驟中,選取或建立藍圖。如要進一步瞭解藍圖建立選項,請參閱藍圖說明文件。
    5. 在「Variables (optional)」(變數 (選用)) 部分,您可以視需要設定這個版本的輸入變數。如要進一步瞭解如何設定變數,請參閱變數說明文件。

  5. 點選「建立」。

  6. 您已建立版本。您可以在「Release details」(版本詳細資料) 頁面查看版本詳細資料。建立推出作業時,您可以參照這個版本。

gcloud

如要使用 Google Cloud 控制台建立版本,請按照下列步驟操作:

gcloud beta app-lifecycle-manager releases create RELEASE_NAME --blueprint-package=BLUEPRINT_PACKAGE_URI --unit-kind=UNIT_KIND [--location=LOCATION] [--labels=[KEY=VALUE,...]] [--upgradeable-from-releases=[RELEASE_NAME,...]] [--input-variable-defaults=[variable=VARIABLE,value=VALUE,type=TYPE,...]]

更改項目:

  • RELEASE_NAME:要建立的版本 ID。這會是版本完整資源名稱的一部分。
  • BLUEPRINT_PACKAGE_URI:這個版本要使用的藍圖套件 URI。藍圖是託管於 Artifact Registry 或其他 OCI 登錄檔的 OCI 映像檔。
    • 藍圖套件包含佈建單元所需的構件,以及所用引擎 (Terraform) 和版本的相關中繼資料。
    • 如果省略 URI 中的主機名稱,系統會預設為區域 Artifact Registry 路徑 (例如 us-east1-docker.pkg.dev)。
    • 如要進一步瞭解如何建立藍圖,請參閱藍圖說明文件。
  • UNIT_KIND:這個版本對應的單位種類 ID 或完整 ID。建立版本後,UNIT_KIND 即無法變更。
  • LOCATION:要建立 版本的地區。如果未提供完整的 URI 路徑,這個旗標會提供發布位置的備用值。預設為 Google Cloud CLI 環境中設定的位置。
  • LABELS:(選用) 要套用至版本的標籤,用於分類。標籤是鍵/值組合。
    • 鍵的開頭須為小寫字元,且只能使用連字號、底線、小寫字元和數字。
    • 值只能使用連字號、底線、小寫字元和數字。
    • 例如:--labels=environment=staging,team=app-lifecycle-manager
  • UPGRADEABLE_FROM_RELEASES:(選用) 逗號分隔的清單,指定哪些現有版本可使用您建立的新版本進行更新。
    • 如果將這個旗標留空,則不會限制哪些版本可以更新至這個版本。
    • 如果提供,對這個發布版本的單元更新要求將強制執行這項限制。
  • INPUT_VARIABLE_DEFAULTS:(選用) 藍圖所需輸入變數的預設值。
    • 您可以內嵌指定變數預設值,或參照 YAML 或 JSON 檔案。
    • 建立推出作業時,可覆寫此處定義的變數。

如要進一步瞭解如何設定變數,請參閱變數說明文件。如要進一步瞭解版本,請參閱 Release Google Cloud CLI 參考資料。

建立推出作業 kind

建立推出作業前,您必須先建立推出作業 kind,做為將版本部署至單元的範本。

控制台

  1. 前往 App Lifecycle Manager。

    前往 App Lifecycle Manager

  2. 按一下「Rollout kinds」(推出作業種類)。

  3. 在「Rollout Kinds」(推出種類) 頁面,按一下「Create」(建立)。

  4. 在「Create a rollout kind」(建立推出作業 kind) 頁面中:

    1. 在「Rollout kind name」(推出作業種類名稱) 方塊中,輸入推出作業種類的名稱。
    2. 在「Unit kind」方塊中,選取要透過版本更新的單元類型。
    3. 在「Rollout strategy」(推出策略) 下拉式選單中,選取要用來將版本部署至單元的策略:

      • 一次一個位置 (簡易):一次更新一個位置 (不含浸泡時間)。同時更新最多 5% 的單位。
      • 一次全部推出 (簡易):所有位置同時開始更新 (適合開發環境和緊急情況)。
      • 漸進式 (逐步):在多個位置 (有浸泡時間) 以指數方式按百分比批次逐步部署更新。
      • 漸進式 (單一位置):以百分比批次更新單元,並延長浸泡時間,偵測單一位置內的問題。

      如要進一步瞭解推出策略,請參閱「推出策略」。

  5. 點選「建立」。

  6. 您已建立推出作業 kind。在「Rollout Kind details」(推出作業種類詳細資料) 頁面中,您可以查看及編輯推出作業種類的參數。

gcloud

如要使用 Google Cloud 控制台建立推出作業 kind,請按照下列步驟操作:

  gcloud beta app-lifecycle-manager rollout-kinds create ROLLOUT_KIND_NAME --unit-kind=UNIT_KIND --location=LOCATION --rollout_strategy=ROLLOUT_STRATEGY --error_budget=ERROR_BUDGET --unit_filter=UNIT_FILTER --update_unit_kind_default=UPDATE_UNIT_KIND_DEFAULT

更改項目:

  • ROLLOUT_KIND_NAME:推出作業 kind 的名稱。
  • UNIT_KIND:定義要套用版本的單位。版本會套用至所選單位類型的所有單位。
  • LOCATION:要建立推出作業類型的地區。
  • ROLLOUT_STRATEGY:定義推出作業類型的推出策略。可能的值包括:

    • Google.Cloud.Simple.OneLocationAtATime:一次更新一個位置 (沒有浸泡時間)。同時更新最多 5% 的單位。
    • Google.Cloud.Simple.AllAtOnce:所有位置會同時開始更新 (適合開發環境和緊急情況)。
    • Google.Cloud.Progressive.Gradual.v1:以指數方式,在多個位置分批逐步部署更新 (有浸泡時間)。
    • Google.Cloud.Progressive.SingleLocation.v1:以百分比批次更新單位,並延長浸泡時間,偵測單一位置內的問題。

    如要進一步瞭解推出策略,請參閱「推出策略」。

  • ERROR_BUDGET:錯誤預算的設定。如果失敗的單元數量超過 error_budget 上限 (由 allowed_count、allowed_ratio * total_units 定義),推出作業就會暫停。如未設定 error_budget,App Lifecycle Manager 會嘗試更新所有單元,無論發生多少次失敗。

  • UNIT_FILTER:用於單位的 CEL 格式篩選器字串。系統會套用篩選條件,判斷符合資格的單位母體。這項篩選器只能縮小推出範圍。無法擴大推出範圍。

  • UPDATE_UNIT_KIND_DEFAULT:更新單元類型的設定。根據預設,系統會在推出作業開始時更新單元 kind。可能的值包括:

    • UPDATE_UNIT_KIND_STRATEGY_UNSPECIFIED:未指定單元 kind 更新策略。
    • UPDATE_UNIT_KIND_STRATEGY_ON_START:在推出作業開始時,更新單位類型策略。
    • UPDATE_UNIT_KIND_STRATEGY_NEVER:一律不更新單元 kind 策略。

詳情請參閱 RolloutKind Google Cloud CLI 參考資料。

錯誤預算功能

App Lifecycle Manager 包含錯誤預算功能 (RolloutKind中的 ErrorBudget),可做為安全防護措施。如果單元更新失敗的數量或百分比 (例如在基礎架構應用期間) 超過設定的門檻,這項功能會自動暫停推出作業,有助於限制更新期間潛在問題的影響。

建立推出作業

建立推出種類後,您可以建立推出作業,指定要用來更新單元的版本。

建立推出作業後,App Lifecycle Manager 會根據單元類型中定義的策略更新單元。

控制台

  1. 前往 App Lifecycle Manager。

    前往 App Lifecycle Manager

  2. 按一下「推出」。

  3. 在「Rollout List」(推出作業清單) 頁面中,按一下「Create」(建立)。

  4. 在「Create a rollout」(建立推出作業) 頁面中:

    1. 在「Rollout Kind」(推出作業 kind) 方塊中,選取推出作業 kind,詳細說明如何將版本部署至指定單元。
    2. 在「發布版本」方塊中,指定要用來更新單元的發布版本。
    3. 在「Rollout Name」(推出作業名稱) 方塊中,輸入推出作業名稱。
  5. 點選「建立」。

  6. 已建立推出作業。

    在「Global Rollout Detail」(全域推出作業詳細資料) 頁面中,您可以監控推出作業詳細資料,包括推出作業狀態、推出作業進度 (以單元數量呈現) 和失敗的推出作業。

gcloud

如要使用 Google Cloud 控制台建立推出作業,請按照下列步驟操作:

  gcloud beta app-lifecycle-manager rollouts create ROLLOUT_NAME --rollout-kind=ROLLOUT_KIND_NAME --release=RELEASE_NAME --location=LOCATION

更改項目:

  • ROLLOUT_NAME:推出作業的名稱。
  • ROLLOUT_KIND_NAME:定義要使用哪種推出作業 kind,將版本套用至單元。發布版本會套用至推出作業 kind 中定義的所有單元 kind。
  • RELEASE_NAME:定義要部署至裝置的版本二進位檔。
  • LOCATION:要建立推出作業的位置。

詳情請參閱 Rollout Google Cloud CLI 參考資料。

後續步驟