Deployment Manager Convert (DM Convert) es una herramienta que puedes usar para convertir tus configuraciones y plantillas de Deployment Manager a otros formatos de configuración declarativa compatibles con Google. Actualmente, Google admite Terraform y Kubernetes Resource Model (KRM).
¿Por qué convertir a Terraform o KRM?
Terraform y KRM son opciones populares para gestionar Google Cloud servicios e infraestructura. Ofrecen ecosistemas actualizados de forma activa, con compatibilidad con funciones modernas, como la gestión de secretos y la conciliación continua (en el caso de KRM).
Google colabora con HashiCorp para desarrollar el proveedor de Terraform Google Cloud. En el 2020, Google también lanzó Config Connector para ayudar a los clientes a usar Kubernetes para gestionar Google Cloud tipos de recursos.
Terraform
Terraform es una herramienta de código abierto para aprovisionar infraestructura. Puedes usar Terraform para escribir configuraciones declarativas y gestionar tus servicios y recursos de Google Cloud con el proveedor de Terraform para Google Cloud. Para obtener más información, consulta Terraform en Google Cloud.
Modelo de recursos de Kubernetes (KRM)
KRM es un paradigma para crear APIs y definiciones de recursos para la gestión de configuraciones declarativa. Representa los Google Cloud recursos como definiciones de recursos personalizados (CRDs) y se puede activar con Config Controller.
Tipos y proveedores de tipos admitidos
DM Convert convierte los archivos YAML de configuración de Deployment Manager y los archivos de plantilla Jinja o Python en archivos de configuración de KRM o Terraform.
Para comprobar el estado actual de la compatibilidad de DM Convert con los proveedores de tipos y los tipos de recursos, puedes usar la marca --list-supported-types.
Cómo traduce DM Convert los conceptos entre formatos
En la siguiente tabla se muestra cómo traduce DM Convert los conceptos de Deployment Manager a KRM y Terraform:
| Concepto de Deployment Manager | Conversión de KRM/Config Connector | Conversión de Terraform |
|---|---|---|
| References | Referencias de recursos, si el esquema de KRM define el campo como referencia. Si el esquema de KRM no define el campo como una referencia, la referencia de Deployment Manager se sustituye por su valor resuelto. | Las referencias de Terraform tienen un aspecto y un comportamiento similares a las referencias de Deployment Manager. |
Dependencias explícitas (depends_on) |
No se admite el orden explícito de las dependencias. Los recursos se activan de forma coherente. | depends_on |
Enlaces de Gestión de Identidades y Accesos (IAM) (bloques accessControl autorizados) |
IAMPolicy |
<resource_type>_iam_policy (por ejemplo, google_pubsub_topic_iam_policy) |
Vinculaciones de gestión de identidades y accesos (tipos no autoritativos iamMemberBinding) |
IAMPolicyMember |
<resource_type>_iam_member (por ejemplo, google_project_iam_member) |
| Tipos compuestos | Los tipos compuestos están obsoletos. DM Convert no las convierte. | Los tipos compuestos están obsoletos. DM Convert no las convierte. |
| Acciones, proveedores de tipos personalizados y salidas | No es compatible. | Las acciones que tienen equivalentes declarativos en Terraform se convierten. Para obtener más información, consulta el artículo Asistencia para acciones. |
Compatibilidad con las acciones de DM Convert (para Terraform)
Acciones es una función de vista previa de Deployment Manager que amplía el conjunto de métodos de API disponibles. No se admiten las acciones y DMConvert no convierte las acciones que no tienen equivalentes declarativos en Terraform, como las siguientes:
APIs de parche, eliminación y lista
APIs definidas en proveedores de tipos personalizados
APIs personalizadas, como
sqladmin-v1beta4:sql.instances.restart
DM Convert admite la conversión a equivalentes de Terraform para las acciones en los siguientes casos:
Sustituye las llamadas a la API de Action que insertan un recurso por recursos de Terraform equivalentes. Por ejemplo,
action: gcp-types/storage-v1:storage.buckets.insertse convierte engoogle_storage_bucket.