本文說明如何使用 SaaS 執行階段推出版本。
SaaS 執行階段可透過推出功能,更新多個已佈建的單元。推出作業會根據目標單元UnitKind,並可選擇性地套用篩選器 (unit_filter),使用 Google Cloud CLI 指定特定單元子集。這可讓您在已部署的基礎架構中管理更新。如要復原,請將單元升級至先前的版本。
如要對單一特定裝置執行作業,請使用「裝置詳細資料」頁面上的控制項。
事前準備
更新 SaaS 產品前,請先完成下列事項:
- 確認您已啟用 SaaS 執行階段。
- 請確認您具備建立 SaaS 產品所需的 IAM 權限。
- 建立 SaaS 產品。
- 建立 UnitKind。
- 建立及佈建單元。
- 準備新的或修改過的 Terraform 藍圖。
建立發布版本
您必須先建立版本,才能更新 SaaS 產品。發布版本代表 SaaS 應用程式的特定版本,由藍圖套件和相關聯的設定定義。基本上,發布版本包含單元的更新。
控制台
前往 SaaS 執行階段。
按一下「發行內容」。
在「發行內容」頁面,按一下「建立」。
在「建立發行內容」頁面中:
點選「建立」。
您已建立版本。您可以在「版本詳細資料」頁面查看版本詳細資料。建立推出作業時,您就能參照這個版本。
gcloud
如要使用 Google Cloud 控制台建立版本,請按照下列步驟操作:
gcloud beta saas-runtime 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 中的主機名稱,系統會預設為區域構件登錄路徑 (例如
us-east1-docker.pkg.dev)。 - 如要進一步瞭解如何建立藍圖,請參閱 Blueprints 說明文件。
UNIT_KIND:此發行內容對應的單元種類 ID 或完整 ID。建立發布版本後,UNIT_KIND就無法變更。LOCATION:要建立版本的所在位置。如果未提供完整 URI 路徑,這個標記會提供發行位置的備用值。預設為 Google Cloud CLI 環境中設定的位置。LABELS:(選用) 要套用至發行內容的標籤,用於分類。標籤是鍵/值組合。- 鍵的開頭須為小寫字元,且只能包含連字號、底線、小寫字元和數字。
- 值只能包含連字號、底線、小寫字元和數字。
- 例如:
--labels=environment=staging,team=saas-runtime
UPGRADEABLE_FROM_RELEASES:(選用) 以半形逗號分隔的發行內容名稱清單,指定可使用您建立的新發行內容更新哪些現有發行內容。- 如果將這個旗標留空,更新至這個版本的版本就不會受到限制。
- 如果提供這項限制,對這個版本提出的單元更新要求就會強制執行這項限制。
INPUT_VARIABLE_DEFAULTS:(選用) 藍圖所需輸入變數的預設值。- 您可以內嵌指定變數預設值,或參照 YAML 或 JSON 檔案。
- 您可以在建立推出作業時覆寫這裡定義的變數。
如要進一步瞭解如何設定變數,請參閱變數說明文件。
如要進一步瞭解版本,請參閱 Release Google Cloud CLI 參考資料。
建立推出作業 kind
建立推出作業前,請先建立推出作業 kind,做為將版本部署至單位的範本。
控制台
前往 SaaS 執行階段。
按一下「推出類型」。
在「Rollout Kinds」(推出類型) 頁面中,按一下「Create」(建立)。
在「Create a rollout kind」(建立推出作業 kind) 頁面中:
- 在「推出類型名稱」方塊中,輸入推出類型名稱。
- 在「單元 kind」方塊中,選取要發布的單元類型。
在「推出策略」下拉式選單中,選取要用來將版本部署至裝置的策略:
- 一次一個位置 (簡易):一次更新一個位置 (不含浸泡時間)。同時更新最多 20% 的裝置。
- 一次全部推出 (簡易):所有位置會同時開始推出 (適合開發環境和緊急情況)。
- 漸進式:以指數方式逐步推出更新,並以百分比分批發布至多個位置 (附帶浸泡時間)。
- 漸進式 (單一位置):以百分比批次更新裝置,並延長浸泡時間,以便偵測單一位置的問題。
如要進一步瞭解發布策略,請參閱「發布策略」。
點選「建立」。
您已建立推出作業 kind。在「推出作業 kind 詳細資料」頁面中,您可以查看及編輯推出作業 kind 的參數。
gcloud
如要使用 Google Cloud 控制台建立推出作業 kind,請按照下列步驟操作:
gcloud beta saas-runtime 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:一次更新一個地點 (不含過渡期)。同時更新最多 20% 的裝置。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,SaaS Runtime 會嘗試更新所有單元,不論遇到多少次失敗。UNIT_FILTER:針對單元使用的 CEL 格式篩選器字串。系統會套用篩選條件,判斷符合資格的裝置數量。這個篩選器只能縮小發布範圍,無法擴大推出範圍。UPDATE_UNIT_KIND_DEFAULT:更新單元 kind 的設定。根據預設,單元 kind 會在推出作業開始時更新。可能的值包括:UPDATE_UNIT_KIND_STRATEGY_UNSPECIFIED:未指定單元種類更新策略。UPDATE_UNIT_KIND_STRATEGY_ON_START:在推出作業開始時,更新單元類型策略。UPDATE_UNIT_KIND_STRATEGY_NEVER:請勿更新單元種類策略。
詳情請參閱 RolloutKind
Google Cloud CLI 參考資料。
錯誤預算功能
SaaS 執行階段包含錯誤預算功能 (ErrorBudget in
RolloutKind),可做為安全防護措施。如果單元更新失敗的次數或百分比 (例如在基礎架構應用程式期間) 超過設定的門檻,這項功能就會自動暫停推出作業,有助於減少更新期間潛在問題的影響。
建立推出作業
建立推出類型後,您可以建立推出作業,指定要用來更新裝置的版本。
建立推出作業後,SaaS Runtime 會根據單元 kind 中定義的策略更新單元。
控制台
前往 SaaS 執行階段。
按一下「推出」。
在「推出清單」頁面中,按一下「建立」。
在「Create a rollout」(建立推出作業) 頁面中:
- 在「推出作業 kind」方塊中,選取詳細說明如何將發布版本推出至指定單元的推出作業 kind。
- 在「發布」方塊中,指定要用來更新單元的發布版本。
- 在「推出名稱」方塊中,輸入推出作業的名稱。
點選「建立」。
推出作業已建立。
在「全球推出詳細資料」頁面中,您可以監控推出詳細資料,包括推出狀態、推出進度 (以單元數量為準) 和推出失敗次數。
gcloud
如要使用 Google Cloud 控制台建立推出作業,請按照下列步驟操作:
gcloud beta saas-runtime rollouts create ROLLOUT_NAME --rollout-kind=ROLLOUT_KIND_NAME --release=RELEASE_NAME --location=LOCATION
取代:
ROLLOUT_NAME:推出作業的名稱。ROLLOUT_KIND_NAME:定義要用來將版本套用至單位的推出作業類型。發布版本會套用至推出作業 kind 中定義的單元 kind 的所有單元。RELEASE_NAME:定義要部署至裝置的發布二進位檔。LOCATION:要建立階段推出的位置。
詳情請參閱 Rollout
Google Cloud CLI 參考資料。
後續步驟
- 如要進一步瞭解 SaaS 執行階段,請參閱「SaaS 執行階段總覽」。
- 如要試用教學課程,請參閱「使用 SaaS Runtime 部署 VM」。
- 如要瞭解服務帳戶的使用方式,以及如何授予這些帳戶的精細權限,請參閱「SaaS 執行階段服務帳戶」。