Langkah 1: Siapkan project Anda

Halaman ini menjelaskan langkah-langkah untuk menyiapkan project Google Cloud sebelum men-deploy Manufacturing Data Engine (MDE) menggunakan Terraform.

Google Cloud

Ringkasan

MDE dikirimkan sebagai solusi yang dikemas. Skrip Terraform men-deploy semua komponen yang diperlukan dan kode integrasi ke dalam Google Cloud project Anda. Hal ini memberikan fleksibilitas maksimal bagi Anda untuk memodifikasi dan memperluas arsitektur berdasarkan kebutuhan Anda.

Skrip deployment secara otomatis menyiapkan dan mengonfigurasi solusi, dengan asumsi prasyarat seperti project Google Cloud dan izin sudah ada. Beberapa pelanggan mungkin memiliki pembatasan yang luas dan disesuaikan. Google CloudJika demikian, pekerjaan tambahan (melalui Google Cloud Konsultasi atau partner Integrasi Sistem) mungkin diperlukan untuk menavigasi batasan ini saat deployment.

1. Menyiapkan lingkungan klien

Lingkungan klien Anda harus menginstal alat CLI berikut dalam versi terbarunya:

2. Menyiapkan project Google Cloud

Pastikan project Google Cloud Anda memiliki karakteristik berikut:

  • Akun Penagihan Cloud yang aktif.
  • Akun tersebut adalah bagian dari organisasi dengan akun Cloud Identity atau Workspace yang aktif.

  • Siapkan project default ke project deployment MDE menggunakan perintah berikut:

    gcloud config set project PROJECT_ID
    

    Ganti kode berikut:

    • PROJECT_ID dengan project ID deployment MDE.

3. Membuat akun layanan

Anda akan memerlukan dua Akun Layanan yang berbeda di Google Cloud project Anda:

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

Ganti kode berikut:

  • PROJECT_ID dengan project ID deployment MDE.

Pengguna di organisasi Anda dengan peran roles/iam.serviceAccountCreator dapat membuat akun layanan mde-df-worker dan mde-tf dengan perintah berikut:

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. Memberikan peran untuk akun layanan mde-tf

Berikan peran berikut kepada akun layanan mde-tf, yang digunakan oleh Terraform untuk deployment:

  • 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

Pengguna dengan peran roles/iam.securityAdmin atau izin yang setara dapat memberikan peran yang diperlukan ke akun layanan mde-tf dengan perintah berikut:

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. Meniru identitas akun layanan mde-tf

Izinkan akun pengguna Anda meniru identitas akun layanan mde-tf jika Anda memiliki peran roles/iam.serviceAccountTokenCreator.

Pengguna dengan peran roles/iam.serviceAccountAdmin atau izin yang setara dapat memberikan peran ke akun pengguna Anda di akun layanan mde-tf menggunakan perintah berikut:

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

Pastikan Google Cloud API diaktifkan.

API berikut harus diaktifkan untuk menjalankan skrip Terraform: Google Cloud

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

Pengguna dengan peran roles/servicemanagement.serviceConsumer atau izin yang setara dapat mengaktifkan API menggunakan perintah berikut:

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

7. Menyiapkan Bucket Cloud Storage

Siapkan Bucket Cloud Storage untuk menyimpan status Terraform:

Terraform memerlukan bucket Cloud Storage untuk menyimpan status Terraform (PROJECT_ID-tf), dan akun layanan mde-tf harus memiliki izin baca dan tulis di bucket ini.

Pengguna dengan peran roles/storage.admin atau izin yang setara dapat membuat bucket dan memberikan izin yang diperlukan kepada mde-tf dengan perintah berikut:

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'