- Menjadwalkan peningkatan dan penurunan Ukuran kumpulan mulai cepat otomatis.
- Memulai workstation secara otomatis sesuai jadwal rutin.
Tutorial ini membantu Anda menambah dan mengurangi Ukuran kumpulan mulai cepat agar sesuai dengan jam buka bisnis yang umum.
Tujuan
- Tulis dan deploy Layanan Cloud Run yang memperbarui Ukuran pool mulai cepat untuk konfigurasi workstation.
- Konfigurasi tugas Cloud Scheduler yang menjadwalkan layanan yang dibuat pada Langkah 1 untuk dijalankan pukul 09.00-17.00, Senin-Jumat agar sesuai dengan jam kerja PST.
Biaya
Dalam dokumen ini, Anda akan menggunakan komponen Google Cloudyang dapat ditagih berikut:
- Cloud Scheduler
- Cloud Run
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Setelah menyelesaikan tugas yang dijelaskan dalam dokumen ini, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat. Untuk mengetahui informasi selengkapnya, baca bagian Pembersihan.
Sebelum memulai
- Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Cloud Run, Cloud Scheduler, Cloud Workstations APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Instal Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke
gcloudCLI dengan identitas gabungan Anda terlebih dahulu. -
Untuk melakukan inisialisasi
gcloudCLI, jalankan perintah berikut:gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Cloud Run, Cloud Scheduler, Cloud Workstations APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Instal Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke
gcloudCLI dengan identitas gabungan Anda terlebih dahulu. -
Untuk melakukan inisialisasi
gcloudCLI, jalankan perintah berikut:gcloud init
Menyiapkan lingkungan
Tetapkan variabel lingkungan berikut, yang digunakan oleh skrip otomatis yang Anda buat nanti.
Tetapkan variabel
PROJECT_IDdanREGIONyang ingin Anda gunakan:PROJECT_ID=$PROJECT_ID REGION=$REGIONGanti $REGION dengan nama region yang akan Anda gunakan—misalnya,
us-central1.Untuk mengetahui informasi selengkapnya tentang region yang tersedia, lihat Lokasi Cloud Workstations.
Arsitektur aplikasi
Solusi ini mencakup komponen Google Cloud berikut:
- Cloud Run
untuk memperbarui Ukuran kumpulan mulai cepat dari
WorkstationConfig. - Tugas Cloud Scheduler
untuk melakukan panggilan pada jadwal yang ditetapkan guna memperbarui
WorkstationConfig.

