Menjadwalkan Perintah di Google Cloud dengan Cloud Run dan Cloud Scheduler

Kehadiran Google Cloud CLI memudahkan para engineer untuk memulai pengembangan awal mereka di GCP (Google Cloud Platform) dan melakukan banyak tugas cloud umum. Sebagian besar pengalaman pengembangan awal melalui antarmuka baris perintah menggunakan alat seperti gsutil, gcloud, namun untuk bisa mendapatkan kode produksi perlu penulisan kode seremonial atau membangun integrasi API-level.

Developer sering menemukan skenario di mana mereka perlu menjalankan perintah sederhana di lingkungan produksi mereka secara terjadwal. Untuk menjalankannya dengan sukses, mereka diharuskan membuat kode dan membuat jadwal dalam alat orkestrasi seperti Data Fusion.

Salah satu skenario tersebut adalah menyalin objek dari satu bucket ke bucket lain, yang umumnya dicapai dengan menggunakan gsutil. Gsutil adalah aplikasi Python untuk berinteraksi dengan Google Cloud Storage melalui baris perintah. Ini dapat digunakan untuk melakukan berbagai fungsi seperti tugas pengelolaan bucket dan objek, termasuk: membuat dan menghapus bucket, mengunggah, mengunduh, menghapus, menyalin, dan memindahkan objek.

Artikel kali ini akan menjelaskan cara untuk menjadwalkan perintah seperti Gsutil menggunakan Cloud Run dan Cloud Scheduler. Metodologi ini menghemat waktu dan mengurangi jumlah upaya yang diperlukan untuk pra-kerja dan penyiapan dalam membangun integrasi API level.

Arsitektur penjadwalan perintah dengan Cloud Run dan Cloud Scheduler

Photo Credit: Google Cloud

Ada pun tiga layanan GCP yang digunakan adalah:

  1. Cloud Run: Kode akan dikemas dalam container, gcloud SDK akan diterapkan (atau Anda juga dapat menggunakan base image dengan gcloud SDK yang sudah diinstal).
  2. Cloud Scheduler: Memanggil tugas yang dibuat di Cloud Run pada frekuensi berulang.
  3. Cloud Storage: Google Cloud Storage (GCS) digunakan untuk penyimpanan dan pengambilan data dalam jumlah berapa pun.

Baca juga: 3 Contoh Penerapan Google Cloud Spot VMs

Contoh ini mengharuskan engineer menyiapkan lingkungan mereka untuk Cloud Run dan Cloud Scheduler, membuat tugas Cloud Run, mengemasnya ke dalam image container, mengunggah image container ke Container Registry, lalu melakukan deploy ke Cloud Run. Ikuti langkah-langkahnya  di bawah ini:

 

Langkah 1: Aktifkan layanan (Cloud Scheduler, Cloud Run) dan buat akun layanan

export REGION=<<Region>>

export PROJECT_ID=<<project-id>>

export PROJECT_NUMBER=<<project-number>>

export SERVICE_ACCOUNT=cloud-run-sa

 

gcloud services enable cloudscheduler.googleapis.com run.googleapis.com cloudbuild.googleapis.com cloudscheduler.googleapis.com –project ${PROJECT_ID}

 

gcloud iam service-accounts create ${SERVICE_ACCOUNT} \

–description=”Cloud run to copy cloud storage objects between buckets” \

–display-name=”${SERVICE_ACCOUNT}” –project ${PROJECT_ID}

 

gcloud projects add-iam-policy-binding ${PROJECT_ID} \

–member serviceAccount:${SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com \

–role “roles/run.invoker”

Untuk menerapkan layanan Cloud Run menggunakan akun layanan yang dikelola pengguna, Anda harus memiliki izin untuk meniru identitas (iam.serviceAccounts.actAs) akun layanan tersebut. Izin ini dapat diberikan melalui peran IAM peran/iam.serviceAccountUser.

  gcloud iam service-accounts add-iam-policy-binding ${SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com   \

–member “user:<<your_email>>” \

–role “roles/iam.serviceAccountUser” –project ${PROJECT_ID}

Langkah 2: Buat docker image dan dorong ke GCR. Arahkan ke folder gcs-to-gcs dan tekan image

  cd gcs-to-gcs

gcloud builds submit -t “gcr.io/${PROJECT_ID}/gsutil-gcs-to-gcs” –project ${PROJECT_ID}

Langkah 3: Buat tugas dengan GCS_SOURCE dan GCS_DESTINATION untuk bucket gcs-to-gcs. Pastikan untuk memberikan izin (roles/storage.legacyObjectReader) ke GCS_SOURCE dan role/storage.legacyBucketWriter ke GCS_DESTINATION

  export GCS_SOURCE=<<Source Bucket>>

export GCS_DESTINATION=<<Source Bucket>>

 

gsutil iam ch \

serviceAccount:${SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com:objectViewer \

  ${GCS_SOURCE}

 

gsutil iam ch \

serviceAccount:${SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com:legacyBucketWriter \

  ${GCS_DESTINATION}

 

gcloud beta run jobs create gcs-to-gcs \

–image gcr.io/${PROJECT_ID}/gsutil-gcs-to-gcs \

–set-env-vars GCS_SOURCE=${GCS_SOURCE} \

–set-env-vars GCS_DESTINATION=${GCS_DESTINATION} \

–max-retries 5 \

–service-account ${SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com \

–region $REGION –project ${PROJECT_ID}

Langkah 4: Terakhir, buat jadwal untuk menjalankan pekerjaan.

  gcloud scheduler jobs create http gcs-to-gcs \

–location $REGION \

–schedule=”0 1 * * 0″ \  –uri=”https://${REGION}-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/${PROJECT_ID}/jobs/gcs-to-gcs:run” \

–http-method POST \

–oauth-service-account-email ${SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com –project ${PROJECT_ID}

Langkah 5: Buat pemantauan dan peringatan untuk memeriksa apakah Cloud Run gagal.

Cloud Run terintegrasi secara otomatis dengan Cloud Monitoring tanpa memerlukan penyiapan atau konfigurasi. Ini berarti metrik layanan Cloud Run Anda ditangkap secara otomatis saat dijalankan.

Anda dapat melihat metrik di Cloud Monitoring atau di halaman Cloud Run dalam konsol. Cloud Monitoring menyediakan lebih banyak opsi pembuatan bagan dan pemfilteran.

Baca juga: Tips Gunakan Google Cloud Search Query API untuk Menyempurnakan Hasil Cloud Search

Langkah-langkah di atas menyajikan metode yang disederhanakan untuk menjalankan perintah CLI yang paling umum diterapkan pada jadwal, dalam pengaturan produksi. Kode dan contoh yang diberikan di atas mudah digunakan dan membantu menghindari kebutuhan integrasi level API untuk menjadwalkan perintah seperti gsutil, gcloud, dan lain sebagainya.

GCP merupakan rangkaian layanan komputasi awan yang berjalan pada infrastruktur internal milik Google untuk berbagai produk end-user, seperti mesin pencari Google, Gmail, hingga YouTube. Rangkaian ini juga menyediakan layanan cloud modular termasuk komputasi, penyimpanan data, analitik data, dan machine learning. Untuk menikmati layanan GCP, Anda bisa berlangganan solusi komputasi awan Google Cloud melalui EIKON Technology. Untuk informasi lebih lanjut, Anda bisa klik di sini.

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments