- Menjadwalkan peningkatan dan penurunan ukuran kumpulan mulai cepat otomatis.
- Memulai workstation secara otomatis sesuai jadwal rutin.
Tutorial ini membantu Anda meningkatkan dan mengurangi Ukuran kumpulan mulai cepat agar sesuai dengan jam kerja standar.
Tujuan
- Menulis dan men-deploy Layanan Cloud Run yang mengupdate Quick start pool size untuk konfigurasi workstation.
- Konfigurasikan tugas Cloud Scheduler yang menjadwalkan layanan yang dibuat pada Langkah 1 agar berjalan pukul 09.00-17.00, Senin-Jumat agar sesuai dengan jam kerja PST.
Biaya
Dalam dokumen ini, Anda menggunakan komponen Google Cloud yang 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, lihat Pembersihan.
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.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Make sure that billing is enabled for your Google Cloud project.
-
Aktifkan API Cloud Run, Cloud Scheduler, Cloud Workstations .
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Make sure that billing is enabled for your Google Cloud project.
-
Aktifkan API Cloud Run, Cloud Scheduler, Cloud Workstations .
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
Menyiapkan lingkungan
Tetapkan variabel lingkungan berikut, yang digunakan oleh skrip otomatis yang Anda buat nanti.
Tetapkan variabel
PROJECT_ID
danREGION
yang akan Anda gunakan:PROJECT_ID=$PROJECT_ID REGION=$REGION
Ganti $REGION dengan nama wilayah 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
WorkstationConfig
. - Tugas Cloud Scheduler
untuk melakukan panggilan pada jadwal yang ditetapkan untuk mengupdate
WorkstationConfig
.
Membuat layanan Cloud Run
Langkah pertama ini adalah menyiapkan server web sederhana untuk memproses permintaan HTTP yang Anda terima di port 8080. Karena aplikasi berada dalam 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-updater
dan ubah ke direktori tersebut:mkdir workstation-config-updater cd workstation-config-updater
Buat file bernama
app.py
lalu 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 variabel lingkungan
PORT
dan menjalankan skripupdate_config.sh
.Buat file bernama
update_config.sh
lalu 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 done
Skrip ini menggunakan perintah
gcloud
untuk mencantumkan semuaWorkstationConfig
di cluster tertentu dan memperbarui Ukuran Kumpulan Memulai Cepat kePOOL_SIZE
.Buat file bernama
Dockerfile
lalu 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:app
Kode ini memasukkan aplikasi ke 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 $REGION
Saat Anda diminta memasukkan nama layanan, tekan Enter untuk menyetujui 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.
Salin URL layanan yang ditampilkan dalam format berikut:
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 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 agar akun layanan Anda dapat 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
URL
yang Anda salin dari Deploy to 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.com
Perintah ini menjadwalkan tugas untuk meningkatkan Ukuran kumpulan mulai cepat untuk semua
WorkstationConfigs
diWorkstationCluster
$CLUSTER menjadi 2 pukul 9 pagi PST dari Senin hingga Jumat.Untuk informasi selengkapnya, lihat Mengonfigurasi Jadwal Tugas.
Demikian pula, untuk mengurangi ukuran kumpulan untuk 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: Memverifikasi tugas
Untuk memastikan pekerjaan Anda berfungsi seperti yang diharapkan, Anda dapat memverifikasi pekerjaan tersebut.
Buka halaman Cloud Scheduler di Konsol Google Cloud.
workstation-pool-increaser-cron
akan muncul di daftar tugas.Di baris untuk tugas
workstation-pool-increaser-cron
, klik Tindakan > Paksa tugas dijalankan.Tugas pertama yang dibuat dalam sebuah project dapat memerlukan waktu beberapa menit untuk dijalankan.
Di kolom Status of last execution, status
Success
menunjukkan bahwa Anda telah berhasil menjalankan tugas.
Untuk memastikan bahwa konfigurasi Workstation telah diperbarui, lakukan hal berikut:
Buka halaman Workstation Configurations di Konsol Google Cloud.
Pastikan Ukuran kumpulan mulai cepat adalah 2.
Lihat log untuk layanan Cloud Run Anda.
Pembersihan
Agar tidak dikenakan 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-nya.
Menghapus project pengujian Anda
Meskipun Cloud Run tidak mengenakan biaya saat layanannya tidak digunakan, Anda mungkin tetap dikenai biaya atas penyimpanan image container di Artifact Registry. Anda dapat menghapus image container atau menghapus project Google Cloud untuk menghindari tagihan. Menghapus project Google Cloud akan menghentikan penagihan untuk semua resource yang digunakan dalam project tersebut.
- Di konsol Google Cloud, buka halaman Manage resource.
- 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 masing-masing resource Cloud Scheduler,
Buka halaman Cloud Scheduler di Konsol Google Cloud.
Klik kotak centang di samping pekerjaan Anda.
Klik tombol Delete di bagian atas halaman dan konfirmasi penghapusan Anda.
Langkah selanjutnya
- Pelajari arsitektur referensi, diagram, dan praktik terbaik tentang Google Cloud. Lihat Cloud Architecture Center kami.