DM 変換を使用して Terraform または Kubernetes リソースモデル(KRM)に移行する

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

Deployment Manager Convert(DM Convert)は、Deployment Manager の構成テンプレートにGoogle がサポートする他の宣言型の構成形式に他の宣言型に変換するために使用できるツールです。現在 Google は、TerraformKubernetes リソースモデル(KRM)をサポートしています。

Terraform または KRM に変換する理由

Terraform と KRM は、Google Cloud サービスとインフラストラクチャの管理によく使用されている手段です。アクティブに更新されるエコシステムを提供し、シークレット管理や継続的な整合(KRM 用)などの最新機能をサポートしています。

Google は、HashiCorp と協力して、Google Cloud 用の Terraform プロバイダを開発しています。2020 年、Google では、お客様が Kubernetes を使用して、Google Cloud のリソースタイプを容易に管理できるように、Config Connector もリリースしました。

Terraform

Terraform は、インフラストラクチャをプロビジョニングするためのオープンソース ツールです。Terraform を用いて宣言型構成を記述することで、Google Cloud 用の Terraform プロバイダを使用して Google Cloud サービスとリソースを管理できます。詳細については、Google Cloud での Terraform をご覧ください。

Kubernetes Resource Model(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 変換が Deployment Manager から KRM や Terraform にコンセプトを変換する方法を示しています。

Deployment Manager のコンセプト KRM と Config Connector の変換 Terraform の変換
参考資料 リソース参照: KRM スキーマがフィールドをリファレンスとして定義している場合。KRM スキーマでフィールドを参照として定義していない場合、Deployment Manager リファレンスは解決された値に置き換えられます。 Terraform リファレンスは、Deployment Manager リファレンスと同様に表示し動作します。
明示的な依存関係depends_on 明示的な依存関係の順序付けはサポートされていません。リソースは、結果整合性のある方法で動作します。 depends_on
Identity and Access Management(IAM)バインディング(権限のある accessControl ブロック) IAMPolicy <resource_type>_iam_policy タイプ(例: google_pubsub_topic_iam_policy
IAM バインディング(権限のない iamMemberBinding タイプ) IAMPolicyMember <resource_type>_iam_member (例: google_project_iam_member
複合タイプ 複合タイプは非推奨になりました。DM 変換では変換されません。 複合タイプは非推奨になりました。DM 変換では変換されません。
アクションカスタムタイプ プロバイダ出力 サポートされていません。 Terraform に宣型に相当するものがあるアクションが変換されます。詳細については、アクションのサポートをご覧ください。

DM Convert でのアクションのサポート(Terraform 用)

アクションは、利用可能な API メソッドのセットを拡張する、Deployment Manager のプレビュー機能です。アクションはサポートされておらず、DM 変換では Terraform に次のような宣言型に相当するものがないアクションは変換されません。

  • API をパッチ適用、削除、一覧表示する

  • カスタムタイプ プロバイダで定義される API

  • sqladmin-v1beta4:sql.instances.restart などのカスタム API

次の場合、DM 変換は、アクションに相応する Terraform への変換をサポートしています。

  • リソースを挿入する API に対するアクション呼び出しが、同等の Terraform リソースに置き換えられます。たとえば、action: gcp-types/storage-v1:storage.buckets.insertgoogle_storage_bucket に変換されます。

  • 可能であれば、アクション呼び出しを Terraform の data 型に取得する API に変換します。たとえば、actions: gcp-types/compute-v1:compute.subnetworks.getgoogle_compute_subnetwork に変換されます。

  • setIamPolicy コマンドは getIamPolicy で使用されているかどうかに応じて、*_iam_policy (権限のある) リソース、または *_iam_member (権限のない) リソースに変換されます。

Deployment Manager 内でアクションの使用を相応の宣言型に移行する方法については、アクションの使用の置換をご覧ください。

Terraform への変換のワークフロー

DM 変換を使用して Deployment Manager 構成を Terraform に変換するには:

  1. Terraform に変換する Deployment Manager の構成を特定します。
  2. リソースが最新かどうか確認するには、構成の有効なデプロイをすべて整合します。
  3. Terraform 構成に変換するには、ローカルで DM 変換ツールを実行します。
  4. 生成された Terraform 構成にリソースの現在の状態が反映されていることを確認します。
  5. Deployment Manager のデプロイを削除します。デプロイを削除するときにリソースを保持するには、delete-policyabandon に設定します。

次のような Terraform のベスト プラクティスに従うことをおすすめします。

このワークフローの詳細については、DM 変換を使用した Deployment Manager 構成の変換をご覧ください。

DM Convert でのデータ収集

デフォルトで収集される情報

DM 変換ツールは、ツールの保守と改善のために、デフォルトでは匿名の使用状況データを Google に送信します。DM 変換ツールを実行すると、リクエストされたオペレーション、オペレーションの成功、変換のタイミングに関するデータが収集されます。このデータは匿名であり、個人情報、機密データ、顧客コンテンツはすべて除外されます。

使用状況データには以下が含まれることがあります。

  • 変換コマンドの入力パラメータ: ツールを実行する際の変換コマンドのパラメータ値が記録されます。出力形式(KRM または Terraform)や、他のフラグが指定されているかを示すブール値の表現も含まれます(これらのフラグの特定の値は収集しません)。

  • 変換結果: 問題が発生した場合、変換のステータス(SUCCESSFAILURE)、エラーコードやエラー メッセージなどの変換結果が記録されます。

  • 変換時間: 変換の開始時間と終了時間を記録します。

Google によるデータの使用

Google は、以下の目的で、使用状況に関するデータを収集して処理します。

  • 一番使われている機能や設定など、ツールの使用方法を理解します。

  • 失敗したツールの使用を診断し、技術サポートが必要なユーザーにガイダンスを提供します。

  • 問題を解決し、場合によっては機能の適用範囲を拡大することで、ツールを改善します。

データ収集の無効化

Google では、変換の実行時にデフォルトで使用状況データを収集しますが、このデータ収集は無効にできます。

特定の変換に対するデータ収集を無効にするには、変換コマンドで --opt_out_data_collection=true フラグを指定できます。今後このデータの収集を継続して無効にするには、変換を実行するたびにフラグを指定する必要があります。

特定のコンバージョンのデータ収集を有効にするには、コンバージョン コマンドでフラグ --opt_out_data_collection=false を指定するか、コマンドからフラグを省略します。