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 CloudRingkasan
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:
Google Cloud CLI dengan komponen tambahan berikut yang diinstal:
- kubectl
- cbt
- Terraform CLI
(v1.9.x atau yang lebih baru)
- Pastikan Anda juga memeriksa Persyaratan minimum untuk Terraform dan penyedia Terraform.
- Helm CLI (v3.9.x atau yang lebih baru)
Anda dapat menggunakan lingkungan klien apa pun untuk men-deploy MDE, tetapi Anda dapat menghemat waktu dengan men-deploy-nya dari Cloud Shell karena sebagian besar alat yang diperlukan sudah terinstal.
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_IDGanti kode berikut:
PROJECT_IDdengan 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.commde-tf@PROJECT_ID.iam.gserviceaccount.com.
Ganti kode berikut:
PROJECT_IDdengan 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.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
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.comiamcredentials.googleapis.comcloudresourcemanager.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'