Schritt 1: Projekt vorbereiten

Auf dieser Seite wird beschrieben, wie Sie Ihr Google Cloud -Projekt vorbereiten, bevor Sie Manufacturing Data Engine (MDE) mit Terraform bereitstellen.

Übersicht

MDE wird als Paketlösung bereitgestellt. Über ein Terraform-Skript werden alle erforderlichen Komponenten und der Integrationscode in Ihrem Google Cloud -Projekt bereitgestellt. So können Sie die Architektur flexibel an Ihre Anforderungen anpassen und erweitern.

Die Lösung wird von einem Bereitstellungsskript automatisch eingerichtet und konfiguriert, sofern die erforderlichen Voraussetzungen erfüllt sind (z. B. ein Google Cloud -Projekt, Berechtigungen usw.). Für einige Kunden gelten möglicherweise umfangreiche, benutzerdefinierte Google Cloud Einschränkungen. In diesem Fall sind für die Bereitstellung möglicherweise zusätzliche Schritte über Google Cloud Consulting oder einen Systemintegrationspartner erforderlich, um diese Einschränkungen zu umgehen.

1. Clientumgebung vorbereiten

In Ihrer Clientumgebung müssen die folgenden CLI-Tools in der jeweils aktuellen Version installiert sein:

2. Google Cloud -Projekt vorbereiten

Ihr Google Cloud Projekt muss die folgenden Anforderungen erfüllen:

  • Ein aktives Cloud-Rechnungskonto.
  • Sie ist Teil einer Organisation mit einem aktiven Cloud Identity- oder Workspace-Konto.

  • Richten Sie das Standardprojekt mit dem folgenden Befehl auf das MDE-Bereitstellungsprojekt aus:

    gcloud config set project PROJECT_ID
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID durch die ID des MDE-Bereitstellungsprojekts.

3. Dienstkonten erstellen

Sie benötigen zwei verschiedene Dienstkonten in Ihrem Google Cloud -Projekt:

  • mde-df-worker@PROJECT_ID.iam.gserviceaccount.com
  • mde-tf@PROJECT_ID.iam.gserviceaccount.com.

Ersetzen Sie Folgendes:

  • PROJECT_ID durch die ID des MDE-Bereitstellungsprojekts.

Ein Nutzer in Ihrer Organisation mit der Rolle roles/iam.serviceAccountCreator kann die Dienstkonten mde-df-worker und mde-tf mit den folgenden Befehlen erstellen:

gcloud iam service-accounts create mde-df-worker \
--description="Manufacturing Data Engine Dataflow Worker Service Account" \
--display-name="Manufacturing Data Engine Dataflow Worker Service Account"

gcloud iam service-accounts create mde-tf \
--description="Manufacturing Data Engine Terraform Service Account" \
--display-name="Manufacturing Data Engine Terraform Service Account"

4. Rollen für das Dienstkonto mde-tf zuweisen

Weisen Sie dem Dienstkonto mde-tf, das von Terraform für Bereitstellungen verwendet wird, die folgenden Rollen zu:

  • roles/bigquery.admin
  • roles/bigtable.admin
  • roles/cloudsql.admin
  • roles/compute.instanceAdmin
  • roles/compute.loadBalancerAdmin
  • roles/compute.networkAdmin
  • roles/compute.securityAdmin
  • roles/container.admin
  • roles/container.developer
  • roles/dataflow.admin
  • roles/dns.admin
  • roles/iam.serviceAccountAdmin
  • roles/iam.serviceAccountUser
  • roles/pubsub.admin
  • roles/resourcemanager.projectIamAdmin
  • roles/secretmanager.admin
  • roles/secretmanager.secretVersionManager
  • roles/serviceusage.serviceUsageAdmin
  • roles/storage.admin
  • roles/monitoring.admin
  • roles/redis.admin
  • roles/file.editor

Ein Nutzer mit der Rolle roles/iam.securityAdmin oder entsprechenden Berechtigungen kann dem Dienstkonto mde-tf mit den folgenden Befehlen die erforderlichen Rollen zuweisen:

