- תזמון של הגדלה והקטנה אוטומטיות של גודל המאגר של ההתחלה המהירה.
- הפעלה אוטומטית של תחנות עבודה לפי לוח זמנים קבוע.
המדריך הזה יעזור לכם להגדיל או להקטין את גודל המאגר של התחלה מהירה כך שיתאים לשעות הפעילות הרגילות של העסק.
מטרות
- כתיבה ופריסה של שירות Cloud Run שמעדכן את גודל המאגר של ההפעלה המהירה בהגדרת תחנת עבודה.
- מגדירים משימה של Cloud Scheduler שתתזמן את השירות שנוצר בשלב 1 להפעלה בין השעות 9:00 ל-17:00, בימים שני עד שישי, כדי להתאים לשעות הפעילות לפי שעון החוף המערבי.
עלויות
במסמך הזה משתמשים ברכיבים הבאים של Google Cloud, והשימוש בהם כרוך בתשלום:
- Cloud Scheduler
- Cloud Run
כדי להעריך את ההוצאות בהתאם לתחזית השימוש שלכם, אתם יכולים להיעזר במחשבון העלויות.
כשמסיימים את המשימות שמתוארות במסמך הזה אפשר למחוק את המשאבים שיצרתם כדי להימנע מחיובים נוספים. מידע נוסף זמין בקטע הסרת המשאבים.
לפני שמתחילים
- נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
-
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.-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של
gcloudבאמצעות המאגר המאוחד לניהול זהויות. -
כדי לאתחל את
gcloudCLI, מריצים את הפקודה הבאה: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.-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של
gcloudבאמצעות המאגר המאוחד לניהול זהויות. -
כדי לאתחל את
gcloudCLI, מריצים את הפקודה הבאה:gcloud init
הכנת הסביבה
מגדירים את משתני הסביבה הבאים, שבהם ישמשו הסקריפטים האוטומטיים שיוצרים בהמשך.
מגדירים את המשתנים
PROJECT_IDו-REGIONשמתכננים להשתמש בהם:PROJECT_ID=$PROJECT_ID REGION=$REGIONמחליפים את $REGION בשם האזור שבו אתם מתכננים להשתמש – לדוגמה,
us-central1.מידע נוסף על האזורים הזמינים מופיע במאמר מיקומים של Cloud Workstations.
ארכיטקטורה של אפליקציות
הפתרון הזה כולל את הרכיבים הבאים Google Cloud :
- Cloud Run
כדי לעדכן את גודל המאגר של ההתחלה המהירה של
WorkstationConfig. - משימות של Cloud Scheduler
כדי לבצע קריאות לפי לוח זמנים מוגדר לעדכון
WorkstationConfig.

