- Automatische Erhöhung und Verringerung der Größe des Schnellstartpools planen.
- Workstations nach einem regelmäßigen Zeitplan automatisch starten.
In dieser Anleitung erfahren Sie, wie Sie die Größe des Schnellstartpools an die typischen Geschäftszeiten anpassen.
Ziele
- Einen Cloud Run-Dienst schreiben und bereitstellen, der die Größe des Schnellstartpools für eine Workstation-Konfiguration aktualisiert.
- Einen Cloud Scheduler-Job konfigurieren, der den in Schritt 1 erstellten Dienst so plant, dass er montags bis freitags von 09:00 bis 17:00 Uhr ausgeführt wird und den Geschäftszeiten in der Zeitzone PST entspricht.
Kosten
In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Google Cloud:
- Cloud Scheduler
- Cloud Run
Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen.
Verwenden Sie den Preisrechner.
Nach Abschluss der in diesem Dokument beschriebenen Aufgaben können Sie weitere Kosten vermeiden, indem Sie die erstellten Ressourcen löschen. Weitere Informationen finden Sie unter Bereinigen.
Hinweis
- Melden Sie sich in Ihrem Google Cloud Konto an. Wenn Sie noch kein Google Cloud-Kunde sind, erstellen Sie ein Konto, um zu sehen, wie sich unsere Produkte in realen Szenarien schlagen. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
-
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.-
Installieren Sie die Google Cloud CLI.
-
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der
gcloudCLI anmelden. -
Führen Sie folgenden Befehl aus, um die
gcloudCLI zu initialisieren: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.-
Installieren Sie die Google Cloud CLI.
-
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der
gcloudCLI anmelden. -
Führen Sie folgenden Befehl aus, um die
gcloudCLI zu initialisieren:gcloud init
Umgebung vorbereiten
Legen Sie die folgenden Umgebungsvariablen fest, die von den automatisierten Skripts verwendet werden, die Sie später erstellen.
Legen Sie die Variablen
PROJECT_IDundREGIONfest, die Sie verwenden möchten:PROJECT_ID=$PROJECT_ID REGION=$REGIONErsetzen Sie $REGION durch den Namen der Region, die Sie verwenden möchten, z. B.
us-central1.Weitere Informationen zu den verfügbaren Regionen finden Sie unter Cloud Workstations-Standorte.
Anwendungsarchitektur
Diese Lösung umfasst die folgenden Google Cloud Komponenten:
- Cloud Run
zum Aktualisieren der Größe des Schnellstartpools der
WorkstationConfig. - Cloud Scheduler-Jobs
die nach einem festgelegten Zeitplan Aufrufe senden, um die
WorkstationConfigzu aktualisieren.