export PROJECT_ID=$(gcloud config get-value project)
export SA_TERRAFORM="mde-tf"

gcloud projects add-iam-policy-binding ${PROJECT_ID} \
--member="serviceAccount:${SA_TERRAFORM}@${PROJECT_ID}.iam.gserviceaccount.com" \
--role='roles/bigquery.admin'

gcloud projects add-iam-policy-binding ${PROJECT_ID} \
--member="serviceAccount:${SA_TERRAFORM}@${PROJECT_ID}.iam.gserviceaccount.com" \
--role='roles/dataflow.admin'

gcloud projects add-iam-policy-binding ${PROJECT_ID} \
--member="serviceAccount:${SA_TERRAFORM}@${PROJECT_ID}.iam.gserviceaccount.com" \
--role='roles/bigtable.admin'

gcloud projects add-iam-policy-binding ${PROJECT_ID} \
--member="serviceAccount:${SA_TERRAFORM}@${PROJECT_ID}.iam.gserviceaccount.com" \
--role='roles/cloudsql.admin'

gcloud projects add-iam-policy-binding ${PROJECT_ID} \
--member="serviceAccount:${SA_TERRAFORM}@${PROJECT_ID}.iam.gserviceaccount.com" \
--role='roles/compute.instanceAdmin'

gcloud projects add-iam-policy-binding ${PROJECT_ID} \
--member="serviceAccount:${SA_TERRAFORM}@${PROJECT_ID}.iam.gserviceaccount.com" \
--role='roles/compute.loadBalancerAdmin'

gcloud projects add-iam-policy-binding ${PROJECT_ID} \
--member="serviceAccount:${SA_TERRAFORM}@${PROJECT_ID}.iam.gserviceaccount.com" \
--role='roles/compute.networkAdmin'

gcloud projects add-iam-policy-binding ${PROJECT_ID} \
--member="serviceAccount:${SA_TERRAFORM}@${PROJECT_ID}.iam.gserviceaccount.com" \
--role='roles/compute.securityAdmin'

gcloud projects add-iam-policy-binding ${PROJECT_ID} \
--member="serviceAccount:${SA_TERRAFORM}@${PROJECT_ID}.iam.gserviceaccount.com" \
--role='roles/container.admin'

gcloud projects add-iam-policy-binding ${PROJECT_ID} \
--member="serviceAccount:${SA_TERRAFORM}@${PROJECT_ID}.iam.gserviceaccount.com" \
--role='roles/container.developer'

gcloud projects add-iam-policy-binding ${PROJECT_ID} \
--member="serviceAccount:${SA_TERRAFORM}@${PROJECT_ID}.iam.gserviceaccount.com" \
--role='roles/dns.admin'

gcloud projects add-iam-policy-binding ${PROJECT_ID} \
--member="serviceAccount:${SA_TERRAFORM}@${PROJECT_ID}.iam.gserviceaccount.com" \
--role='roles/iam.serviceAccountAdmin'

gcloud projects add-iam-policy-binding ${PROJECT_ID} \
--member="serviceAccount:${SA_TERRAFORM}@${PROJECT_ID}.iam.gserviceaccount.com" \
--role='roles/iam.serviceAccountUser'

gcloud projects add-iam-policy-binding ${PROJECT_ID} \
--member="serviceAccount:${SA_TERRAFORM}@${PROJECT_ID}.iam.gserviceaccount.com" \
--role='roles/pubsub.admin'

gcloud projects add-iam-policy-binding ${PROJECT_ID} \
--member="serviceAccount:${SA_TERRAFORM}@${PROJECT_ID}.iam.gserviceaccount.com" \
--role='roles/resourcemanager.projectIamAdmin'

gcloud projects add-iam-policy-binding ${PROJECT_ID} \
--member="serviceAccount:${SA_TERRAFORM}@${PROJECT_ID}.iam.gserviceaccount.com" \
--role='roles/secretmanager.admin'

gcloud projects add-iam-policy-binding ${PROJECT_ID} \
--member="serviceAccount:${SA_TERRAFORM}@${PROJECT_ID}.iam.gserviceaccount.com" \
--role='roles/secretmanager.secretVersionManager'

