本指南說明如何刪除 Cloud SDK 用戶端程式庫快速部署解決方案。請參閱本指南,瞭解如何刪除現有的解決方案部署作業。
費用
如要估算 Cloud SDK 用戶端程式庫解決方案使用的 Google Cloud 資源費用,請參閱 Google Cloud Pricing Calculator 中的預先計算估算值。
您可以根據估算結果,初步計算部署作業的費用。 您可以修改預估費用,反映您對解決方案所用資源進行的任何設定變更。
預先計算的預估值是根據特定因素的假設得出,包括:
- 資源部署的 Google Cloud 位置。
- 資源的使用時間。
您也可以查看已部署資源的使用費用。詳情請參閱「查看帳單報表和費用趨勢」。
- 資源部署的 Google Cloud 位置。
- 資源的使用時間。
取得必要的 IAM 權限
如要刪除現有部署作業,您需要下表列出的 Identity and Access Management (IAM) 權限。如果您具備解決方案部署專案的roles/owner
基本角色,則已擁有所有必要權限。如果您沒有 roles/owner 角色,請要求管理員授予這些權限 (或包含這些權限的角色)。
| 需要 IAM 權限 | 具備必要權限的預先定義角色 |
|---|---|
|
服務使用情形管理員 ( roles/serviceusage.serviceUsageAdmin) |
|
服務帳戶管理員 ( roles/iam.serviceAccountAdmin) |
|
專案 IAM 管理員 ( roles/resourcemanager.projectIamAdmin) |
config.deployments.createconfig.deployments.list |
Cloud Infrastructure Manager 管理員 ( roles/config.admin) |
為解決方案建立的服務帳戶
透過控制台啟動刪除程序時,系統會建立服務帳戶,代表您部署解決方案 (並在您選擇時刪除部署作業)。這個服務帳戶會「暫時」獲派特定 IAM 權限,也就是說,在解決方案部署和刪除作業完成後,系統會自動撤銷這些權限。Google 建議您在刪除部署作業後,刪除服務帳戶,如本指南後續所述。
查看服務帳戶角色
如果 Google Cloud 專案或組織的管理員需要這項資訊,可以參考下列角色。
roles/storage.adminroles/run.adminroles/iam.serviceAccountAdminroles/iam.serviceAccountUserroles/resourcemanager.projectIamAdminroles/iam.roleAdminroles/serviceusage.serviceUsageAdmin
刪除部署作業
不再需要解決方案時,請刪除所有資源,以免系統持續向您收取建立資源的費用。
透過控制台刪除
如果您是透過控制台部署解決方案,請使用這個程序。
前往 Google Cloud 控制台的「Solution deployments」(解決方案部署項目) 頁面。
選取要刪除部署作業的專案。
找出要刪除的部署作業。
在部署作業的資料列中,依序點選 「Actions」(動作) 和「Delete」(刪除)。
您可能需要捲動畫面,才能在資料列中看到「動作」。
輸入部署作業的名稱,然後按一下「確認」。
「狀態」欄位會顯示「正在刪除」。
如果刪除失敗,請參閱「刪除部署作業時發生錯誤」一文中的疑難排解指南。
如果不再需要用於解決方案的 Google Cloud 專案,可以刪除該專案。詳情請參閱「(選用) 刪除專案」。
使用 Terraform CLI 刪除
如果您是使用 Terraform CLI 部署解決方案,請按照下列程序操作。
在 Cloud Shell 中,確認目前使用的目錄是
$HOME/cloudshell_open/terraform-cloud-client-api/infra。如果不是,請前往該目錄。移除 Terraform 佈建的資源:
terraform destroyTerraform 會顯示要刪除的資源清單。
系統提示您執行動作時,請輸入
yes。Terraform 會顯示訊息,指出進度。所有資源刪除後,Terraform 會顯示下列訊息:
Destroy complete!如果刪除失敗,請參閱「刪除部署作業時發生錯誤」中的疑難排解指南。
如果不再需要用於解決方案的 Google Cloud 專案,可以刪除該專案。詳情請參閱「(選用) 刪除專案」。
(選用) 刪除專案
如果您是在新的 Google Cloud 專案中部署解決方案,且不再需要該專案,請按照下列步驟刪除:
- 前往 Google Cloud 控制台的「Manage resources」(管理資源) 頁面。
- 從專案清單中選取要刪除的專案,然後點選「Delete」(刪除)。
- 收到提示時,請輸入專案 ID,然後點選「Shut down」(關閉)。
如果決定保留專案,請刪除這個解決方案建立的服務帳戶 (如「刪除服務帳戶」一節所述)。
選用:刪除服務帳戶
如果您已刪除用於解決方案的專案,請略過這個部分。
如本指南先前所述,部署解決方案時,系統會代您建立服務帳戶。系統暫時為服務帳戶指派了特定 IAM 權限,也就是說,解決方案部署和刪除作業完成後,系統會自動撤銷這些權限,但不會刪除服務帳戶。Google 建議您刪除這個服務帳戶。
如果您是透過 Google Cloud 控制台部署解決方案,請前往「Solution deployments」(解決方案部署作業) 頁面。(如果已在該頁面,請重新整理瀏覽器)。系統會在背景觸發程序,刪除服務帳戶。您不需採取進一步行動。
如果您是使用 Terraform CLI 部署解決方案,請完成下列步驟:
前往 Google Cloud 控制台的「Service accounts」(服務帳戶) 頁面。
選取用於解決方案的專案。
選取要刪除的服務帳戶。
為解決方案建立的服務帳戶電子郵件 ID 格式如下:
goog-sc-DEPLOYMENT_NAME-NNN@PROJECT_ID.iam.gserviceaccount.com電子郵件 ID 包含下列值:
- DEPLOYMENT_NAME:部署作業名稱。
- NNN:隨機 3 位數。
- PROJECT_ID:您部署解決方案的專案 ID。
點選「刪除」。
排解錯誤
您可以採取的診斷和解決錯誤行動,取決於部署方法和錯誤的複雜程度。
刪除部署作業時發生錯誤
在某些情況下,刪除部署作業可能會失敗:
- 透過控制台部署解決方案後,如果變更解決方案佈建的任何資源,然後嘗試刪除部署作業,刪除作業可能會失敗。「Solution deployments」(解決方案部署作業) 頁面的「Status」(狀態) 欄位會顯示「Failed」(失敗),Cloud Build 記錄則會顯示錯誤原因。
- 使用 Terraform CLI 部署解決方案後,如果您透過非 Terraform 介面 (例如控制台) 變更任何資源,然後嘗試刪除部署作業,刪除作業可能會失敗。
terraform destroy指令輸出內容中的訊息會顯示錯誤原因。
請查看錯誤記錄和訊息,找出並刪除導致錯誤的資源,然後再次嘗試刪除部署作業。
如果無法刪除以控制台為基礎的部署作業,且無法使用 Cloud Build 記錄診斷錯誤,則可使用 Terraform CLI 刪除部署作業,如下一節所述。
使用 Terraform CLI 刪除以控制台為基礎的部署作業
本節說明如何刪除控制台部署作業,如果嘗試透過控制台刪除時發生錯誤,在這個方法中,您會下載要刪除的部署作業 Terraform 設定,然後使用 Terraform CLI 刪除部署作業。
找出部署作業的 Terraform 程式碼、記錄和其他資料儲存區域。這個區域可能與您部署解決方案時選取的區域不同。
前往 Google Cloud 控制台的「Solution deployments」(解決方案部署項目) 頁面。
選取要刪除的部署項目所在專案。
在部署作業清單中,找出要刪除的部署作業所在的資料列。
按一下「 View all row content」(查看所有資料列內容)。
在「Location」(位置) 欄中,記下「第二個」位置,如下列範例醒目顯示的部分所示:
在 Google Cloud 控制台啟用 Cloud Shell。
Google Cloud 控制台底部會開啟 Cloud Shell 工作階段,並顯示指令列提示。Cloud Shell 是已安裝 Google Cloud CLI 的殼層環境,並已設定適用於您目前專案的值。工作階段可能要幾秒鐘的時間才能初始化。
為專案 ID、區域和要刪除的部署作業名稱建立環境變數:
export REGION="REGION" export PROJECT_ID="PROJECT_ID" export DEPLOYMENT_NAME="DEPLOYMENT_NAME"在這些指令中,請替換下列項目:
- REGION:您在先前程序中記下的位置。
- PROJECT_ID:部署解決方案的專案 ID。
- DEPLOYMENT_NAME:要刪除的部署作業名稱。
取得要刪除的最新部署作業修訂版本 ID:
export REVISION_ID=$(curl \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://config.googleapis.com/v1alpha2/projects/${PROJECT_ID}/locations/${REGION}/deployments/${DEPLOYMENT_NAME}" \ | jq .latestRevision -r) echo $REVISION_ID輸出結果會與下列內容相似:
projects/PROJECT_ID/locations/REGION/deployments/DEPLOYMENT_NAME/revisions/r-0取得部署作業 Terraform 設定的 Cloud Storage 位置:
export CONTENT_PATH=$(curl \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://config.googleapis.com/v1alpha2/${REVISION_ID}" \ | jq .applyResults.content -r) echo $CONTENT_PATH以下是這個指令的輸出範例:
gs://PROJECT_ID-REGION-blueprint-config/DEPLOYMENT_NAME/r-0/apply_results/content從 Cloud Storage 將 Terraform 設定下載至 Cloud Shell:
gcloud storage cp $CONTENT_PATH $HOME --recursive cd $HOME/content/infra等待系統顯示
Operation completed訊息,如下列範例所示:Operation completed over 45 objects/268.5 KiB初始化 Terraform:
terraform init等待系統顯示下列訊息:
Terraform has been successfully initialized!移除已部署的資源:
terraform destroyTerraform 會顯示要刪除的資源清單。
如果系統顯示任何有關未宣告變數的警告,請忽略這些警告。
系統提示您執行動作時,請輸入
yes。Terraform 會顯示訊息,指出進度。刪除所有資源後,Terraform 會顯示下列訊息:
Destroy complete!刪除部署構件:
curl -X DELETE \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://config.googleapis.com/v1alpha2/projects/${PROJECT_ID}/locations/${REGION}/deployments/${DEPLOYMENT_NAME}?force=true&delete_policy=abandon"稍候片刻,然後確認部署構件已刪除:
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://config.googleapis.com/v1alpha2/projects/${PROJECT_ID}/locations/${REGION}/deployments/${DEPLOYMENT_NAME}" \ | jq .error.message如果輸出內容顯示
null,請稍候幾秒,然後再次執行指令。刪除部署構件後,系統會顯示如下範例所示的訊息:
Resource 'projects/PROJECT_ID/locations/REGION/deployments/DEPLOYMENT_NAME' was not found
後續步驟
- 進一步瞭解 App Design Center。
- 瞭解 Google Cloud使用的 API,以及如何以您選用的程式設計語言與 API 互動。
- 瞭解 Google Cloud上的 API 如何由 Identity and Access Management 提供技術支援。
- 排解 Cloud Client API 應用程式中的 API 問題。
貢獻者
作者:Kadeem Dunn | 技術撰稿人
其他貢獻者:Katie McLaughlin | 資深開發人員關係工程師