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) 的形式表示资源,并且可以使用 Config Controller 来启用。 Google Cloud
支持的类型和类型提供程序
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
标志,或者在命令中省略该标志。