Passaggio 1: prepara il progetto

Questa pagina descrive i passaggi per preparare il progetto Google Cloud prima di eseguire il deployment di Manufacturing Data Engine (MDE) utilizzando Terraform.

Panoramica

MDE viene fornito come soluzione confezionata. Uno script Terraform esegue il deployment di tutti i componenti necessari e del codice di integrazione nel tuo progetto Google Cloud . Ciò sblocca la massima flessibilità per consentirti di modificare ed estendere l'architettura in base alle tue esigenze.

Lo script di deployment configura automaticamente la soluzione, presupponendo che siano presenti prerequisiti come un progetto Google Cloud e le autorizzazioni. Per alcuni clienti potrebbero essere presenti limitazioni Google Cloud estese e personalizzate. In questo caso, il deployment potrebbe richiedere un lavoro aggiuntivo (tramite Google Cloud consulenza o un partner per l'integrazione dei sistemi) per aggirare queste limitazioni.

1. Preparare l'ambiente client

Nel tuo ambiente client devono essere installati i seguenti strumenti CLI nella versione più recente:

2. Prepara il progetto Google Cloud

Assicurati che il tuo progetto Google Cloud abbia le seguenti caratteristiche:

  • Un account di fatturazione Cloud attivo.
  • Fa parte di un'organizzazione con un account Cloud Identity o Workspace attivo.

  • Imposta il progetto predefinito sul progetto di deployment MDE utilizzando il seguente comando:

    gcloud config set project PROJECT_ID
    

    Sostituisci quanto segue:

    • PROJECT_ID con l'ID progetto di deployment MDE.

3. Creazione di account di servizio

Nel tuo progetto Google Cloud avrai bisogno di due service account diversi:

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

Sostituisci quanto segue:

  • PROJECT_ID con l'ID progetto di deployment MDE.

Un utente della tua organizzazione con il ruolo roles/iam.serviceAccountCreator può creare i service account mde-df-worker e mde-tf con i seguenti comandi:

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. Concedi i ruoli per il account di servizio mde-tf

Concedi al account di servizio mde-tf, utilizzato da Terraform per i deployment, i seguenti ruoli:

  • 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

Un utente con il ruolo roles/iam.securityAdmin o autorizzazioni equivalenti può concedere i ruoli richiesti alaccount di serviziot mde-tf con i seguenti comandi:

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. Rappresentare il account di servizio mde-tf

Consenti al tuo account utente di simulare l'identità dell'account di servizio mde-tf se disponi del ruolo roles/iam.serviceAccountTokenCreator.

Un utente con il ruolo roles/iam.serviceAccountAdmin o autorizzazioni equivalenti può concedere al tuo account utente il ruolo nel service account mde-tf utilizzando il seguente comando:

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. Abilita le API Google Cloud

Assicurati che Google Cloud le API siano abilitate.

Per eseguire gli script Terraform devono essere abilitate le seguenti API: Google Cloud

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

Un utente con il ruolo roles/servicemanagement.serviceConsumer o autorizzazioni equivalenti può abilitare le API utilizzando il seguente comando:

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

7. Prepara un bucket Cloud Storage

Prepara un bucket Cloud Storage per archiviare lo stato di Terraform:

Terraform richiede un bucket Cloud Storage per salvare lo stato di Terraform (PROJECT_ID-tf) e il service account mde-tf deve disporre delle autorizzazioni di lettura e scrittura su questo bucket.

Un utente con il ruolo roles/storage.admin o autorizzazioni equivalenti può creare il bucket e concedere a mde-tf le autorizzazioni necessarie con il seguente comando:

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'