Tutorial ini menjelaskan cara melakukan penskalaan otomatis pada kumpulan pekerja Cloud Run berdasarkan metrik Prometheus menggunakan Penskalaan Otomatis Metrik Eksternal Cloud Run (CREMA).
Layanan autoscaler CREMA melakukan perhitungan berbasis rasio menggunakan data dari Prometheus. Layanan autoscaler secara dinamis menyesuaikan jumlah instance untuk memastikan kumpulan pekerja Anda memiliki jumlah resource yang tepat untuk workload saat ini. CREMA menghitung penggunaan CPU kumpulan pekerja Anda selama jangka waktu tertentu dan membandingkannya dengan nilai minimum yang dikonfigurasi untuk menyesuaikan instance.
Tujuan
Dalam tutorial ini, Anda akan:
Men-deploy kumpulan pekerja Cloud Run untuk menjalankan workload latar belakang yang melaporkan metrik penggunaan ke Google Cloud Managed Service for Prometheus.
Men-deploy layanan CREMA autoscaler untuk menskalakan kumpulan pekerja secara dinamis berdasarkan metrik Prometheus.
Menguji layanan CREMA dengan mengamati log layanan dan memverifikasi perubahan jumlah instance di Google Cloud konsol.
Biaya
Dalam dokumen ini, Anda akan menggunakan komponen yang dapat ditagih sebagai berikut Google Cloud:
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Sebelum memulai
-
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.
Aktifkan Cloud Run, Parameter Manager, Artifact Registry, Cloud Build, dan Cloud Monitoring API.
Peran yang diperlukan untuk mengaktifkan API
Untuk mengaktifkan API, Anda memerlukan izin
serviceusage.services.enable. Jika Anda membuat project, kemungkinan Anda sudah memiliki izin ini melalui peran Pemilik (roles/owner). Jika tidak, Anda bisa mendapatkan izin ini melalui peran Admin Penggunaan Layanan (roles/serviceusage.serviceUsageAdmin). Pelajari cara memberikan peran.- Instal dan lakukan inisialisasi gcloud CLI.
- Perbarui komponen:
gcloud components update
- Tetapkan variabel konfigurasi berikut untuk CREMA yang digunakan dalam tutorial ini:
Ganti PROJECT_ID dengan ID Google Cloud project Anda.export PROJECT_ID=PROJECT_ID export REGION=us-central1 export CREMA_SA_NAME=crema-service-account export CONSUMER_SA_NAME=consumer-service-account export CONSUMER_WORKER_POOL_NAME=worker-pool-consumer export CREMA_SERVICE_NAME=my-crema-service
- Tetapkan project ID Anda dengan menjalankan perintah berikut:
gcloud config set project $PROJECT_ID
- Anda akan dikenai biaya untuk layanan penskalaan Cloud Run berdasarkan frekuensi Anda memicu penskalaan. Untuk mengetahui informasi selengkapnya, perkirakan biaya dengan kalkulator harga.
Peran yang diperlukan
Untuk mendapatkan izin yang Anda perlukan untuk menyelesaikan tutorial, minta administrator Anda untuk memberi Anda peran IAM berikut di project Anda:
- Administrator Repositori Artifact Registry (
roles/artifactregistry.repoAdmin) - Editor Cloud Build (
roles/cloudbuild.builds.editor) - Admin Cloud Run (
roles/run.admin) - Create Service Accounts (
roles/iam.serviceAccountCreator) - Service Account User (
roles/iam.serviceAccountUser) - Pelanggan Service Usage (
roles/serviceusage.serviceUsageConsumer) - Admin Parameter Manager (
roles/parametermanager.admin)
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
Membuat akun layanan kustom
Tutorial ini memerlukan dua akun layanan berikut dengan minimum izin yang diperlukan untuk menggunakan resource yang disediakan:
Akun layanan konsumen: identitas untuk kumpulan pekerja yang menjalankan workload latar belakang. Jalankan perintah berikut untuk membuat akun layanan konsumen:
gcloud iam service-accounts create $CONSUMER_SA_NAME \ --display-name="Consumer service account"Akun layanan CREMA: identitas untuk autoscaler. Jalankan perintah berikut untuk membuat akun layanan CREMA:
gcloud iam service-accounts create $CREMA_SA_NAME \ --display-name="CREMA service account"
Memberikan izin tambahan ke akun layanan kustom Anda
Untuk menskalakan kumpulan pekerja, berikan izin berikut pada akun layanan kustom:
Beri akun layanan CREMA Anda izin untuk membaca dari Parameter Manager:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:$CREMA_SA_NAME@$PROJECT_ID." \ --role="roles/parametermanager.parameterViewer"Beri akun layanan CREMA Anda izin untuk menskalakan kumpulan pekerja:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:$CREMA_SA_NAME@$PROJECT_ID." \ --role="roles/run.developer"Beri akun layanan CREMA Anda peran pengguna akun layanan:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:$CREMA_SA_NAME@$PROJECT_ID." \ --role="roles/iam.serviceAccountUser"Beri akun layanan CREMA Anda izin untuk melihat metrik:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:$CREMA_SA_NAME@$PROJECT_ID." \ --role="roles/monitoring.viewer"Beri akun layanan CREMA Anda izin untuk menulis metrik:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:$CREMA_SA_NAME@$PROJECT_ID." \ --role="roles/monitoring.metricWriter"
Men-deploy kumpulan pekerja Cloud Run
Deploy kumpulan worker dengan 0 instance agar CREMA dapat melakukan peningkatan skala:
gcloud run worker-pools deploy $CONSUMER_WORKER_POOL_NAME \
--image us-docker.pkg.dev/cloudrun/container/worker-pool:latest \
--instances 0 \
--region $REGION \
--memory 4G \
--cpu 4 \
--service-account="$CONSUMER_SA_NAME@$PROJECT_ID."
Men-deploy layanan CREMA autoscaler
Deploy layanan CREMA untuk melakukan penskalaan otomatis pada kumpulan pekerja Anda berdasarkan metrik Prometheus.
Mengonfigurasi autoscaler
Tutorial ini menggunakan Parameter Manager untuk menyimpan file konfigurasi YAML untuk CREMA.
Buat parameter di Parameter Manager untuk menyimpan versi parameter untuk CREMA:
PARAMETER_ID=crema-config PARAMETER_REGION=global gcloud parametermanager parameters create $PARAMETER_ID --location=$PARAMETER_REGION --parameter-format=YAMLDi direktori root Anda, buat file YAML,
my-crema-config.yamluntuk menentukan konfigurasi autoscaler. Tetapkan nilai minimum penskalaan otomatis ke penggunaan CPU 50%:apiVersion: crema/v1 kind: CremaConfig spec: pollingInterval: 30 triggerAuthentications: - metadata: name: google-crema-auth spec: podIdentity: provider: gcp scaledObjects: - spec: scaleTargetRef: name: projects/PROJECT_ID/locations/us-central1/workerPools/worker-pool-consumer minReplicaCount: 1 maxReplicaCount: 20 triggers: - type: prometheus metadata: serverAddress: https://monitoring.googleapis.com/v1/projects/PROJECT_ID/location/global/prometheus threshold: "0.5" query: | histogram_quantile( 0.50, sum by (le) ( increase( run_googleapis_com:container_cpu_utilizations_bucket{ monitored_resource="cloud_run_worker_pool", worker_pool_name="worker-pool-consumer", location="us-central1", project_id="PROJECT_ID" }[2m] ) ) ) authenticationRef: name: google-crema-auth advanced: horizontalPodAutoscalerConfig: behavior: scaleDown: stabilizationWindowSeconds: 300Ganti PROJECT_ID dengan Google Cloud project ID.
Upload file YAML lokal Anda sebagai versi parameter baru:
LOCAL_YAML_CONFIG_FILE=my-crema-config.yaml PARAMETER_VERSION=1 gcloud parametermanager parameters versions create $PARAMETER_VERSION \ --location=$PARAMETER_REGION \ --parameter=$PARAMETER_ID \ --payload-data-from-file=$LOCAL_YAML_CONFIG_FILEJalankan perintah berikut untuk memverifikasi bahwa penambahan parameter Anda berhasil:
gcloud parametermanager parameters versions list \ --parameter=$PARAMETER_ID \ --location=$PARAMETER_REGIONAnda akan melihat jalur parameter, seperti
projects/PROJECT_ID/locations/global/parameters/crema-config/versions/1.
Men-deploy layanan untuk menskalakan workload Anda
Untuk men-deploy layanan untuk menskalakan kumpulan pekerja Anda, jalankan perintah berikut dengan image container yang telah dibuat sebelumnya:
CREMA_CONFIG_PARAM_VERSION=projects/$PROJECT_ID/locations/$PARAMETER_REGION/parameters/$PARAMETER_ID/versions/$PARAMETER_VERSION
IMAGE=us-central1-docker.pkg.dev/cloud-run-oss-images/crema-v1/autoscaler:1.0
gcloud run deploy $CREMA_SERVICE_NAME \
--image=${IMAGE} \
--region=${REGION} \
--service-account="${CREMA_SA_NAME}" \
--no-allow-unauthenticated \
--no-cpu-throttling \
--base-image=us-central1-docker.pkg.dev/serverless-runtimes/google-24/runtimes/java25 \
--labels=created-by=crema \
--set-env-vars="CREMA_CONFIG=${CREMA_CONFIG_PARAM_VERSION},OUTPUT_SCALER_METRICS=True"
Menguji layanan penskalaan otomatis Anda
Untuk memverifikasi bahwa layanan penskalaan otomatis Anda berfungsi dengan benar, periksa tab Log layanan Cloud Run. Layanan autoscaler CREMA menskalakan instance pekerja konsumen dari 0.
Anda akan melihat log berikut di log layanan setiap kali metrik diperbarui:
[INFO] [METRIC-PROVIDER] Starting metric collection cycle
[INFO] [METRIC-PROVIDER] Successfully fetched scaled object metrics ...
[INFO] [METRIC-PROVIDER] Sending scale request ...
[INFO] [SCALER] Received ScaleRequest ...
[INFO] [SCALER] Current instances ...
[INFO] [SCALER] Recommended instances ...
Cloud Run memberi label pada setiap pesan log dengan komponen yang memancarkannya.
Pembersihan
Untuk menghindari biaya tambahan ke Google Cloud akun Anda, hapus semua resource yang Anda deploy dengan tutorial ini.
Menghapus project
Jika Anda membuat project baru untuk tutorial ini, hapus project tersebut. Jika Anda menggunakan project yang sudah ada dan perlu mempertahankannya tanpa perubahan yang Anda tambahkan dalam tutorial ini, hapus resource yang Anda buat untuk tutorial.
Cara termudah untuk menghilangkan penagihan adalah dengan menghapus project yang Anda buat untuk tutorial.
Untuk menghapus project:
- Di Google Cloud konsol, buka halaman Manage resources.
- Pada daftar project, pilih project yang Anda ingin Anda hapus, lalu klik Delete.
- Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.
Menghapus resource tutorial
Hapus layanan Cloud Run yang Anda deploy dalam tutorial ini. Layanan Cloud Run tidak dikenai biaya hingga menerima permintaan.
Untuk menghapus layanan Cloud Run Anda, jalankan perintah berikut:
gcloud run services delete SERVICE-NAME
Ganti SERVICE-NAME dengan nama layanan Anda.
Anda juga dapat menghapus layanan Cloud Run dari Google Cloud konsol.
Hapus konfigurasi region default
gcloudyang Anda tambahkan selama penyiapan tutorial:gcloud config unset run/regionHapus konfigurasi project:
gcloud config unset projectHapusresource lain yang dibuat dalam tutorial ini: Google Cloud
Langkah berikutnya
- Pelajari kumpulan pekerja Cloud Run lebih lanjut.
- Pelajari demo, tutorial, dan contoh Cloud Run lainnya.
- Konfigurasi autoscaler KEDA lainnya dengan CREMA.