Membuat layanan Cloud Run
Langkah pertama adalah menyiapkan server web sederhana untuk memproses permintaan HTTP yang Anda terima di port 8080. Karena aplikasi di-container, Anda dapat menulis server dalam bahasa apa pun.
Untuk menulis aplikasi pemroses server web di Python, lakukan hal berikut:
Buat sebuah direktori baru bernama
workstation-config-updaterdan ubah ke direktori tersebut:mkdir workstation-config-updater cd workstation-config-updaterBuat file bernama
app.pylalu tempelkan kode berikut ke dalamnya:import os, subprocess from flask import Flask, request, abort app = Flask(__name__) @app.route("/", methods=["POST"]) def update(): app.logger.info("Update request received.") data = request.json cluster = data["cluster"] region = data["region"] pool_size = data["pool-size"] path = os.path.join(app.root_path, "update_config.sh") o = subprocess.run( [path, cluster, region, pool_size], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text=True ) app.logger.info("Sending response:", o.stdout) return o.stdout if __name__ == "__main__": app.run(host="0.0.0.0", port=8080, debug=True)Kode ini menghasilkan server web dasar yang memantau port yang ditentukan oleh
PORTvariabel lingkungan dan menjalankan skripupdate_config.sh.Buat file bernama
update_config.shlalu tempelkan kode berikut ke dalamnya:#!/bin/bash set -e if [ $# -ne 3 ] then echo "Usage: update_config.sh CLUSTER REGION POOL_SIZE" exit 1 fi CLUSTER=$1 REGION=$2 POOL_SIZE=$3 # list workstation configs echo "Attempting to list workstation configs in cluster $CLUSTER and region $REGION ..." for CONFIG in $(gcloud workstations configs list --cluster $CLUSTER --region $REGION --format="value(NAME)"); do echo "Attempting to update Quick Pool Size to $POOL_SIZE for config $CONFIG ..." # update the workstation config pool-size RET=$(gcloud workstations configs update $CONFIG --cluster $CLUSTER --region $REGION --pool-size=$POOL_SIZE) if [[ $RET -eq 0 ]]; then echo "Workstation config $CONFIG updated." else echo "Workstation config $CONFIG update failed." fi doneSkrip ini menggunakan perintah
gclouduntuk mencantumkan semuaWorkstationConfigdalam cluster tertentu dan memperbarui Ukuran Kumpulan Mulai Cepat-nya menjadiPOOL_SIZE.Buat file bernama
Dockerfilelalu tempelkan kode berikut ke dalamnya:FROM google/cloud-sdk RUN apt-get update && apt-get install -y python3-pip python3 # Copy local code to the container image. ENV APP_HOME /app WORKDIR $APP_HOME COPY . ./ RUN /bin/bash -c 'ls -la; chmod +x ./update_config.sh' # Install production dependencies. RUN pip3 install Flask gunicorn # Run the web service on container startup CMD exec gunicorn --bind :8080 --workers 1 --threads 8 app:appKode ini mem-build aplikasi dalam container agar siap di-deploy di Cloud Run.
Men-deploy ke Cloud Run
Untuk men-deploy ke Cloud Run, jalankan perintah berikut:
gcloud run deploy --source . --project $PROJECT_ID --region $REGIONSaat diminta memasukkan nama layanan, tekan Enter untuk menerima nama default
workstation-config-updater.Jika Anda diminta untuk mengaktifkan Artifact Registry API atau mengizinkan pembuatan repositori Artifact Registry, tekan y.
Saat Anda diminta untuk mengizinkan pemanggilan yang tidak diautentikasi, tekan n.
Tunggu hingga deployment selesai.
Saat URL layanan ditampilkan dalam format berikut, salin URL tersebut:
SERVICE_URL=$SERVICE_URL
Mengonfigurasi akun layanan untuk memanggil Cloud Run
Layanan workstation-config-updater yang Anda deploy tidak mengizinkan pemanggilan yang tidak diautentikasi.
Cloud Scheduler memerlukan akun layanan yang memiliki kredensial yang sesuai untuk memanggil layanan workstation-config-updater.
Menyiapkan akun layanan
Jika Anda belum memiliki akun layanan yang ingin digunakan untuk tugas Cloud Scheduler, buat akun layanan baru.
gcloud iam service-accounts create $SERVICE_ACCOUNT_NAME \ --description="$DESCRIPTION" \ --display-name="$DISPLAY_NAME"Tambahkan binding peran IAM yang diperlukan untuk mengizinkan akun layanan Anda memanggil Cloud Run.
gcloud run services add-iam-policy-binding workstation-config-updater \ --member=serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --region $REGION \ --role=roles/run.invoker
Membuat konfigurasi Cloud Scheduler dengan autentikasi
Buat tugas dan tentukan
URLyang Anda salin dari Deploy ke Cloud Run:gcloud scheduler jobs create http workstation-pool-increaser-cron \ --http-method=POST \ --location=us-central1 \ --schedule="0 9 * * 1-5" \ --time-zone="America/Los_Angeles" \ --headers "Content-Type=application/json" \ --message-body='{"cluster":"$CLUSTER", "region":"$REGION", "pool-size": "2"}' \ --uri=$SERVICE_URL \ --oidc-service-account-email=$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.comPerintah ini menjadwalkan tugas untuk menambah Ukuran kumpulan memulai cepat untuk semua
WorkstationConfigsdiWorkstationCluster$CLUSTER menjadi 2 pada pukul 09.00 PST dari Senin hingga Jumat.Untuk informasi selengkapnya, lihat Mengonfigurasi Jadwal Tugas.
Demikian pula, untuk mengurangi ukuran pool konfigurasi workstation Anda menjadi 0 di akhir hari kerja, jalankan perintah berikut
gcloud scheduler jobs create http workstation-pool-decreaser-cron \ --http-method=POST \ --location=$REGION \ --schedule="0 17 * * 1-5" \ --time-zone="America/Los_Angeles" \ --headers "Content-Type=application/json" \ --message-body='{"cluster":"$CLUSTER", "region":"$REGION", "pool-size": "0"}' \ --uri=$SERVICE_URL \ --oidc-service-account-email=$SERVICE-ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
Opsional: Verifikasi tugas
Untuk memastikan bahwa tugas Anda berfungsi seperti yang diharapkan, Anda dapat memverifikasi tugas.
Buka halaman Cloud Scheduler di konsol Google Cloud .
workstation-pool-increaser-cronakan muncul dalam daftar tugas.Di baris untuk tugas
workstation-pool-increaser-cron, klik Tindakan > Jalankan tugas secara paksa.Tugas pertama yang dibuat dalam project dapat memerlukan waktu beberapa menit untuk dijalankan.
Di kolom Status eksekusi terakhir, status
Successmenunjukkan bahwa Anda telah berhasil menjalankan tugas.
Untuk memverifikasi bahwa konfigurasi Workstation telah diupdate, lakukan hal berikut:
Buka halaman Workstation Configurations di konsol Google Cloud .
Pastikan Ukuran kumpulan mulai cepat adalah 2.
Melihat log untuk layanan Cloud Run Anda.
Pembersihan
Agar tidak perlu membayar biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.
Menghapus project pengujian Anda
Untuk menghindari biaya tambahan pada akun Google Cloud Anda, hapus semua resource yang Anda deploy dengan panduan memulai ini.
Menghapus repositori Anda
Cloud Run tidak mengenakan biaya saat layanan yang di-deploy tidak digunakan. Namun, Anda mungkin tetap dikenai biaya atas penyimpanan image container di Artifact Registry. Untuk menghapus repositori Artifact Registry, ikuti langkah-langkah di Menghapus repositori dalam dokumentasi Artifact Registry.
Menghapus layanan Anda
Layanan Cloud Run tidak menimbulkan biaya hingga menerima permintaan. Untuk menghapus layanan Cloud Run, ikuti salah satu langkah berikut:
Konsol
Untuk menghapus layanan:
Di konsol Google Cloud , buka halaman Services Cloud Run:
Temukan layanan yang ingin Anda hapus dalam daftar layanan, lalu klik kotak centang layanan tersebut untuk memilihnya.
Klik Hapus. Tindakan ini akan menghapus semua revisi layanan.
gcloud
Untuk menghapus layanan, jalankan perintah berikut:
gcloud run services delete SERVICE --region REGION
Ganti kode berikut:
- SERVICE: nama layanan Anda.
- REGION: Google Cloud region layanan.
Menghapus project pengujian Anda
Menghapus project Google Cloud akan menghentikan penagihan untuk semua resource dalam project tersebut. Untuk melepaskan semua Google Cloud resource di project Anda, ikuti langkah-langkah berikut:
- Di Konsol Google Cloud , buka halaman Manage resources.
- Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
- Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.
Menghapus tugas Cloud Scheduler
Untuk menghapus resource Cloud Scheduler satu per satu:
Buka halaman Cloud Scheduler di konsol Google Cloud .
Klik kotak centang di samping tugas Anda.
Klik tombol Hapus di bagian atas halaman, lalu konfirmasi penghapusan.
Langkah berikutnya
- Pelajari arsitektur referensi, diagram, dan praktik terbaik tentang Google Cloud. Lihat Cloud Architecture Center kami.