Cloud Run-Dienst erstellen
Im ersten Schritt richten Sie einen einfachen Webserver ein, der auf HTTP-Anfragen an Port 8080 wartet. Da die Anwendung containerisiert ist, können Sie Ihren Server in einer beliebigen Sprache schreiben.
So schreiben Sie die Webserver-Listener-Anwendung in Python:
Erstellen Sie ein neues Verzeichnis mit dem Namen
workstation-config-updaterund ersetzen Sie das aktuelle Verzeichnis durch dieses Verzeichnis:mkdir workstation-config-updater cd workstation-config-updaterErstellen Sie eine Datei mit dem Namen
app.pyund fügen Sie den folgenden Code in diese ein: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)Mit diesem Code wird ein einfacher Webserver erstellt, der den von der
PORTUmgebungsvariable definierten Port überwacht und das Skriptupdate_config.shausführt.Erstellen Sie eine Datei mit dem Namen
update_config.shund fügen Sie den folgenden Code in diese ein:#!/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 doneDieses Skript verwendet
gcloud-Befehle, um alleWorkstationConfigin einem bestimmten Cluster aufzulisten und die Größe des Schnellstartpools aufPOOL_SIZEzu aktualisieren.Erstellen Sie eine Datei mit dem Namen
Dockerfileund fügen Sie den folgenden Code in diese ein: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:appDieser Code containerisiert die Anwendung, damit sie in Cloud Run bereitgestellt werden kann.
In Cloud Run bereitstellen
Führen Sie den folgenden Befehl aus, um die Anwendung in Cloud Run bereitzustellen:
gcloud run deploy --source . --project $PROJECT_ID --region $REGIONWenn Sie nach dem Dienstnamen gefragt werden, drücken Sie die Eingabetaste, um den Standardnamen
workstation-config-updaterzu übernehmen.Wenn Sie aufgefordert werden, die Artifact Registry API zu aktivieren oder das Erstellen des Artifact Registry-Repositorys zu erlauben, drücken Sie y.
Wenn Sie aufgefordert werden, nicht authentifizierte Aufrufe zuzulassen, drücken Sie n.
Warten Sie, bis die Bereitstellung abgeschlossen ist.
Kopieren Sie die Dienst-URL, wenn sie im folgenden Format angezeigt wird:
SERVICE_URL=$SERVICE_URL
Dienstkonto zum Aufrufen von Cloud Run konfigurieren
Der von Ihnen bereitgestellte Dienst „workstation-config-updater“ lässt keine nicht authentifizierten Aufrufe zu.
Cloud Scheduler erfordert ein Dienstkonto mit den entsprechenden Anmeldeinformationen, um den Dienst „workstation-config-updater“ aufzurufen.
Dienstkonto einrichten
Wenn Sie noch kein Dienstkonto haben, das Sie für Cloud Scheduler-Jobs verwenden möchten, erstellen Sie ein neues Dienstkonto.
gcloud iam service-accounts create $SERVICE_ACCOUNT_NAME \ --description="$DESCRIPTION" \ --display-name="$DISPLAY_NAME"Fügen Sie die erforderliche IAM-Rollenbindung hinzu, damit Ihr Dienstkonto Cloud Run aufrufen kann.
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-Konfiguration mit Authentifizierung erstellen
Erstellen Sie einen Job und geben Sie die
URLan, die Sie unter In Cloud Run bereitstellen kopiert haben: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.comMit diesem Befehl wird ein Job geplant, der die Größe des Schnellstartpools für alle
WorkstationConfigsinWorkstationCluster$CLUSTER um 9:00 Uhr PST von Montag bis Freitag auf 2 erhöht.Weitere Informationen finden Sie unter Jobzeitpläne konfigurieren.
Wenn Sie die Poolgröße für Ihre Workstation-Konfiguration am Ende eines Arbeitstags auf 0 reduzieren möchten, führen Sie den folgenden Befehl aus:
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
Optional: Jobs prüfen
Sie können die Jobs prüfen, um sicherzustellen, dass sie wie erwartet funktionieren.
Wechseln Sie in der Google Cloud Console zur Seite Cloud Scheduler.
workstation-pool-increaser-cronsollte in der Liste der Jobs angezeigt werden.Klicken Sie in der Zeile für den Job
workstation-pool-increaser-cronauf Aktionen > Jobausführung erzwingen.Die Ausführung des ersten in einem Projekt erstellten Jobs kann einige Minuten dauern.
In der Spalte Status der letzten Ausführung zeigt der Status
Successan, dass Sie Ihren Job erfolgreich ausgeführt haben.
So prüfen Sie, ob die Workstation-Konfigurationen aktualisiert wurden:
Wechseln Sie in der Google Cloud Console zur Seite Workstation-Konfigurationen.
Prüfen Sie, ob die Größe des Schnellstartpools 2 ist.
Logs für Ihren Cloud Run-Dienst aufrufen.
Bereinigen
Damit Ihrem Google Cloud-Konto die in dieser Anleitung verwendeten Ressourcen nicht in Rechnung gestellt werden, löschen Sie entweder das Projekt, das die Ressourcen enthält, oder Sie behalten das Projekt und löschen die einzelnen Ressourcen.
Testprojekt entfernen
Damit Ihrem Google Cloud Konto keine zusätzlichen Kosten entstehen, löschen Sie alle Ressourcen, die Sie mit dieser Kurzanleitung bereitgestellt haben.
Repository löschen
Cloud Run berechnet Ihnen keine Kosten, wenn Ihr bereitgestellter Dienst nicht verwendet wird. Möglicherweise werden Ihnen jedoch weiterhin Kosten für das Speichern des Container-Images in Artifact Registry in Rechnung gestellt. Informationen zum Löschen von Artifact Registry-Repositories finden Sie unter Repositories in Artifact Registry löschen.
Dienst löschen
Für Cloud Run-Dienste fallen erst Kosten an, wenn sie Anfragen erhalten. So löschen Sie Ihren Cloud Run-Dienst:
Console
So löschen Sie einen Dienst:
Wechseln Sie in der Google Cloud Console zur Seite Dienste von Cloud Run:
Klicken Sie in der Übersicht das Kästchen des zu löschenden Dienstes an.
Klicken Sie auf Löschen. Dadurch werden alle Überarbeitungen des Dienstes gelöscht. Dadurch werden alle Überarbeitungen des Dienstes gelöscht.
gcloud
Führen Sie den folgenden Befehl aus, um einen Dienst zu löschen:
gcloud run services delete SERVICE --region REGION
Ersetzen Sie Folgendes:
- SERVICE: Name Ihres Dienstes.
- REGION: Google Cloud Region des Dienstes.
Testprojekt löschen
Wenn Sie Ihr Google Cloud Projekt löschen, wird die Abrechnung für alle Ressourcen in diesem Projekt beendet. So geben Sie alle Google Cloud Ressourcen in Ihrem Projekt frei:
- Wechseln Sie in der Google Cloud Console zur Seite Ressourcen verwalten.
- Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie dann auf Löschen.
- Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Shut down (Beenden), um das Projekt zu löschen.
Cloud Scheduler-Jobs löschen
So löschen Sie einzelne Cloud Scheduler-Ressourcen:
Wechseln Sie in der Google Cloud Console zur Seite Cloud Scheduler.
Klicken Sie die Kästchen neben Ihren Jobs an.
Klicken Sie oben auf der Seite auf Löschen und bestätigen Sie den Löschvorgang.
Nächste Schritte
- Referenzarchitekturen, Diagramme und Best Practices zu Google Cloud kennenlernen. Weitere Informationen zu Cloud Architecture Center