Deployment Manager Convert (DM Convert) 是一种工具,可用于将您的 Deployment Manager 配置和模板转换为 Google 支持的其他声明性配置格式。Google 目前支持 Terraform 和 Kubernetes 资源模型 (KRM)。
为什么要转换为 Terraform 或 KRM?
Terraform 和 KRM 是管理 Google Cloud 服务和基础架构的常用选项。它们提供积极更新的生态系统,并支持 Secret 管理和持续协调(适用于 KRM)等现代功能。
Google 与 HashiCorp 合作,以开发 Google Cloud 的 Terraform 提供程序。2020 年,Google 还发布了 Config Connector,可帮助客户使用 Kubernetes 管理 Google Cloud 资源类型。
Terraform
Terraform 是一种用于供应基础架构的开源工具。您可以使用 Terraform 编写声明式配置,以便使用适用于 Google Cloud 的 Terraform 提供程序管理 Google Cloud 服务和资源。如需了解详情,请参阅 Terraform on Google Cloud。
Kubernetes 资源模型 (KRM)
KRM 是为声明式配置管理构建 API 和资源定义的范例。它以自定义资源定义 (CRD) 的形式表示 Google Cloud 资源,并且可以使用 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 |
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 Convert 不会转换它们。 | 复合类型已弃用。DM Convert 不会转换它们。 |
操作、自定义类型提供程序和输出 | 不受支持。 | 在 Terraform 中具有声明式等效项的操作将予以转换。如需了解详情,请参阅 Actions 支持。 |
支持 DM 转换中的 Actions(适用于 Terraform)
Actions 是 Deployment Manager 的预览版功能,它扩展了一组可用的 API 方法。Actions 不受支持,并且 DM Convert 不会转换在 Terraform 中没有声明式等效项的 Actions,例如:
修补、删除和列出 API
自定义类型提供程序中定义的 API
自定义 API,例如
sqladmin-v1beta4:sql.instances.restart
DM Convert 支持在以下情况下将 Actions 转换为 Terraform 等效项:
它用等效的 Terraform 资源替换了对插入资源的 API 的 Actions 调用。例如,
action: gcp-types/storage-v1:storage.buckets.insert
会转换为google_storage_bucket
。它会尽可能将 Actions 调用转换为获取 Terraform
data
类型类型的 API。例如,actions: gcp-types/compute-v1:compute.subnetworks.get
会转换为google_compute_subnetwork
。它会将
setIamPolicy
命令转换为*_iam_policy
(权威)或*_iam_member
(非权威)资源,具体取决于它们是否与getIamPolicy
一起使用。
如需了解如何在 Action 内将 Actions 迁移到声明式替代方案,请参阅替换 Actions 的使用。
转换为 Terraform 的工作流
如需使用 DM Convert 将 Deployment Manager 配置转换为 Terraform,请执行以下操作:
- 确定要转换为 Terraform 的 Deployment Manager 配置。
- 为确保您的资源是最新的,请对配置的所有有效部署进行协调。
- 如需将配置转换为 Terraform,请在本地运行 DM Convert 工具。
- 验证生成的 Terraform 配置是否反映了资源的当前状态。
- 删除 Deployment Manager 部署。如需在删除部署时保留资源,请将
delete-policy
设置为abandon
。
我们建议您遵循 Terraform 最佳实践,例如:
如需详细了解此工作流程,请参阅使用 DM Convert 转换您的 Deployment Manager 配置。
DM Convert 中的数据收集
我们在默认情况下收集的信息
默认情况下,DM Convert 工具会将匿名使用情况数据发送给 Google,以帮助我们维护和改进该工具。执行 DM Convert 工具时,系统将收集有关请求的操作、操作成功和转换时间的数据。此数据是匿名的,不包括任何个人身份信息、敏感数据或客户内容。
使用数据可能包含:
转换命令输入参数:我们在运行该工具时记录转换命令的参数值,包括输出格式(KRM 或 Terraform)以及是否指定其他标志的布尔值表示法(我们不会收集特定值)。
转换结果:我们记录转换结果,包括转换状态(
SUCCESS
或FAILURE
)以及出现问题时的错误代码和错误消息。转换时间:我们会记录转换的开始时间和结束时间。
我们如何使用这些数据
Google 会收集并处理这些使用数据,以便:
了解该工具的使用方式,包括哪些功能和设置最受欢迎。
诊断工具使用失败的情况,并为寻求技术帮助的用户提供指导。
通过解决问题和潜在地增加功能覆盖率来改进工具。
选择停用数据收集
默认情况下,当您执行转换时,Google 会收集使用数据,但此数据收集功能可予以停用。
如需为特定转换停用数据收集功能,您可以在转换命令中指定 --opt_out_data_collection=true
标志。如需继续停用此数据收集功能,您每次运行转换时都必须指定此标志。
如需为特定转换启用数据收集,您可以在转换命令中指定 --opt_out_data_collection=false
标志,或者在命令中省略该标志。