Utiliser DM Convert pour passer à Terraform ou Kubernetes Resource Model (KRM)

Deployment Manager Convert (DM Convert) est un outil qui permet de convertir vos configurations et modèles Deployment Manager en d'autres formats de configuration déclarative compatibles avec Google. Google est actuellement compatible avec Terraform et le modèle de ressources Kubernetes (KRM).

Pourquoi passer à Terraform ou KRM ?

Terraform et KRM sont des options populaires pour gérer les services et l'infrastructure Google Cloud. Ils proposent des écosystèmes activement mis à jour, compatibles avec des fonctionnalités modernes telles que la gestion des secrets et le rapprochement continu (KRM).

Google collabore avec HashiCorp afin de développer le fournisseur Terraform pour Google Cloud. En 2020, Google a également lancé Config Connector pour aider les clients à gérer les types de ressources Google Cloud à l'aide de Kubernetes.

Terraform

Terraform est un outil Open Source pour le provisionnement de l'infrastructure. Vous pouvez utiliser Terraform pour écrire des configurations déclaratives afin de gérer vos services et ressources Google Cloud à l'aide du fournisseur Terraform pour Google Cloud. Pour en savoir plus, consultez Terraform sur Google Cloud.

Modèle de ressource Kubernetes (KRM)

KRM est un paradigme permettant de créer des API et des définitions de ressources pour la gestion de la configuration déclarative. Elle représente les ressources Google Cloud sous forme de définitions de ressources personnalisées (CRD, Custom Resource Definitions) et peut être activée à l'aide de Config Controller.

Types compatibles et fournisseurs de types acceptés

DM Convert convertit les fichiers de configuration YAML de Deployment Manager ou les fichiers de modèle Jinja ou Python en fichiers de configuration KRM ou Terraform.

Pour vérifier l'état actuel de la compatibilité de DM Convert pour les fournisseurs de types et les types de ressources, vous pouvez utiliser l'option --list-supported-types.

Comprendre comment DM Convert convertit les concepts dans différents formats

Le tableau suivant montre comment DM Convert convertit les concepts de Deployment Manager en formats KRM et Terraform :

Concept de Deployment Manager Conversion KRM/Config Connector Conversion Terraform
Références Références aux ressources, si le schéma KRM définit le champ comme référence. Si le schéma KRM ne définit pas le champ comme référence, la référence Deployment Manager est remplacée par sa valeur résolue. Les références Terraform ressemblent aux références Deployment Manager et se comportent de la même manière.
Dépendances explicites (depends_on) Aucune compatibilité avec le classement des dépendances explicites. Les ressources sont activées de manière cohérente à terme. depends_on
Liaisons IAM (Identity and Access Management) (blocs accessControl primaires) IAMPolicy Types <resource_type>_iam_policy (par exemple, google_pubsub_topic_iam_policy)
Liaisons IAM (types iamMemberBinding secondaires) IAMPolicyMember <resource_type>_iam_member (par exemple, google_project_iam_member)
Types composites Les types composites sont obsolètes. DM Convert ne les convertit pas. Les types composites sont obsolètes. DM Convert ne les convertit pas.
Actions, fournisseurs de types personnalisés et sorties Non compatible. Les actions ayant des équivalents déclaratifs dans Terraform sont converties. Pour en savoir plus, consultez la page Compatibilité avec les actions.

Compatibilité avec les actions dans DM Convert (pour Terraform)

La fonctionnalité Actions est une fonctionnalité d'aperçu de Deployment Manager qui étend l'ensemble des méthodes d'API disponibles. Actions non compatibles : DM Convert ne convertit pas les actions qui n'ont pas d'équivalents déclaratifs dans Terraform, telles que :

  • Appliquer un correctif, supprimer et répertorier les API

  • API définies dans des fournisseurs de types personnalisés

  • API personnalisées, telles que sqladmin-v1beta4:sql.instances.restart

