- תזמון הגדלות והקטנות אוטומטיות של גודל המאגר של ההפעלה המהירה.
- הפעלה אוטומטית של תחנות עבודה לפי לוח זמנים קבוע.
ההדרכה הזו עוזרת להגדיל או להקטין את גודל המאגר של ההפעלה המהירה כך שיתאים לשעות הפעילות הרגילות של העסק.
מטרות
- כותבים ופורסים שירות Cloud Run שמעדכן את גודל המאגר להפעלה מהירה של הגדרת תחנת העבודה.
- מגדירים משימה של Cloud Scheduler שתתזמן את השירות שנוצר בשלב 1 להרצה בין השעות 9:00 ל-17:00, בימים שני עד שישי, בהתאם לשעות הפעילות של אזור הזמן PST.
עלויות
במסמך הזה משתמשים ברכיבים הבאים של 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, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the
gcloudCLI with your federated identity. -
To initialize the
gcloudCLI, run the following command: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, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the
gcloudCLI with your federated identity. -
To initialize the
gcloudCLI, run the following command: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.
מחכים עד שהפריסה תסתיים.
כשהכתובת של השירות מוצגת בפורמט הבא, מעתיקים אותה:
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הפקודה הזו מתזמנת משימה להגדלת גודל המאגר של ההפעלה המהירה ל-2 בכל
WorkstationConfigsב-WorkstationCluster$CLUSTER בשעה 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, לוחצים על Actions > Force a job run.יכול להיות שיעברו כמה דקות עד שהמשימה הראשונה שנוצרה בפרויקט תתחיל לפעול.
בעמודה Status of last execution, הסטטוס
Successמציין שהמשימה הופעלה בהצלחה.
כדי לוודא שההגדרות של תחנת העבודה עודכנו:
עוברים לדף Workstation Configurations במסוף Google Cloud .
מוודאים שהערך של Quick start pool size הוא 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 בפרויקט:
- נכנסים לדף Manage resources במסוף Google Cloud .
- ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
- כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.
מחיקת משימות ב-Cloud Scheduler
כדי למחוק משאבים ספציפיים ב-Cloud Scheduler,
נכנסים לדף Cloud Scheduler במסוף Google Cloud .
לוחצים על תיבות הסימון לצד המשרות.
לוחצים על הכפתור מחיקה בחלק העליון של הדף ומאשרים את המחיקה.
המאמרים הבאים
- כדאי להעמיק את הקריאה ולהכיר דוגמאות לארכיטקטורות, תרשימים ושיטות מומלצות בנושאי Google Cloud. כל אלה זמינים במרכז הארכיטקטורה של Cloud.