Mem-build dan membuat tugas Python di Cloud Run
Sebelum memulai
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
-
Make sure that you have the following role or roles on the project: Cloud Run Admin, Cloud Run Source Developer, Logs Viewer
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
Buka IAM - Pilih project.
- Klik Berikan akses.
-
Di kolom Akun utama baru, masukkan ID pengguna Anda. Biasanya berupa alamat email untuk Akun Google.
- Di daftar Pilih peran, pilih peran.
- Untuk memberikan peran tambahan, klik Tambahkan peran lain, lalu tambahkan setiap peran tambahan.
- Klik Simpan.
Install the Google Cloud CLI.
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:
gcloud init
-
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
-
Make sure that you have the following role or roles on the project: Cloud Run Admin, Cloud Run Source Developer, Logs Viewer
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
Buka IAM - Pilih project.
- Klik Berikan akses.
-
Di kolom Akun utama baru, masukkan ID pengguna Anda. Biasanya berupa alamat email untuk Akun Google.
- Di daftar Pilih peran, pilih peran.
- Untuk memberikan peran tambahan, klik Tambahkan peran lain, lalu tambahkan setiap peran tambahan.
- Klik Simpan.
Install the Google Cloud CLI.
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:
gcloud init
-
Aktifkan Cloud Run Admin API dan Cloud Build API:
gcloud services enable run.googleapis.com \ cloudbuild.googleapis.com
Setelah Cloud Run Admin API diaktifkan, akun layanan default Compute Engine akan dibuat secara otomatis.
-
Pastikan Anda memiliki peran Service Account User yang diberikan pada identitas layanan. Secara default, identitas layanan adalah akun layanan default Compute Engine.
Memberikan peran
Untuk memberikan akses pada resource identitas layanan, gunakan perintah
gcloud iam service-accounts add-iam-policy-binding
, dengan mengganti variabel yang ditandai dengan nilai yang sesuai:gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \ --member="PRINCIPAL" \ --role="roles/iam.serviceAccountUser"
Ganti kode berikut:
- SERVICE_ACCOUNT_EMAIL: alamat email akun layanan
yang Anda gunakan sebagai identitas layanan, seperti:
- Akun layanan default Compute Engine:
PROJECT_NUMBER-compute@developer.gserviceaccount.com
- Akun layanan yang Anda buat:
SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
- Akun layanan default Compute Engine:
- PRINCIPAL: ID pengguna. Biasanya berupa alamat email untuk Akun Google.
- SERVICE_ACCOUNT_EMAIL: alamat email akun layanan
yang Anda gunakan sebagai identitas layanan, seperti:
- Berikan peran IAM berikut kepada akun layanan Cloud Build.
Klik untuk melihat peran yang diperlukan untuk akun layanan Cloud Build
Cloud Build secara otomatis menggunakan akun layanan default Compute Engine sebagai akun layanan Cloud Build default untuk membangun kode sumber dan resource Cloud Run, kecuali jika Anda mengganti perilaku ini. Agar Cloud Build dapat membangun sumber Anda, minta administrator Anda untuk memberikan peran Cloud Run Builder (
roles/run.builder
) ke akun layanan default Compute Engine di project Anda:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/run.builder
Ganti
PROJECT_NUMBER
dengan Google Cloud nomor project Anda, danPROJECT_ID
dengan Google Cloud project ID Anda. Untuk mengetahui petunjuk mendetail tentang cara menemukan project ID dan nomor project Anda, lihat Membuat dan mengelola project.Pemberian peran builder Cloud Run ke akun layanan default Compute Engine memerlukan waktu beberapa menit untuk berlaku.
Buat direktori baru bernama
jobs
dan pindahlah ke direktori tersebut:mkdir jobs cd jobs
Buat file
main.py
untuk kode pekerjaan yang sebenarnya. Salin contoh baris berikut ke dalamnya:Tugas Cloud Run mengizinkan pengguna untuk menentukan jumlah tugas yang akan dijalankan oleh tugas tersebut. Kode contoh ini menunjukkan cara menggunakan variabel lingkungan
CLOUD_RUN_TASK_INDEX
bawaan. Setiap tugas mewakili satu salinan container yang berjalan. Perhatikan bahwa tugas-tugas biasanya dijalankan secara paralel. Menggunakan beberapa tugas akan berguna jika setiap tugas dapat memproses subset data Anda secara independen.Setiap tugas mengetahui indeksnya, yang disimpan dalam variabel lingkungan
CLOUD_RUN_TASK_INDEX
. Variabel lingkunganCLOUD_RUN_TASK_COUNT
bawaan berisi jumlah tugas yang disediakan pada waktu eksekusi tugas melalui parameter--tasks
.Kode yang ditampilkan juga menunjukkan cara mencoba ulang tugas, menggunakan variabel lingkungan
CLOUD_RUN_TASK_ATTEMPT
bawaan yang berisi berapa kali tugas ini telah dicoba ulang, mulai dari 0 untuk upaya pertama dan bertambah 1 untuk setiap percobaan ulang berturut-turut yang berhasil, hingga--max-retries
.Kode ini juga memungkinkan Anda menghasilkan kegagalan sebagai cara untuk menguji percobaan ulang dan membuat log error sehingga Anda dapat melihat tampilannya.
Buat file teks bernama
Procfile
tanpa ekstensi file, yang berisi berikut:
Menulis contoh tugas
Untuk menulis pekerjaan di Python:
Kode Anda telah lengkap dan siap untuk dikemas dalam container.
Bangun container tugas, kirim ke Artifact Registry, lalu deploy ke Cloud Run
Penting: Panduan memulai ini mengasumsikan bahwa Anda memiliki peran pemilik atau editor dalam project yang Anda gunakan untuk panduan memulai tersebut. Atau, lihat peran Developer Sumber Cloud Run untuk izin yang diperlukan guna men-deploy resource Cloud Run dari sumber.
Panduan memulai ini menggunakan deploy dari sumber, yang membuat container, mengunggahnya ke Artifact Registry, dan men-deploy tugas tersebut ke Cloud Run:
gcloud run jobs deploy job-quickstart \ --source . \ --tasks 50 \ --set-env-vars SLEEP_MS=10000 \ --set-env-vars FAIL_RATE=0.1 \ --max-retries 5 \ --region REGION \ --project=PROJECT_ID
dengan PROJECT_ID sebagai project ID Anda dan REGION adalah region Anda
, misalnya, europe-west1
. Perhatikan bahwa Anda dapat mengubah berbagai parameter menjadi nilai apa pun yang ingin Anda gunakan untuk tujuan pengujian. SLEEP_MS
menyimulasikan pekerjaan dan FAIL_RATE
menyebabkan X
% tugas gagal sehingga Anda dapat bereksperimen dengan paralelisme dan mencoba ulang tugas yang gagal.
Menjalankan tugas di Cloud Run
Untuk menjalankan tugas yang baru saja Anda buat:
gcloud run jobs execute job-quickstart --region REGION
Ganti REGION dengan region yang Anda gunakan saat membuat dan men-deploy
tugas, misalnya europe-west1
.
Langkah berikutnya
Untuk informasi lebih lanjut dalam mem-build container dari kode sumber dan penerapan untuk repositori, lihat: