使用 DM Convert 轉換至 Terraform 或 Kubernetes 資源模型 (KRM)

Deployment Manager Convert (DM Convert) 是一種工具,可將 Deployment Manager 的設定範本轉換為 Google 支援的其他陳述式設定格式。Google 目前支援 TerraformKubernetes 資源模型 (KRM)

為什麼要轉換為 Terraform 或 KRM?

Terraform 和 KRM 是管理 Google Cloud 服務 和基礎架構的熱門選項。這些生態系統會主動更新,並支援 Secrets 管理和持續對帳 (適用於 KRM) 等現代化功能。

Google 與 HashiCorp 合作開發 Terraform 供應商 Google Cloud。2020 年,Google 也推出了 Config Connector,協助客戶使用 Kubernetes 管理 Google Cloud 資源類型

Terraform

Terraform 是一項開放原始碼工具,用於佈建基礎架構。您可以使用 Terraform 編寫宣告式設定,透過 Terraform 供應商 Google Cloud管理服務和資源。 Google Cloud 詳情請參閱 Terraform on Google Cloud

Kubernetes 資源模型 (KRM)

KRM 是一種範例,用於建構 API 和資源定義,以進行宣告式設定管理。它會將資源表示為 Google Cloud 自訂資源定義 (CRD),並可使用 Config Controller 啟動。

支援的類型和類型提供者

DM Convert 會將 Deployment Manager 設定 YAML 檔案和 Jinja 或 Python 範本檔案,轉換為 KRM 或 Terraform 設定檔。

如要查看 DM Convert 目前支援的類型提供者和資源類型,可以使用 --list-supported-types 旗標。

瞭解 DM Convert 如何在不同格式之間轉譯概念

下表說明 DM Convert 如何將 Deployment Manager 的概念轉換為 KRM 和 Terraform:

Deployment Manager 概念 KRM/Config Connector 轉換 Terraform 轉換
參考資料 如果 KRM 結構定義將欄位定義為參照,則為資源參照。如果 KRM 結構定義未將該欄位定義為參照,Deployment Manager 參照會替換為已解析的值。 Terraform 參考資料的外觀和行為與 Deployment Manager 參考資料類似。
明確依附元件 (depends_on) 不支援明確的依附元件排序。資源會以最終一致的方式啟動。 depends_on
身分與存取權管理 (IAM) 繫結 (權威 accessControl 區塊) IAMPolicy <resource_type>_iam_policy 類型 (例如 google_pubsub_topic_iam_policy)
IAM 繫結 (非授權 iamMemberBinding 類型) IAMPolicyMember <resource_type>_iam_member (例如 google_project_iam_member)
複合類型 複合類型已淘汰。DM Convert 不會轉換這些項目。 複合類型已淘汰。DM Convert 不會轉換這些項目。
動作自訂型別提供者輸出內容 不支援。 Terraform 會轉換具有對等宣告式動作的動作。詳情請參閱「支援動作」。

支援 DM Convert 中的動作 (適用於 Terraform)

動作是 Deployment Manager 的預先發布功能,可擴充可用的 API 方法集。不支援動作,且 DM Convert 不會轉換在 Terraform 中沒有對等宣告的動作,例如:

  • 修補、刪除及列出 API

  • 自訂類型提供者中定義的 API

  • 自訂 API,例如 sqladmin-v1beta4:sql.instances.restart

在下列情況下,DM Convert 支援將 Actions 轉換為對等的 Terraform 項目:

  • 這項工具會將插入資源的 API 的 Action 呼叫,替換為對等的 Terraform 資源。舉例來說,action: gcp-types/storage-v1:storage.buckets.insert 會轉換為 google_storage_bucket

  • 盡可能將 Action 呼叫轉換為可取得 Terraform data 類型資源的 API。舉例來說,actions: gcp-types/compute-v1:compute.subnetworks.get 會轉換為 google_compute_subnetwork

  • 視是否與 getIamPolicy 一併使用而定,這項工具會將 setIamPolicy 指令轉換為 *_iam_policy (具授權性) 或 *_iam_member (不具授權性) 資源。

如要瞭解如何將 Actions 的使用方式遷移至 Deployment Manager 中的宣告式替代方案,請參閱「替換 Actions 的使用方式」。

轉換為 Terraform 的工作流程

如要使用 DM Convert 將 Deployment Manager 設定轉換為 Terraform,請按照下列步驟操作:

  1. 找出要轉換為 Terraform 的 Deployment Manager 設定。
  2. 為確保資源為最新狀態,請協調處理設定的所有有效部署作業。
  3. 如要將設定轉換為 Terraform,請在本機執行 DM Convert 工具
  4. 確認產生的 Terraform 設定反映資源的目前狀態。
  5. 刪除 Deployment Manager 部署作業。如要在刪除部署作業時保留資源,請將 delete-policy 設為 abandon

建議您遵循 Terraform 最佳做法,例如:

如需這項工作流程的詳細逐步說明,請參閱「使用 DM Convert 轉換 Deployment Manager 設定」。

DM Convert 中的資料收集行為

系統預設收集的資料

根據預設,DM Convert 工具會將匿名使用資料傳送給 Google,協助我們維護及改善這項工具。DM Convert 工具執行時,系統會收集有關要求作業、作業成功與否,以及轉換時間的資料。這類資料會經過匿名處理,不包含任何個人識別資訊、私密資料或客戶內容。

使用資料可能包含:

  • 轉換指令輸入參數:執行工具時,我們會記錄轉換指令的參數值,包括輸出格式 (KRM 或 Terraform) 和其他旗標是否指定的布林值表示法 (我們不會收集這些旗標的特定值)。

  • 轉換結果:我們會記錄轉換結果,包括轉換狀態 (SUCCESSFAILURE),以及發生問題時的錯誤代碼和錯誤訊息。

  • 轉換時間:我們會記錄轉換的開始和結束時間。

Google 如何使用這些資料

Google 會收集及處理使用資料,以:

  • 瞭解工具的使用情形,包括最常使用的功能和設定。

  • 診斷工具使用失敗的原因,並為尋求技術協助的使用者提供指引。

  • 解決問題,提升工具品質,並盡可能擴大功能涵蓋範圍。

選擇不收集資料

執行轉換時,Google 預設會收集使用資料,但您可以停用這項功能。

如要停用特定轉換的資料收集功能,請在轉換指令中指定 --opt_out_data_collection=true 標記。如要繼續選擇不收集這類資料,每次執行轉換時都必須指定標記。

如要為特定轉換啟用資料收集功能,您可以在轉換指令中指定 --opt_out_data_collection=false 標記,或從指令中省略該標記。