gcloud projects add-iam-policy-binding ${PROJECT_ID} \
--member="serviceAccount:${SA_TERRAFORM}@${PROJECT_ID}.iam.gserviceaccount.com" \
--role='roles/serviceusage.serviceUsageAdmin'

gcloud projects add-iam-policy-binding ${PROJECT_ID} \
--member="serviceAccount:${SA_TERRAFORM}@${PROJECT_ID}.iam.gserviceaccount.com" \
--role='roles/storage.admin'

gcloud projects add-iam-policy-binding ${PROJECT_ID} \
--member="serviceAccount:${SA_TERRAFORM}@${PROJECT_ID}.iam.gserviceaccount.com" \
--role='roles/monitoring.admin'

gcloud projects add-iam-policy-binding ${PROJECT_ID} \
--member="serviceAccount:${SA_TERRAFORM}@${PROJECT_ID}.iam.gserviceaccount.com" \
--role='roles/redis.admin'

gcloud projects add-iam-policy-binding ${PROJECT_ID} \
--member="serviceAccount:${SA_TERRAFORM}@${PROJECT_ID}.iam.gserviceaccount.com" \
--role='roles/file.editor'

5. Identität des Dienstkontos mde-tf übernehmen

Erlauben Sie Ihrem Nutzerkonto, die Identität des Dienstkontos mde-tf zu übernehmen, wenn Sie die Rolle roles/iam.serviceAccountTokenCreator haben.

Ein Nutzer mit der Rolle roles/iam.serviceAccountAdmin oder entsprechenden Berechtigungen kann Ihrem Nutzerkonto die Rolle für das Dienstkonto mde-tf mit dem folgenden Befehl zuweisen:

export USER_EMAIL=$(gcloud auth list --filter=status:ACTIVE --format="value(account)")
export PROJECT_ID=$(gcloud config get-value project)
gcloud iam service-accounts add-iam-policy-binding \
--role roles/iam.serviceAccountTokenCreator \
--member "user:${USER_EMAIL}" \
"mde-tf"@"${PROJECT_ID}".iam.gserviceaccount.com

6. Google Cloud APIs aktivieren

Prüfen Sie, ob die Google Cloud APIs aktiviert sind.

Die folgenden Google Cloud APIs müssen aktiviert sein, um Terraform-Scripts auszuführen:

  • compute.googleapis.com
  • iamcredentials.googleapis.com
  • cloudresourcemanager.googleapis.com

Ein Nutzer mit der Rolle roles/servicemanagement.serviceConsumer oder entsprechenden Berechtigungen kann die APIs mit dem folgenden Befehl aktivieren:

gcloud services enable \
compute.googleapis.com \
iamcredentials.googleapis.com \
cloudresourcemanager.googleapis.com

7. Cloud Storage-Bucket vorbereiten

Cloud Storage-Bucket zum Speichern des Terraform-Zustands vorbereiten:

Terraform benötigt einen Cloud Storage-Bucket zum Speichern des Terraform-Status (PROJECT_ID-tf). Das Dienstkonto mde-tf muss Lese- und Schreibberechtigungen für diesen Bucket haben.

verweisen.

Ein Nutzer mit der Rolle roles/storage.admin oder entsprechenden Berechtigungen kann den Bucket erstellen und dem mde-tf mit dem folgenden Befehl die erforderlichen Berechtigungen erteilen:

export PROJECT_ID=$(gcloud config get-value project)

gcloud storage buckets create "gs://${PROJECT_ID}-tf"

gcloud storage buckets add-iam-policy-binding gs://"${PROJECT_ID}-tf" \
--member="serviceAccount:mde-tf@${PROJECT_ID}.iam.gserviceaccount.com" \
--role='roles/storage.objectViewer'

gcloud storage buckets add-iam-policy-binding gs://"${PROJECT_ID}-tf" \
--member="serviceAccount:mde-tf@${PROJECT_ID}.iam.gserviceaccount.com" \
--role='roles/storage.objectCreator'