Batch adalah layanan terkelola sepenuhnya yang memungkinkan Anda menjadwalkan, memasukkan dalam antrean, dan menjalankan beban kerja pemrosesan batch di instance virtual machine (VM) Compute Engine. Batch menyediakan resource dan mengelola kapasitas untuk Anda, sehingga beban kerja batch Anda dapat berjalan dalam skala besar.
Alur kerja memungkinkan Anda menjalankan layanan yang diperlukan dalam urutan yang Anda tentukan yang dijelaskan menggunakan sintaksis Alur kerja.
Dalam tutorial ini, Anda akan menggunakan konektor Alur Kerja untuk Batch untuk menjadwalkan dan menjalankan tugas Batch yang menjalankan enam tugas secara paralel di dua VM Compute Engine. Dengan menggunakan Batch dan Alur Kerja, Anda dapat menggabungkan keunggulan yang ditawarkannya serta menyediakan dan mengatur seluruh proses secara efisien.
Tujuan
Dalam tutorial ini, Anda akan:- Buat repositori Artifact Registry untuk image container Docker.
- Dapatkan kode untuk beban kerja pemrosesan batch dari GitHub: program contoh yang menghasilkan bilangan prima dalam batch 10.000.
- Build image Docker untuk workload.
- Deploy dan jalankan alur kerja yang melakukan hal berikut:
- Membuat bucket Cloud Storage untuk menyimpan hasil generator bilangan prima.
- Menjadwalkan dan menjalankan tugas Batch yang menjalankan penampung Docker sebagai enam tugas secara paralel di dua VM Compute Engine.
- Secara opsional, menghapus tugas Batch setelah selesai.
- Pastikan bahwa hasilnya seperti yang diharapkan dan bahwa batch bilangan prima yang dihasilkan disimpan di Cloud Storage.
Anda dapat menjalankan sebagian besar perintah berikut di konsol Google Cloud, atau menjalankan semua perintah menggunakan Google Cloud CLI di terminal atau Cloud Shell.
Biaya
Dalam dokumen ini, Anda akan menggunakan komponen Google Cloud yang dapat ditagih berikut:
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Sebelum memulai
Batasan keamanan yang ditentukan oleh organisasi mungkin mencegah Anda menyelesaikan langkah-langkah berikut. Untuk mengetahui informasi pemecahan masalah, lihat Mengembangkan aplikasi di lingkungan Google Cloud yang terbatas.
Konsol
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
Pastikan penagihan diaktifkan untuk project Google Cloud Anda. Pelajari cara memeriksa apakah penagihan telah diaktifkan pada suatu project.
Aktifkan Artifact Registry, Batch, Cloud Build, Compute Engine, Workflow Executions, dan Workflows API.
Buat akun layanan untuk alur kerja Anda yang akan digunakan untuk autentikasi dengan layanan Google Cloud lainnya dan berikan peran yang sesuai:
Di konsol Google Cloud, buka halaman Create service account.
Pilih project Anda.
Di kolom Nama akun layanan, masukkan nama. Konsol Google Cloud akan mengisi kolom ID akun layanan berdasarkan nama ini.
Di kolom Deskripsi akun layanan, masukkan sebuah deskripsi. Contoh,
Service account for tutorial
.Klik Buat dan lanjutkan.
Di daftar Select a role, filter peran berikut untuk diberikan ke akun layanan yang dikelola pengguna yang Anda buat pada langkah sebelumnya:
- Editor tugas batch: untuk mengedit tugas Batch.
- Logs Writer: untuk menulis log.
- Storage Admin: untuk mengontrol resource Cloud Storage.
Untuk peran tambahan, klik
Tambahkan peran lain, lalu tambahkan setiap peran tambahan.Klik Lanjutkan.
Untuk menyelesaikan pembuatan akun, klik Selesai.
Berikan peran Pengguna Akun Layanan IAM di akun layanan default ke akun layanan yang dikelola pengguna yang dibuat di langkah sebelumnya. Setelah Anda mengaktifkan Compute Engine API, akun layanan default adalah akun layanan default Compute Engine (
PROJECT_NUMBER-compute@
), dan izin biasanya ditetapkan melalui peranroles/iam.serviceAccountUser
.Di halaman Service Accounts, klik alamat email akun layanan default (
PROJECT_NUMBER-compute@
).Klik tab Izin.
Klik tombol
Grant access.Untuk menambahkan akun utama baru, masukkan alamat email akun layanan Anda (
SERVICE_ACCOUNT_NAME@PROJECT_ID.
).Dalam daftar Select a role, pilih peran Service Accounts > Service Account User.
Klik Simpan.
gcloud
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Pastikan penagihan diaktifkan untuk project Google Cloud Anda. Pelajari cara memeriksa apakah penagihan telah diaktifkan pada suatu project.
Aktifkan Artifact Registry, Batch, Cloud Build, Compute Engine Workflow Executions, dan Workflows API.
gcloud services enable artifactregistry.googleapis.com \ batch.googleapis.com \ cloudbuild.googleapis.com \ compute.googleapis.com \ workflowexecutions.googleapis.com \ workflows.googleapis.com
Buat akun layanan untuk alur kerja Anda yang akan digunakan untuk autentikasi dengan layanan Google Cloud lainnya dan berikan peran yang sesuai.
Buat akun layanan:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Ganti
SERVICE_ACCOUNT_NAME
dengan nama untuk akun layanan.Berikan peran ke akun layanan yang dikelola pengguna yang Anda buat di langkah sebelumnya. Jalankan perintah berikut satu kali untuk setiap peran IAM berikut:
roles/batch.jobsEditor
: untuk mengedit Tugas batch.roles/logging.logWriter
: untuk menulis log.roles/storage.admin
: untuk mengontrol resource Cloud Storage.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID. \ --role=ROLE
Ganti kode berikut:
PROJECT_ID
: project ID tempat Anda membuat akun layananROLE
: peran yang akan diberikan
Berikan peran Pengguna Akun Layanan IAM di akun layanan default ke akun layanan yang dikelola pengguna yang Anda buat di langkah sebelumnya. Setelah Anda mengaktifkan Compute Engine API, akun layanan default adalah akun layanan default Compute Engine (
PROJECT_NUMBER-compute@
), dan izin biasanya ditetapkan melalui peranroles/iam.serviceAccountUser
.PROJECT_NUMBER=$(gcloud projects describe PROJECT_ID --format='value(projectNumber)') gcloud iam service-accounts add-iam-policy-binding \ $PROJECT_NUMBER-compute@ \ --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID. \ --role=roles/iam.serviceAccountUser
Membuat repositori Artifact Registry
Buat repositori untuk menyimpan image container Docker Anda.
Konsol
Di konsol Google Cloud, buka halaman Repositories.
Klik
Create Repository.Masukkan containers sebagai nama repositori.
Untuk Format, pilih Docker.
Untuk Jenis Lokasi, pilih Region.
Dalam daftar Region, pilih us-central1.
Klik Create.
gcloud
Jalankan perintah berikut:
gcloud artifacts repositories create containers \
--repository-format=docker \
--location=us-central1
Anda telah membuat repositori Artifact Registry bernama containers
di
region us-central1
. Untuk mengetahui informasi selengkapnya tentang region yang didukung, lihat
Lokasi Artifact Registry.
Mendapatkan contoh kode
Google Cloud menyimpan kode sumber aplikasi untuk tutorial ini di GitHub. Anda dapat meng-clone repositori tersebut atau mendownload contohnya.
Clone repositori aplikasi contoh ke komputer lokal Anda:
git clone https://github.com/GoogleCloudPlatform/batch-samples.git
Atau, Anda dapat mendownload sampel dalam file
main.zip
dan mengekstraknya.Ubah ke direktori yang berisi kode contoh:
cd batch-samples/primegen
Anda kini memiliki kode sumber untuk aplikasi di lingkungan pengembangan.
Membangun image Docker menggunakan Cloud Build
Dockerfile
berisi informasi yang diperlukan untuk mem-build image Docker
menggunakan Cloud Build. Jalankan perintah berikut untuk mem-buildnya:
gcloud builds submit \
-t us-central1-docker.pkg.dev/PROJECT_ID/containers/primegen-service:v1 PrimeGenService/
PROJECT_ID
dengan ID project Google Cloud Anda
Setelah build selesai, Anda akan melihat output yang mirip dengan berikut ini:
DONE
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ID: a54818cc-5d14-467b-bfda-5fc9590af68c
CREATE_TIME: 2022-07-29T01:48:50+00:00
DURATION: 48S
SOURCE: gs://project-name_cloudbuild/source/1659059329.705219-17aee3a424a94679937a7200fab15bcf.tgz
IMAGES: us-central1-docker.pkg.dev/project-name/containers/primegen-service:v1
STATUS: SUCCESS
Dengan menggunakan Dockerfile, Anda telah mem-build image Docker bernama primegen-service
dan
mengirim image tersebut ke repositori Artifact Registry bernama containers
.
Men-deploy alur kerja yang menjadwalkan dan menjalankan tugas Batch
Alur kerja berikut menjadwalkan dan menjalankan tugas Batch yang menjalankan penampung Docker sebagai enam tugas secara paralel di dua VM Compute Engine. Hasilnya adalah pembuatan enam batch bilangan prima, yang disimpan di bucket Cloud Storage.
Konsol
Di konsol Google Cloud, buka halaman Workflows.
Klik
Buat.Masukkan nama untuk alur kerja baru, seperti
batch-workflow
.Dalam daftar Region, pilih us-central1.
Pilih Service account yang sebelumnya Anda buat.
Klik Berikutnya.
Di editor alur kerja, masukkan definisi berikut untuk alur kerja Anda:
YAML
JSON
Klik Deploy.
gcloud
Buat file kode sumber untuk alur kerja Anda:
touch batch-workflow.JSON_OR_YAML
Ganti
JSON_OR_YAML
denganyaml
ataujson
, bergantung pada format alur kerja Anda.Di editor teks, salin alur kerja berikut ke file kode sumber Anda:
YAML
JSON
Deploy alur kerja dengan memasukkan perintah berikut:
gcloud workflows deploy batch-workflow \ --source=batch-workflow.yaml \ --location=us-central1 \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.
Ganti
SERVICE_ACCOUNT_NAME
dengan nama akun layanan yang Anda buat sebelumnya.
Menjalankan alur kerja
Mengeksekusi alur kerja akan menjalankan definisi alur kerja saat ini yang terkait dengan alur kerja.
Konsol
Di konsol Google Cloud, buka halaman Workflows.
Di halaman Alur kerja, klik alur kerja batch-workflow untuk membuka halaman detailnya.
Di halaman Workflow details, klik play_arrow Execute.
Klik Execute lagi.
Eksekusi alur kerja akan memerlukan waktu beberapa menit.
Lihat hasil alur kerja di panel Output.
Hasilnya akan terlihat seperti berikut:
{ "bucket": "project-name-job-primegen-TIMESTAMP", "jobId": "job-primegen-TIMESTAMP" }
gcloud
Menjalankan alur kerja:
gcloud workflows run batch-workflow \ --location=us-central1
Eksekusi alur kerja akan memerlukan waktu beberapa menit.
Anda dapat memeriksa status eksekusi yang berjalan lama.
Untuk mendapatkan status eksekusi terakhir yang selesai, jalankan perintah berikut:
gcloud workflows executions describe-last
Hasilnya akan mirip dengan berikut ini:
name: projects/PROJECT_NUMBER/locations/us-central1/workflows/batch-workflow/executions/EXECUTION_ID result: '{"bucket":"project-name-job-primegen-TIMESTAMP","jobId":"job-primegen-TIMESTAMP"}' startTime: '2022-07-29T16:08:39.725306421Z' state: SUCCEEDED status: currentSteps: - routine: main step: returnResult workflowRevisionId: 000001-9ba
Membuat daftar objek di bucket output
Anda dapat mengonfirmasi bahwa hasilnya seperti yang diharapkan dengan mencantumkan objek di bucket output Cloud Storage.
Konsol
- Di Konsol Google Cloud, buka halaman Bucket Cloud Storage.
Di listing bucket, klik nama bucket yang isinya ingin Anda lihat.
Hasilnya akan mirip dengan yang berikut ini, dengan total enam file, dan setiap file mencantumkan batch 10.000 bilangan prima:
primes-1-10000.txt primes-10001-20000.txt primes-20001-30000.txt primes-30001-40000.txt primes-40001-50000.txt primes-50001-60000.txt
gcloud
Ambil nama bucket output Anda:
gcloud storage ls
Outputnya mirip dengan hal berikut ini:
gs://PROJECT_ID-job-primegen-TIMESTAMP/
Buat daftar objek di bucket output Anda:
gcloud storage ls gs://PROJECT_ID-job-primegen-TIMESTAMP/** --recursive
Ganti
TIMESTAMP
dengan stempel waktu yang ditampilkan oleh perintah sebelumnya.Outputnya akan mirip dengan berikut ini, dengan total enam file, dan setiap file mencantumkan batch 10.000 bilangan prima:
gs://project-name-job-primegen-TIMESTAMP/primes-1-10000.txt gs://project-name-job-primegen-TIMESTAMP/primes-10001-20000.txt gs://project-name-job-primegen-TIMESTAMP/primes-20001-30000.txt gs://project-name-job-primegen-TIMESTAMP/primes-30001-40000.txt gs://project-name-job-primegen-TIMESTAMP/primes-40001-50000.txt gs://project-name-job-primegen-TIMESTAMP/primes-50001-60000.txt
Pembersihan
Jika Anda membuat project baru untuk tutorial ini, hapus project tersebut. Jika Anda menggunakan project yang ada dan ingin mempertahankannya tanpa perubahan yang ditambahkan dalam tutorial ini, hapus resource yang dibuat untuk tutorial.
Menghapus project
Cara termudah untuk menghilangkan penagihan adalah dengan menghapus project yang Anda buat untuk tutorial.
Untuk menghapus project:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Menghapus resource yang dibuat dalam tutorial ini
Hapus tugas Batch:
Pertama, ambil nama tugas:
gcloud batch jobs list --location=us-central1
Outputnya akan mirip dengan berikut ini:
NAME: projects/project-name/locations/us-central1/jobs/job-primegen-TIMESTAMP STATE: SUCCEEDED
Dengan
job-primegen-TIMESTAMP
adalah nama tugas Batch.Hapus tugas:
gcloud batch jobs delete BATCH_JOB_NAME --location us-central1
Hapus alur kerja:
gcloud workflows delete WORKFLOW_NAME
Hapus repositori penampung:
gcloud artifacts repositories delete REPOSITORY_NAME --location=us-central1
Cloud Build menggunakan Cloud Storage untuk menyimpan resource build. Untuk menghapus bucket Cloud Storage, lihat artikel Menghapus bucket.