DM Convert für die Umstellung auf Terraform oder das Kubernetes Resource Model (KRM) verwenden

Deployment Manager Convert (DM Convert) ist ein Tool, mit dem Sie Ihre Konfigurationen und Vorlagen in Deployment Manager in andere deklarative Konfigurationsformate konvertieren können, die Google unterstützt. Google unterstützt derzeit Terraform und das Kubernetes-Ressourcenmodell (KRM).

Warum in Terraform oder KRM konvertieren?

Terraform und KRM sind beliebte Optionen zum Verwalten von Google Cloud-Diensten und -Infrastrukturen. Sie bieten aktiv aktualisierte Systeme und unterstützen moderne Features wie die Secret-Verwaltung und den kontinuierlichen Abgleich (für KRM).

Google arbeitet mit HashiCorp zusammen, um den Terraform-Anbieter für Google Cloud zu entwickeln. 2020 hat Google außerdem Config Connector eingeführt, um Kunden bei der Verwaltung von Google Cloud-Ressourcentypen mit Kubernetes zu unterstützen.

Terraform

Terraform ist ein Open-Source-Tool für die Bereitstellung von Infrastruktur. Sie können Terraform verwenden, um deklarative Konfigurationen zum Verwalten Ihrer Google Cloud-Dienste und -Ressourcen mit dem Terraform-Anbieter für Google Cloud zu schreiben. Weitere Informationen finden Sie unter Terraform in Google Cloud.

Kubernetes-Ressourcenmodell (KRM)

KRM ist ein Modell für die Erstellung von APIs und Ressourcendefinitionen für die deklarative Konfigurationsverwaltung. Er stellt Google Cloud-Ressourcen als benutzerdefinierte Ressourcendefinitionen (Custom Resource Definitions, CRDs) dar und kann mit Config Controller gesteuert werden.

Unterstützte Typen und Typanbieter

DM Convert konvertiert YAML-Dateien und Jinja- oder Python-Vorlagendateien in KRM- oder Terraform-Konfigurationsdateien.

Mit dem Flag --list-supported-types können Sie den aktuellen Status der Unterstützung von DM Convert für Typanbieter und Ressourcentypen prüfen.

Wie DM Convert Konzepte in verschiedene Formate übersetzt

Die folgende Tabelle zeigt, wie DM Convert Konzepte aus Deployment Manager in KRM und Terraform übersetzt:

Deployment Manager-Konzept KRM/Config-Connector-Konvertierung Terraform-Konvertierung
Verweise Ressourcenreferenzen, wenn das KRM-Schema das Feld als Referenz definiert. Wenn das KRM-Schema das Feld nicht als Referenz definiert, wird die Deployment Manager-Referenz durch ihren aufgelösten Wert ersetzt. Terraform-Referenzen sehen ähnlich aus wie Deployment Manager-Referenzen und verhalten sich auch ähnlich.
Explizite Abhängigkeiten (depends_on) Keine Unterstützung für explizite Abhängigkeitsreihenfolge. Ressourcen arbeiten in der Art einer Eventual Consistency. depends_on
Identitäts- und Zugriffsverwaltungsbindungen (IAM) (autoritative accessControl-Blöcke) IAMPolicy <resource_type>_iam_policy-Typen, z. B. google_pubsub_topic_iam_policy
IAM-Bindungen (nicht autoritative iamMemberBinding-Typen) IAMPolicyMember <resource_type>_iam_member (Beispiel: google_project_iam_member)
Zusammengesetzte Typen Zusammengesetzte Typen wurden verworfen. DM Convert konvertiert sie nicht. Zusammengesetzte Typen wurden verworfen. DM Convert konvertiert sie nicht.
Aktionen, Anbieter benutzerdefinierter Typen und Ausgaben Nicht unterstützt. Aktionen mit deklarativen Entsprechungen in Terraform werden konvertiert. Weitere Informationen finden Sie unter Unterstützung für Aktionen.

Unterstützung für Aktionen in DM Convert (für Terraform)

Aktionen sind eine Funktion in der Vorabversion für Deployment Manager, die die verfügbaren API-Methoden erweitert. Aktionen werden nicht unterstützt und bei der DM Convert konvertiert keine Aktionen, die keine deklarativen Entsprechungen in Terraform haben. Beispiel:

  • APIs patchen, löschen und auflisten

  • In benutzerdefinierten Typanbietern definierte APIs

  • Benutzerdefinierte APIs wie sqladmin-v1beta4:sql.instances.restart