יצירת שירות Cloud Run
השלב הראשון הוא להגדיר שרת אינטרנט פשוט שיאזין לבקשות ה-HTTP שמתקבלות ביציאה 8080. מכיוון שהאפליקציה מופעלת בתוך קונטיינר, אפשר לכתוב את השרת בכל שפה.
כדי לכתוב את אפליקציית ההאזנה של שרת האינטרנט ב-Python, מבצעים את הפעולות הבאות:
יוצרים ספרייה חדשה בשם
workstation-config-updaterועוברים אליה:mkdir workstation-config-updater cd workstation-config-updaterיוצרים קובץ בשם
app.pyומדביקים בו את הקוד הבא: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)הקוד הזה יוצר שרת אינטרנט בסיסי שמקשיב ליציאה שמוגדרת על ידי משתנה הסביבה
PORTומריץ את הסקריפטupdate_config.sh.יוצרים קובץ בשם
update_config.shומדביקים בו את הקוד הבא:#!/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הסקריפט הזה משתמש בפקודות
gcloudכדי להציג רשימה של כלWorkstationConfigבאשכול נתון ולעדכן את גודל המאגר של ההפעלה המהירה ל-POOL_SIZE.יוצרים קובץ בשם
Dockerfileומדביקים בו את הקוד הבא: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הקוד הזה מכניס את האפליקציה לקונטיינר כדי להכין אותה לפריסה ב-Cloud Run.
פריסה ב-Cloud Run
כדי לפרוס ל-Cloud Run, מריצים את הפקודה הבאה:
gcloud run deploy --source . --project $PROJECT_ID --region $REGIONכשמופיעה בקשה להזין את שם השירות, מקישים על Enter כדי לאשר את שם ברירת המחדל
workstation-config-updater.אם מוצגת בקשה להפעיל את Artifact Registry API או לאפשר יצירה של מאגר Artifact Registry, מקישים על y.
כשמופיעה בקשה לאפשר הפעלות לא מאומתות, מקישים על n.
מחכים עד שהפריסה תסתיים.
מעתיקים את כתובת ה-URL של השירות כשהיא מוצגת בפורמט הבא:
SERVICE_URL=$SERVICE_URL
הגדרת חשבון שירות להפעלת Cloud Run
שירות העדכון של תצורת תחנת העבודה שפרסתם לא מאפשר הפעלות לא מאומתות.
כדי להפעיל את השירות workstation-config-updater, צריך להגדיר ב-Cloud Scheduler חשבון שירות עם פרטי הכניסה המתאימים.
הגדרת חשבון השירות
אם עדיין אין לכם חשבון שירות שבו אתם רוצים להשתמש למשימות של Cloud Scheduler, אתם צריכים ליצור חשבון שירות חדש.
gcloud iam service-accounts create $SERVICE_ACCOUNT_NAME \ --description="$DESCRIPTION" \ --display-name="$DISPLAY_NAME"מוסיפים את הקישור הנדרש של תפקיד IAM כדי לאפשר לחשבון השירות להפעיל את 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
יצירת הגדרות אישיות של Cloud Scheduler עם אימות
יוצרים משימה ומציינים את
URLשהעתקתם מפריסה ל-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הפקודה הזו מתזמנת עבודה להגדלת גודל מאגר ההתחלה המהירה עבור כל
WorkstationConfigsב-WorkstationCluster$CLUSTER ל-2 בשעה 9:00 לפי שעון החוף המערבי מיום שני עד יום שישי.מידע נוסף זמין במאמר הגדרת לוחות זמנים של משימות.
באופן דומה, כדי להקטין את גודל המאגר של תצורת תחנת העבודה ל-0 בסוף יום העבודה, מריצים את הפקודה הבאה
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
אופציונלי: אימות המשרות
כדי לוודא שהעבודות פועלות כמצופה, אפשר לאמת אותן.
נכנסים לדף Cloud Scheduler במסוף Google Cloud .
workstation-pool-increaser-cronאמורה להופיע ברשימת המשרות.בשורה של משימה
workstation-pool-increaser-cron, לוחצים על פעולות > הפעלת משימה בכוח.יכול להיות שיעברו כמה דקות עד שהעבודה הראשונה שנוצרה בפרויקט תפעל.
בעמודה Status of last execution (סטטוס ההפעלה האחרונה), הסטטוס
Successמציין שהפעלתם את העבודה בהצלחה.
כדי לוודא שההגדרות של תחנות העבודה עודכנו:
עוברים לדף Workstation Configurations במסוף Google Cloud .
מוודאים שגודל המאגר של ההתחלה המהירה הוא 2.
צפייה ביומנים של שירות Cloud Run.
הסרת המשאבים
כדי להימנע מחיובים בחשבון Google Cloud בגלל השימוש במשאבים שנעשה במסגרת המדריך הזה, אפשר למחוק את הפרויקט שמכיל את המשאבים, או להשאיר את הפרויקט ולמחוק את המשאבים בנפרד.
הסרת פרויקט הבדיקה
כדי להימנע מחיובים נוספים בחשבון Google Cloud , מוחקים את כל המשאבים שהצבתם באמצעות המדריך הזה.
מחיקת המאגר
ב-Cloud Run לא מחייבים אתכם כשהשירות שפרסתם לא נמצא בשימוש. עם זאת, יכול להיות שעדיין תחויבו על אחסון קובץ האימג' של הקונטיינר ב-Artifact Registry. כדי למחוק מאגרי Artifact Registry, פועלים לפי השלבים שמפורטים במאמר מחיקת מאגרים במסמכי התיעוד של Artifact Registry.
מחיקת השירות
שירותי Cloud Run לא צוברים עלויות עד שהם מקבלים בקשות. כדי למחוק את שירות Cloud Run, פועלים לפי אחד מהשלבים הבאים:
המסוף
כדי למחוק שירות:
נכנסים לדף Services של Cloud Run במסוף Google Cloud :
ברשימת השירותים, מאתרים את השירות שרוצים למחוק ולוחצים על תיבת הסימון שלו כדי לבחור אותו.
לוחצים על Delete. כל הגרסאות של השירות יימחקו.
gcloud
כדי למחוק שירות, מריצים את הפקודה הבאה:
gcloud run services delete SERVICE --region REGION
מחליפים את מה שכתוב בשדות הבאים:
- SERVICE: השם של השירות.
- REGION: Google Cloud האזור של השירות.
מחיקת פרויקט הבדיקה
כשמוחקים פרויקט ב- Google Cloud , החיוב על כל המשאבים באותו פרויקט מופסק. כדי לשחרר את כל Google Cloud המשאבים בפרויקט, פועלים לפי השלבים הבאים:
- במסוף Google Cloud , נכנסים לדף Manage resources.
- ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
- כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.
מחיקת משימות ב-Cloud Scheduler
כדי למחוק משאבים ספציפיים ב-Cloud Scheduler,
נכנסים לדף Cloud Scheduler במסוף Google Cloud .
לוחצים על תיבות הסימון לצד המשרות.
לוחצים על הלחצן מחיקה בחלק העליון של הדף ומאשרים את המחיקה.
המאמרים הבאים
- כדאי להעמיק את הקריאה ולהכיר דוגמאות לארכיטקטורות, תרשימים ושיטות מומלצות בנושאי Google Cloud. כל אלה זמינים במרכז הארכיטקטורה של Cloud.