DM Convert accepte les conversions en équivalents Terraform pour les actions dans les cas suivants :

  • Il remplace les appels d'action aux API qui insèrent une ressource avec des ressources Terraform équivalentes. Par exemple, action: gcp-types/storage-v1:storage.buckets.insert est converti en google_storage_bucket.

  • Dans la mesure du possible, il convertit les appels d'action en API qui obtiennent une ressource vers les types data Terraform. Par exemple, actions: gcp-types/compute-v1:compute.subnetworks.get est converti en google_compute_subnetwork.

  • Il convertit les commandes setIamPolicy en ressources *_iam_policy (primaires) ou *_iam_member (secondaires), selon qu'elles sont utilisées ou non avec getIamPolicy.

Pour en savoir plus sur la migration de l'utilisation des actions vers des alternatives déclaratives dans Deployment Manager, consultez la page Remplacer l'utilisation des actions.

Workflow de conversion vers Terraform

Pour convertir vos configurations Deployment Manager au format Terraform à l'aide de DM Convert, procédez comme suit:

  1. Identifiez la configuration Deployment Manager que vous souhaitez convertir au format Terraform.
  2. Pour vous assurer que vos ressources sont à jour, rapprochez tous les déploiements actifs de la configuration.
  3. Pour convertir votre configuration au format Terraform, exécutez l'outil DM Convert en local.
  4. Vérifiez que la configuration Terraform générée reflète l'état actuel de vos ressources.
  5. Supprimez le déploiement Deployment Manager. Pour conserver vos ressources lorsque vous supprimez le déploiement, définissez delete-policy sur abandon.

Nous vous recommandons de suivre les bonnes pratiques Terraform, par exemple:

Pour un tutoriel détaillé de ce workflow, consultez Convertir des configurations Deployment Manager avec DM Convert.

Collecte de données dans DM Convert

Données que nous collectons par défaut

Par défaut, l'outil DM Convert envoie des données d'utilisation anonymes à Google pour nous aider à maintenir et à améliorer cet outil. Lorsque l'outil DM Convert s'exécute, les données sur l'opération demandée, la réussite de l'opération et la chronologie de la conversion sont collectées. Ces données sont anonymes et excluent toutes les informations personnelles, les données sensibles ou le contenu des clients.

Les données d'utilisation peuvent contenir les éléments suivants :

  • Paramètres de saisie de la commande de conversion : nous enregistrons les valeurs des paramètres de votre commande de conversion lors de l'exécution de l'outil, y compris le format de sortie (KRM ou Terraform) et les représentations booléennes des autres options spécifiées (nous ne collectons pas les valeurs spécifiques de ces options).

  • Résultat de conversion : nous enregistrons les résultats de la conversion, y compris l'état de la conversion (SUCCESS ou FAILURE), ainsi que le code d'erreur et le message d'erreur si un problème survient.

  • Heure de conversion : nous enregistrons les heures de début et de fin de la conversion.

Utilisation de ces données

Google collecte et traite les données d'utilisation pour :

  • Découvrez comment l'outil est utilisé, y compris les fonctionnalités et les paramètres les plus populaires.

  • Diagnostiquez l'échec de l'utilisation de cet outil et guidez les utilisateurs qui ont besoin d'une assistance technique.

  • Améliorez l'outil en résolvant les problèmes et en augmentant potentiellement la couverture des caractéristiques.

Désactiver la collecte de données

Google collecte les données d'utilisation par défaut lorsque vous exécutez une conversion, mais cette collecte de données peut être désactivée.

Pour désactiver la collecte de données pour une conversion spécifique, vous pouvez spécifier l'option --opt_out_data_collection=true dans votre commande de conversion. Pour continuer à désactiver cette collecte de données, vous devez spécifier l'option chaque fois que vous exécutez une conversion.

Pour activer la collecte de données pour une conversion spécifique, vous pouvez spécifier l'option --opt_out_data_collection=false dans votre commande de conversion ou l'omettre de votre commande.