DM Convert unterstützt die Konvertierung in Terraform-Entsprechungen für Aktionen in den folgenden Fällen:

  • Es ersetzt Aktionsaufrufe für APIs, die eine Ressource mit entsprechenden Terraform-Ressourcen einfügen. action: gcp-types/storage-v1:storage.buckets.insert wird beispielsweise in google_storage_bucket konvertiert.

  • Es konvertiert Aktionsaufrufe für APIs, die eine Ressource nach Möglichkeit in Terraform-data-Typen abrufen. actions: gcp-types/compute-v1:compute.subnetworks.get wird beispielsweise in google_compute_subnetwork konvertiert.

  • setIamPolicy konvertiert Befehle in (autoritative) *_iam_policy- oder (nicht autoritative) *_iam_member-Ressourcen, je nachdem, ob sie mit getIamPolicy verwendet werden oder nicht.

Informationen zur Migration der Nutzung von Aktionen zu deklarativen Alternativen in Deployment Manager finden Sie unter Nutzung von Aktionen ersetzen.

Workflow für die Konvertierung in Terraform

So konvertieren Sie Deployment Manager-Konfigurationen mit DM Convert in Terraform:

  1. Ermitteln Sie die Deployment Manager-Konfiguration, die Sie in Terraform konvertieren möchten.
  2. Gleichen Sie alle aktiven Bereitstellungen der Konfiguration ab, um sicherzustellen, dass Ihre Ressourcen auf dem neuesten Stand sind.
  3. Wenn Sie die Konfiguration in Terraform konvertieren möchten, führen Sie das DM Convert-Tool lokal aus.
  4. Prüfen Sie, ob die generierte Terraform-Konfiguration dem aktuellen Status Ihrer Ressourcen entspricht.
  5. Löschen Sie die Deployment Manager-Bereitstellung. Damit Ihre Ressourcen erhalten bleiben, wenn Sie die Bereitstellung löschen, legen Sie delete-policy auf abandon fest.

Wir empfehlen, die Best Practices für Terraform zu befolgen, z. B.:

Eine detaillierte Anleitung für diesen Workflow finden Sie unter Deployment Manager-Konfigurationen mit DM Convert konvertieren.

Datenerfassung in DM Convert

Was wird standardmäßig erfassen

Das Tool DM Convert sendet standardmäßig anonyme Nutzungsdaten an Google, damit wir das Tool warten und verbessern können. Wenn das Tool DM Convert ausgeführt wird, werden Daten zum angeforderten Vorgang, zum Erfolg des Vorgangs und zum Zeitpunkt der Konvertierung erfasst. Diese Daten sind anonym und schließen alle personenbezogenen Daten, sensiblen Daten oder Kundeninhalte aus.

Die Nutzungsdaten können Folgendes enthalten:

  • Eingabeparameter für den Konvertierungsbefehl: Wir erfassen die Parameterwerte Ihres Konvertierungsbefehls, wenn Sie das Tool ausführen, einschließlich des Ausgabeformats (KRM oder Terraform) und boolescher Darstellungen, ob andere Flags angegeben sind (die spezifischen Werte dieser Flags werden nicht erfasst).

  • Konvertierungsergebnis: Wir zeichnen die Ergebnisse der Konvertierung auf, einschließlich des Konvertierungsstatus (SUCCESS oder FAILURE) sowie des Fehlercodes und der Fehlermeldung, wenn ein Problem auftritt.

  • Konvertierungszeit:Wir erfassen die Start- und Endzeiten der Konvertierung.

So verwenden wir diese Daten

Google erfasst und verarbeitet die Nutzungsdaten zu folgenden Zwecken:

  • Zum besseren Verständnis, wie das Tool eingesetzt wird und welche Features und Einstellungen am häufigsten verwendet werden.

  • Diagnose von fehlgeschlagener Nutzung des Tools und Anbieten von technischer Unterstützung und Hinweisen für Nutzer.

  • Verbesserung des Tools durch Beheben von Problemen und Einführen weiterer Features.

Datenerfassung deaktivieren

Google erfasst standardmäßig Nutzungsdaten, wenn Sie eine Konvertierung ausführen, aber Sie können diese Erfassung von Daten deaktivieren.

Wenn Sie die Datenerfassung für eine bestimmte Konvertierung deaktivieren möchten, können Sie in Ihrem Konvertierungsbefehl das Flag --opt_out_data_collection=true angeben. Wenn Sie diese Datenerfassung weiterhin deaktivieren möchten, müssen Sie das Flag jedes Mal angeben, wenn Sie eine Konvertierung ausführen.

Wenn Sie die Datenerfassung für eine bestimmte Konvertierung aktivieren möchten, können Sie das Flag --opt_out_data_collection=false in Ihrem Konvertierungsbefehl angeben oder das Flag in Ihrem Befehl weglassen.