您可以使用 SaaS 執行階段,在 Google Cloud儲存、託管、管理及監控軟體即服務 (SaaS) 應用程式。SaaS 執行階段可大規模管理 Terraform 部署作業,讓您同時管理 SaaS 應用程式和執行該應用程式的基礎架構。
SaaS 管道中的各種利害關係人,都能以多種方式使用 SaaS 執行階段。如果您的工作與下列任何角色相關,或許會對使用 SaaS 執行階段感興趣:
- 平台管理員
- 應用程式開發人員
- 架構師
- 法規遵循管理員
- 平台工程師
- 財務營運
SaaS 執行階段具有下列優點:
- 自動執行 SaaS 租戶的服務管理工作 (例如部署、推出和功能旗標管理),簡化大規模服務管理作業。
- 您可以微調可設定單元的更新和發布作業,精確管理大規模的 SaaS 產品,進一步擴展觀察和控制範圍。
- 管理各種 Google Cloud 產品 (包括 Google CloudGoogle Distributed Cloud、帳單、可觀測性和 Resource Manager) 的服務,在 Google Cloud 生態系統中建立一致性。
- 使用彈性且可套用範本的架構,以單元為基礎更新及部署群組,提高效率和重複使用性。
SaaS 執行階段的運作方式
SaaS 執行階段會部署定義 SaaS 產品的構件。這些構件必須具有 Terraform 設定。部署作業會劃分為不同的單元,您可以透過可設定的推出作業程序,使用包含產品變更的發布版本更新這些單元。
如要進一步瞭解 SaaS 執行階段命名慣例,請參閱詞彙表。
準備要用於 SaaS Runtime 的工作負載
部署 SaaS 產品前,建議您先決定 SaaS 產品在 SaaS 執行階段生態系統中的理想配置。
將應一併更新或修改的 SaaS 產品部分,整理成不同的 Terraform 設定。規劃 SaaS 服務時,請為每個 SaaS 服務群組使用單元 kind。
在 SaaS 執行階段找出工作負載的理想結構後,您就可以建立 SaaS 產品、單元種類,然後使用推出作業部署單元。
如需 SaaS 執行階段的設定範例,請參閱快速入門導覽課程。
SaaS 執行階段服務帳戶
SaaS 執行階段會使用 Google 代管和使用者代管的服務帳戶:
SaaS 執行階段服務帳戶 (Google 代管):建立第一個 SaaS 產品資源後,系統會自動建立這個帳戶。由 Google 管理。例如在單元佈建期間與其他 Google Cloud 服務互動。
啟動服務帳戶 (使用者自行管理):您可建立及管理這個服務帳戶。SaaS 執行階段 (透過 Infrastructure Manager) 會在佈建或更新單元時,使用這個帳戶執行 Terraform 設定。這個帳戶會做為身分,用於建立及管理 Terraform 中定義的資源。啟動服務帳戶權限與 Terraform 設定管理的資源直接相關。
您可以擁有多個啟動用服務帳戶。建議您為每個租戶設定一個啟動服務帳戶。
選用:構件建立服務帳戶 (使用者自行管理):這個服務帳戶用於建構 Terraform,並將其上傳至 OCI 構件。這通常是 Cloud Build 服務帳戶,但也可以是任何具備 SaaS 產品適當權限的服務帳戶。
SaaS 執行階段服務帳戶 (Google 管理)
SaaS 執行階段服務帳戶是 Google 管理的服務代理程式,SaaS 執行階段會使用這個帳戶在專案中執行作業。
建立第一個 SaaS 執行階段資源時,系統會自動佈建這個服務帳戶。SaaS 執行階段服務帳戶的建立格式如下:
service-PROJECT_NUMBER@gcp-sa-saasservicemgmt.iam.gserviceaccount.com
取代:
- PROJECT_NUMBER:專案編號。
啟動用服務帳戶 (使用者自行管理)
啟動服務帳戶是使用者自行管理的服務帳戶,您必須建立這個帳戶。SaaS 執行階段 (透過 Infra Manager) 會使用這個服務帳戶執行 Terraform 設定。這個身分會建立、修改及刪除 Terraform 中定義的資源。
您必須在專案或租戶專案中建立這個服務帳戶。
啟動用服務帳戶輸入變數
建立單元時,您必須提供啟動服務帳戶,做為 Terraform 設定的鍵值配對輸入變數:
- Name (名稱):
actuation_sa - 「Variable type」(變數類型):
String 變數值:啟動用服務帳戶電子郵件地址:
my-actuation-sa@my-identifier.iam.gserviceaccount.com
所需權限
執行服務帳戶必須具備足夠的權限,才能管理 Terraform 設定中定義的資源。至少須包含:
roles/iam.serviceAccountTokenCreator:允許服務帳戶產生權杖以進行驗證。roles/config.admin:授予 Infra Manager 資源的完整控制權。roles/storage.admin:授予 Cloud Storage 的完整控制權。
此外,啟動服務帳戶也需要有權限,才能建立及管理應用程式使用的特定 Google Cloud 資源。
例如:
- 如果 Terraform 會建立 Google Kubernetes Engine (GKE) 叢集,服務帳戶需要適當的 GKE 角色 (例如
roles/container.admin)。 - 如果 Terraform 會建立 Compute Engine 執行個體,服務帳戶需要
roles/compute.admin角色。 - 如果 Terraform 會建立 Cloud SQL 執行個體,服務帳戶需要適當的 Cloud SQL 角色 (例如
roles/cloudsql.admin)。
請參閱 Terraform 中使用的每個 Google Cloud 資源說明文件,瞭解必要權限。授予應用程式運作所需的最低權限。
構件建立服務帳戶 (使用者管理)
構件建立服務帳戶是由使用者管理的服務帳戶,您可建立這個帳戶,以便使用建構系統 (例如 Cloud Build) 將 Terraform 構件封裝及上傳至 Artifact Registry。
這個服務帳戶與 SaaS 執行階段和啟動用服務帳戶不同,會建構 Terraform 程式碼,並將產生的構件推送至 Artifact Registry。通常是 Cloud Build 服務帳戶。
手動建立構件
如果您手動建構及上傳 Terraform 構件 (例如直接使用 Docker 建構和 Docker 推送),則不需要另外建立構件服務帳戶。
請改用您自己的憑證或具備必要 Artifact Registry 權限的服務帳戶進行驗證。
所需權限
如果您使用 Cloud Build,Cloud Build 服務帳戶通常需要下列角色:
roles/artifactregistry.writer:將構件推送至 Artifact Registry。roles/artifactregistry.repoAdmin:管理 Artifact Registry 存放區。roles/storage.admin:管理 Cloud Storage bucket。roles/developerconnect.admin:使用開發人員連結的權限。roles/developerconnect.readTokenAccessor:取得 Developer Connect 讀取權杖的權限。roles/logging.logWriter:寫入記錄的權限。- 如果您使用 Developer Connect 部署 Terraform 設定:
roles/cloudbuild.builds.builder:執行建構作業。 - 建構程序所需的任何其他權限 (例如存取原始碼存放區)。
推出策略
SaaS 執行階段採用多種推出策略,管理 SaaS 產品中單元的更新方式。這些推出策略會遵循 Google Cloud的變更方法,在整個 SaaS 產品中,以一致的方式部署變更。
使用推出策略,盡量減少對客戶的負面影響,並將問題隔離到個別邏輯和實體故障網域。建立推出作業 kind,並指定下列其中一種推出作業策略,即可定義推出作業策略:
一次推出至一個位置 (簡易):一次推出至一個位置,位置之間沒有等待時間。系統會隨機選取地點內的裝置,一次最多更新 20% 的裝置。
建議在開發環境和緊急情況下採用這項策略。
一次全部推出 (簡易):所有位置會同時開始推出。
建議在開發環境和緊急情況下採用這項策略。
漸進式:在每個地點,裝置會以靜態百分比為基礎分批推出 (例如 1%、10%、20%、30%、~40%),且每批之間會間隔一段時間。在各個地點,推出作業會以指數方式增加並行地點數量 (例如一個地點、兩個地點、四個地點),並在各波之間設有緩衝時間 (例如 18 小時)。系統會隨機選取位置內的裝置。
這項策略會跨多個位置安全地執行可預測的推出作業。這項策略會從小規模開始,再隨著信心增加逐步擴大範圍。建議在有多個地點的正式環境中使用這項策略。
漸進式 (單一位置):裝置會以靜態百分比為基礎分批更新 (例如 1%、10%、20%、30%、~40%),且批次之間浸泡時間較長 (例如 18 小時),確保有充足時間偵測問題,並限制推出變更的不良影響。
這項策略專為單一位置中的 SaaS 服務量身打造,注重安全性與謹慎。如果實際工作環境只有一個位置,建議採用這項策略。
如要進一步瞭解如何建立推出類型,請參閱「建立推出類型」。
後續步驟
- 請參閱快速入門導覽課程,瞭解如何使用 SaaS Runtime 部署 VM。
- 如要開始使用 SaaS 執行階段,請先建立 SaaS 產品。