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:
Google Cloud CLI con i seguenti componenti aggiuntivi installati:
- kubectl
- cbt
- Terraform CLI
(v1.9.x o versioni successive)
- Assicurati di controllare anche i requisiti minimi per Terraform e i provider Terraform.
- CLI Helm (v3.9.x o versioni successive)
Puoi utilizzare qualsiasi ambiente client per eseguire il deployment di MDE, ma puoi risparmiare tempo eseguendolo da Cloud Shell, poiché la maggior parte degli strumenti richiesti è già installata.
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_IDSostituisci quanto segue:
PROJECT_IDcon 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.commde-tf@PROJECT_ID.iam.gserviceaccount.com.
Sostituisci quanto segue:
PROJECT_IDcon 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.adminroles/bigtable.adminroles/cloudsql.adminroles/compute.instanceAdminroles/compute.loadBalancerAdminroles/compute.networkAdminroles/compute.securityAdminroles/container.adminroles/container.developerroles/dataflow.adminroles/dns.adminroles/iam.serviceAccountAdminroles/iam.serviceAccountUserroles/pubsub.adminroles/resourcemanager.projectIamAdminroles/secretmanager.adminroles/secretmanager.secretVersionManagerroles/serviceusage.serviceUsageAdminroles/storage.adminroles/monitoring.adminroles/redis.adminroles/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.comiamcredentials.googleapis.comcloudresourcemanager.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'