Workflows memungkinkan Anda menjalankan tugas Cloud Run sebagai bagian dari alur kerja untuk melakukan pemrosesan data yang lebih kompleks atau mengorkestrasi sistem tugas yang ada.
Tutorial ini menunjukkan cara menggunakan Workflows untuk menjalankan tugas Cloud Run yang memproses data yang diteruskan sebagai variabel lingkungan ke tugas, sebagai respons terhadap peristiwa dari Cloud Storage.
Perhatikan bahwa Anda juga dapat menyimpan data peristiwa di bucket Cloud Storage yang memungkinkan Anda mengenkripsi data menggunakan kunci enkripsi yang dikelola pelanggan. Untuk mengetahui informasi selengkapnya, lihat artikel Menjalankan tugas Cloud Run yang memproses data peristiwa yang disimpan di Cloud Storage.
Membuat tugas Cloud Run
Tutorial ini menggunakan contoh tugas Cloud Run dari GitHub. Tugas membaca data dari file input di Cloud Storage, dan melakukan beberapa pemrosesan arbitrer untuk setiap baris dalam file.
Dapatkan kode contoh dengan meng-clone repositori aplikasi contoh ke komputer lokal Anda:
git clone https://github.com/GoogleCloudPlatform/jobs-demos.git
Atau, Anda dapat mendownload contoh sebagai file ZIP dan mengekstraknya.
Ubah ke direktori yang berisi kode contoh:
cd jobs-demos/parallel-processing
Buat bucket Cloud Storage untuk menyimpan file input yang dapat ditulis dan memicu peristiwa:
Konsol
- Di Google Cloud konsol, buka halaman Bucket Cloud Storage.
- Klik add Buat.
- Di halaman Buat bucket, masukkan nama untuk bucket Anda:
Gantiinput-PROJECT_ID
PROJECT_ID
dengan ID Google Cloud project Anda. - Pertahankan setelan default lainnya.
- Klik Buat.
gcloud
Jalankan perintah
gcloud storage buckets create
:gcloud storage buckets create gs://input-PROJECT_ID
Jika permintaan berhasil, perintah akan menampilkan pesan berikut ini:
Creating gs://input-PROJECT_ID/...
Terraform
Untuk membuat bucket Cloud Storage, gunakan resource
google_storage_bucket
dan ubah filemain.tf
Anda seperti yang ditunjukkan dalam contoh berikut.Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.
Perhatikan bahwa dalam alur kerja Terraform yang umum, Anda menerapkan seluruh rencana sekaligus. Namun, untuk tujuan tutorial ini, Anda dapat menargetkan resource tertentu. Contoh:
terraform apply -target="random_id.bucket_name_suffix"
dan
terraform apply -target="google_storage_bucket.default"
- Di Google Cloud konsol, buka halaman Bucket Cloud Storage.
Buat repositori standar Artifact Registry tempat Anda dapat menyimpan image container:
Konsol
Di konsol Google Cloud , buka halaman Artifact Registry Repositories:
Klik
Buat repositori.Masukkan nama untuk repositori—misalnya,
my-repo
. Untuk setiap lokasi repositori dalam project, nama repositori harus unik.Pertahankan format default yang seharusnya Docker.
Pertahankan mode default yang seharusnya Standard.
Untuk region, pilih us-central1 (Iowa).
Pertahankan semua nilai default lainnya.
Klik Buat.
gcloud
Jalankan perintah:
gcloud artifacts repositories create REPOSITORY \ --repository-format=docker \ --location=us-central1
Ganti
REPOSITORY
dengan nama unik untuk repositori, misalnya,my-repo
. Untuk setiap lokasi repositori dalam project, nama repositori harus unik.Terraform
Untuk membuat repositori Artifact Registry, gunakan resource
google_artifact_registry_repository
dan ubah filemain.tf
Anda seperti yang ditunjukkan dalam contoh berikut.Perhatikan bahwa dalam alur kerja Terraform umum, Anda menerapkan seluruh rencana sekaligus. Namun, untuk tujuan tutorial ini, Anda dapat menargetkan resource tertentu. Contoh:
terraform apply -target="google_artifact_registry_repository.default"
Bangun image container menggunakan buildpack Google Cloud default:
export SERVICE_NAME=parallel-job gcloud builds submit \ --pack image=us-central1-docker.pkg.dev/PROJECT_ID/REPOSITORY/${SERVICE_NAME}
Ganti
REPOSITORY
dengan nama repositori Artifact Registry Anda.Proses build dapat memerlukan waktu beberapa menit.
Buat tugas Cloud Run yang men-deploy image container:
Konsol
Di konsol Google Cloud , buka halaman Cloud Run:
Klik Buat tugas untuk menampilkan formulir Buat tugas.
- Di formulir, pilih
us-central1-docker.pkg.dev/PROJECT_ID/REPOSITORY/parallel-job:latest
sebagai URL image container Artifact Registry. - Opsional: Untuk nama tugas, masukkan
parallel-job
. - Opsional: Untuk region, pilih us-central1 (Iowa).
- Untuk jumlah tugas yang ingin Anda jalankan dalam tugas, masukkan
10
. Semua tugas harus berhasil agar pekerjaan berhasil. Secara default, tugas dijalankan secara paralel.
- Di formulir, pilih
Luaskan bagian Container, Variables & Secrets, Connections, Security dan pertahankan semua setelan default, kecuali setelan berikut:
Klik tab General.
- Untuk perintah container, masukkan
python
. - Untuk argumen container, masukkan
process.py
.
- Untuk perintah container, masukkan
Klik tab Variabel & Secret.
- Klik Tambahkan variabel, lalu masukkan
INPUT_BUCKET
untuk nama daninput-PROJECT_ID
untuk nilai. - Klik Tambahkan variabel, lalu masukkan
INPUT_FILE
untuk nama daninput_file.txt
untuk nilai.
- Klik Tambahkan variabel, lalu masukkan
Untuk membuat tugas, klik Buat.
gcloud
Tetapkan region Cloud Run default:
gcloud config set run/region us-central1
Buat tugas Cloud Run:
gcloud run jobs create parallel-job \ --image us-central1-docker.pkg.dev/PROJECT_ID/REPOSITORY/parallel-job:latest \ --command python \ --args process.py \ --tasks 10 \ --set-env-vars=INPUT_BUCKET=input-PROJECT_ID,INPUT_FILE=input_file.txt
Perhatikan bahwa jika Anda tidak menentukan tag gambar, Artifact Registry akan mencari gambar dengan tag
latest
default.Untuk daftar lengkap opsi yang tersedia saat membuat tugas, lihat dokumentasi command line gcloud run jobs create.
Setelah tugas dibuat, Anda akan melihat pesan yang menunjukkan keberhasilan.
Terraform
Untuk membuat tugas Cloud Run, gunakan resource
google_cloud_run_v2_job
dan ubah filemain.tf
Anda seperti yang ditunjukkan dalam contoh berikut.Perhatikan bahwa dalam alur kerja Terraform umum, Anda menerapkan seluruh rencana sekaligus. Namun, untuk tujuan tutorial ini, Anda dapat menargetkan resource tertentu. Contoh:
terraform apply -target="google_cloud_run_v2_job.default"
Men-deploy alur kerja yang menjalankan tugas Cloud Run
Tentukan dan deploy alur kerja yang menjalankan tugas Cloud Run yang baru saja Anda buat. Definisi alur kerja terdiri dari serangkaian langkah yang dijelaskan menggunakan sintaksis Workflows.
Konsol
Di konsol Google Cloud , buka halaman Workflows:
Klik
Buat.Masukkan nama untuk alur kerja baru, seperti
cloud-run-job-workflow
.Untuk region, pilih us-central1 (Iowa).
Di kolom Service account, pilih akun layanan yang Anda buat sebelumnya.
Akun layanan berfungsi sebagai identitas alur kerja. Anda seharusnya telah memberikan peran Admin Cloud Run ke akun layanan agar alur kerja dapat menjalankan tugas Cloud Run.
Klik Berikutnya.
Dalam editor alur kerja, masukkan definisi berikut untuk alur kerja Anda:
Klik Deploy.
gcloud
Buat file kode sumber untuk alur kerja Anda:
touch cloud-run-job-workflow.yaml
Salin definisi alur kerja berikut ke file kode sumber Anda:
Deploy alur kerja dengan memasukkan perintah berikut:
gcloud workflows deploy cloud-run-job-workflow \ --location=us-central1 \ --source=cloud-run-job-workflow.yaml \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Ganti kode berikut:
SERVICE_ACCOUNT_NAME
: nama akun layanan yang Anda buat sebelumnyaPROJECT_ID
: ID project Google Cloud Anda
Akun layanan berfungsi sebagai identitas alur kerja. Anda seharusnya telah memberikan peran
roles/run.admin
ke akun layanan agar alur kerja dapat menjalankan tugas Cloud Run.
Terraform
Untuk membuat alur kerja, gunakan
resource google_workflows_workflow
dan ubah file main.tf
Anda seperti yang ditunjukkan dalam contoh berikut.
Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.
Perhatikan bahwa dalam alur kerja Terraform yang umum, Anda menerapkan seluruh rencana sekaligus. Namun, untuk tujuan tutorial ini, Anda dapat menargetkan resource tertentu. Contoh:
terraform apply -target="google_workflows_workflow.default"
Alur kerja ini akan melakukan hal berikut:
Langkah
init
—Menerima peristiwa Cloud Storage sebagai argumen, lalu menetapkan variabel yang diperlukan.Langkah
check_input_file
—Memeriksa apakah bucket Cloud Storage yang ditentukan dalam peristiwa adalah bucket yang digunakan oleh tugas Cloud Run.- Jika ya, alur kerja akan dilanjutkan ke langkah
run_job
. - Jika tidak, alur kerja akan berakhir, sehingga menghentikan pemrosesan lebih lanjut.
- Jika ya, alur kerja akan dilanjutkan ke langkah
Langkah
run_job
—Menggunakan metodegoogleapis.run.v1.namespaces.jobs.run
dari konektor Cloud Run Admin API untuk mengeksekusi tugas. Nama bucket Cloud Storage dan file data diteruskan sebagai variabel penggantian dari alur kerja ke tugas.Langkah
finish
—Menampilkan informasi tentang eksekusi tugas sebagai hasil alur kerja.
Membuat pemicu Eventarc untuk alur kerja
Untuk menjalankan alur kerja dan tugas Cloud Run secara otomatis setiap kali file data input diperbarui, buat pemicu Eventarc yang merespons peristiwa Cloud Storage di bucket yang berisi file data input.
Konsol
Di konsol Google Cloud , buka halaman Workflows:
Klik nama alur kerja Anda, seperti
cloud-run-job-workflow
.Di halaman Detail alur kerja, klik
Edit.Di halaman Edit alur kerja, di bagian Pemicu, klik Tambahkan pemicu baru > Eventarc.
Panel Pemicu Eventarc akan terbuka.
Di kolom Nama pemicu, masukkan nama untuk pemicu, seperti
cloud-run-job-workflow-trigger
.Dari daftar Penyedia peristiwa, pilih Cloud Storage.
Dari daftar Event, pilih google.cloud.storage.object.v1.finalized.
Di kolom Bucket, pilih bucket yang berisi file data input. Nama bucket memiliki format
input-PROJECT_ID
.Di kolom Service account, pilih akun layanan yang Anda buat sebelumnya.
Akun layanan berfungsi sebagai identitas pemicu. Anda seharusnya telah memberikan peran berikut ke akun layanan:
- Eventarc Event Receiver: untuk menerima peristiwa
- Workflows Invoker: untuk menjalankan alur kerja
Klik Save trigger.
Pemicu Eventarc kini muncul di bagian Pemicu di halaman Edit alur kerja.
Klik Berikutnya.
Klik Deploy.
gcloud
Buat pemicu Eventarc dengan menjalankan perintah berikut:
gcloud eventarc triggers create cloud-run-job-workflow-trigger \ --location=us \ --destination-workflow=cloud-run-job-workflow \ --destination-workflow-location=us-central1 \ --event-filters="type=google.cloud.storage.object.v1.finalized" \ --event-filters="bucket=input-PROJECT_ID" \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Ganti kode berikut:
PROJECT_ID
: ID Google Cloud project AndaSERVICE_ACCOUNT_NAME
: nama akun layanan yang Anda buat sebelumnya.
Akun layanan berfungsi sebagai identitas pemicu. Anda seharusnya telah memberikan peran berikut ke akun layanan:
roles/eventarc.eventReceiver
: untuk menerima peristiwaroles/workflows.invoker
: untuk menjalankan alur kerja
Terraform
Untuk membuat pemicu, gunakan
resource google_eventarc_trigger
dan ubah file main.tf
Anda seperti yang ditunjukkan dalam contoh berikut.
Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.
Perhatikan bahwa dalam alur kerja Terraform yang umum, Anda menerapkan seluruh rencana sekaligus. Namun, untuk tujuan tutorial ini, Anda dapat menargetkan resource tertentu. Contoh:
terraform apply -target="google_eventarc_trigger.default"
Setiap kali file diupload atau ditimpa di bucket Cloud Storage yang berisi file data input, alur kerja akan dieksekusi dengan peristiwa Cloud Storage yang sesuai sebagai argumen.
Memicu alur kerja
Uji sistem end-to-end dengan memperbarui file data input di Cloud Storage.
Buat data baru untuk file input dan upload ke Cloud Storage di lokasi yang diharapkan oleh tugas Cloud Run:
base64 /dev/urandom | head -c 100000 >input_file.txt gcloud storage cp input_file.txt gs://input-PROJECT_ID/input_file.txt
Jika Anda membuat bucket Cloud Storage menggunakan Terraform, Anda dapat mengambil nama bucket dengan menjalankan perintah berikut:
gcloud storage buckets list gs://input*
Tugas Cloud Run dapat memerlukan waktu beberapa menit untuk dijalankan.
Pastikan tugas Cloud Run berjalan seperti yang diharapkan dengan melihat eksekusi tugas:
gcloud config set run/region us-central1 gcloud run jobs executions list --job=parallel-job
Anda akan melihat eksekusi tugas yang berhasil dalam output yang menunjukkan bahwa
10/10
tugas telah selesai.
Pelajari lebih lanjut cara memicu alur kerja dengan peristiwa atau pesan Pub/Sub.