- Planifier l'augmentation et la diminution automatiques de la taille du pool de démarrage rapide.
- Démarrer automatiquement des stations de travail selon un calendrier régulier.
Ce tutoriel vous aide à augmenter et à diminuer la taille du pool de démarrage rapide pour qu'elle corresponde aux horaires de bureau habituels.
Objectifs
- Écrire et déployer un service Cloud Run qui met à jour la taille du pool de démarrage rapide pour une configuration de station de travail.
- Configurer une tâche Cloud Scheduler qui planifie l'exécution du service créé à l'étape 1 de 9h00 à 17h00, du lundi au vendredi, pour qu'elle corresponde aux heures de bureau PST.
Coûts
Dans ce document, vous utilisez les composants facturables suivants de Google Cloud:
- Cloud Scheduler
- Cloud Run
Obtenez une estimation des coûts en fonction de votre utilisation prévue,
utilisez le simulateur de coût.
Une fois que vous avez terminé les tâches décrites dans ce document, supprimez les ressources que vous avez créées pour éviter que des frais vous soient facturés. Pour en savoir plus, consultez la section Effectuer un nettoyage.
Avant de commencer
- Connectez-vous à votre Google Cloud compte. Si vous n'avez jamais utilisé Google Cloud, créez un compte pour évaluer les performances de nos produits dans des scénarios réels. Les nouveaux clients bénéficient également de 300 $de crédits sans frais pour exécuter, tester et déployer des charges de travail.
-
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.-
Installez la Google Cloud CLI.
-
Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la
gcloudCLI avec votre identité fédérée. -
Pour initialiser la
gcloudCLI, exécutez la commande suivante :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.-
Installez la Google Cloud CLI.
-
Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la
gcloudCLI avec votre identité fédérée. -
Pour initialiser la
gcloudCLI, exécutez la commande suivante :gcloud init
Préparer l'environnement
Définissez les variables d'environnement suivantes, qui sont utilisées par les scripts automatisés que vous créerez ultérieurement.
Définissez les variables
PROJECT_IDetREGIONque vous prévoyez d'utiliser :PROJECT_ID=$PROJECT_ID REGION=$REGIONRemplacez $REGION par le nom de la région que vous prévoyez d'utiliser, par exemple
us-central1.Pour en savoir plus sur les régions disponibles, consultez la section Emplacements Cloud Workstations.
Architecture de l'application
Cette solution inclut les Google Cloud composants suivants :
- Cloud Run
pour mettre à jour la taille du pool de démarrage rapide de
WorkstationConfig. - Tâches Cloud Scheduler
pour effectuer des appels selon un calendrier défini afin de mettre à jour
WorkstationConfig.

Créer un service Cloud Run
La première étape consiste à configurer un serveur Web simple pour écouter les requêtes HTTP que vous recevez sur le port 8080. Comme l'application est conteneurisée, vous pouvez écrire votre serveur dans n'importe quel langage.
Pour écrire l'application d'écoute du serveur Web en Python, procédez comme suit :
Créez un répertoire nommé
workstation-config-updateret modifiez les sous-répertoires comme suit :mkdir workstation-config-updater cd workstation-config-updaterCréez un fichier nommé
app.pyet collez-y le code suivant :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)Ce code crée un serveur Web de base qui écoute le port défini par la
PORTvariable d'environnement et exécute le scriptupdate_config.sh.Créez un fichier nommé
update_config.shet collez-y le code suivant :#!/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 doneCe script utilise des commandes
gcloudpour répertorier tous lesWorkstationConfigd'un cluster donné et mettre à jour sa taille du pool de démarrage rapide surPOOL_SIZE.Créez un fichier nommé
Dockerfileet collez-y le code suivant :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:appCe code conteneurise l'application pour la préparer à être déployée sur Cloud Run.
Déployer dans Cloud Run
Pour déployer dans Cloud Run, exécutez la commande suivante :
gcloud run deploy --source . --project $PROJECT_ID --region $REGIONLorsque vous êtes invité à saisir le nom du service, appuyez sur Enter pour accepter le nom par défaut
workstation-config-updater.Si vous êtes invité à activer l'API Artifact Registry ou à autoriser la création du dépôt Artifact Registry, appuyez sur y.
Lorsque vous êtes invité à autoriser les appels non authentifiés, appuyez sur n.
Patientez jusqu'à la fin du déploiement.
Lorsque l'URL du service s'affiche au format suivant, copiez-la :
SERVICE_URL=$SERVICE_URL
Configurer le compte de service pour appeler Cloud Run
Le service workstation-config-updater que vous avez déployé n'autorise pas les appels non authentifiés.
Cloud Scheduler nécessite un compte de service disposant des identifiants appropriés pour appeler le service workstation-config-updater.
Configurer le compte de service
Si vous ne disposez pas encore d'un compte de service que vous souhaitez utiliser pour les tâches Cloud Scheduler, créez un nouveau compte de service.
gcloud iam service-accounts create $SERVICE_ACCOUNT_NAME \ --description="$DESCRIPTION" \ --display-name="$DISPLAY_NAME"Ajoutez la liaison de rôle IAM requise pour autoriser votre compte de service à appeler 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
Créer une configuration Cloud Scheduler avec authentification
Créez une tâche et spécifiez le
URLque vous avez copié à partir de Déployer dans 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.comCette commande planifie une tâche qui augmente la taille du pool de démarrage rapide pour tous les
WorkstationConfigsdansWorkstationCluster$CLUSTER à 2 à 9h00 PST du lundi au vendredi.Pour plus d'informations, reportez-vous à la rubrique Configurer la planification de tâches.
De même, pour réduire la taille du pool de votre configuration de station de travail à 0 à la fin d'une journée de travail, exécutez la commande suivante :
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
Facultatif : Vérifier les tâches
Pour vous assurer que vos tâches fonctionnent comme prévu, vous pouvez les vérifier.
Accédez à la page Cloud Scheduler dans la Google Cloud console.
workstation-pool-increaser-crondoit apparaître dans la liste des tâches.Sur la ligne correspondant à la tâche
workstation-pool-increaser-cron, cliquez sur Actions > Forcer l'exécution d'une tâche.L'exécution de la première tâche créée dans un projet peut prendre quelques minutes.
Dans la colonne État de la dernière exécution, l'état
Successindique que la tâche a bien été exécutée.
Pour vérifier que les configurations de la station de travail sont mises à jour, procédez comme suit :
Accédez à la page Configurations de la station de travail dans la Google Cloud console.
Vérifiez que la taille du pool de démarrage rapide est de 2.
Affichez les journaux de votre service Cloud Run.
Effectuer un nettoyage
Pour éviter que les ressources utilisées lors de ce tutoriel soient facturées sur votre compte Google Cloud, supprimez le projet contenant les ressources, ou conservez le projet et supprimez les ressources individuelles.
Supprimer le projet de test
Pour éviter des frais supplémentaires sur votre Google Cloud compte, supprimez toutes les ressources que vous avez déployées avec ce guide de démarrage rapide.
Supprimer votre dépôt
Cloud Run ne vous facture pas lorsque votre service déployé n'est pas utilisé. Toutefois, vous pouvez toujours être facturé pour le stockage de l'image de conteneur dans Artifact Registry. Pour supprimer des dépôts Artifact Registry, suivez les étapes décrites dans la section Supprimer des dépôts de la documentation Artifact Registry.
Supprimer votre service
Les services Cloud Run n'entraînent pas de coûts tant qu'ils ne reçoivent pas de requêtes. Pour supprimer votre service Cloud Run, procédez comme suit :
Console
Pour supprimer un service, procédez comme suit :
Dans la Google Cloud console, accédez à la page Services de Cloud Run :
Recherchez le service que vous souhaitez supprimer dans la liste des services, puis cliquez la case correspondante pour le sélectionner.
Cliquez sur Supprimer pour supprimer toutes les révisions du service. Cette opération supprime toutes les révisions du service.
gcloud
Pour supprimer un service, exécutez la commande suivante :
gcloud run services delete SERVICE --region REGION
Remplacez les éléments suivants :
- SERVICE : nom de votre service.
- REGION : Google Cloud région du service.
Supprimer votre projet de test
La suppression de votre Google Cloud projet arrête la facturation de toutes les ressources de ce projet. Pour libérer toutes les Google Cloud ressources de votre projet, procédez comme suit :
- Dans la Google Cloud console, accédez à la page Gérer les ressources.
- Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur Supprimer.
- Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez Arrêter pour supprimer le projet.
Supprimer les tâches Cloud Scheduler
Pour supprimer des ressources Cloud Scheduler individuelles,
Accédez à la page Cloud Scheduler dans la Google Cloud console.
Cochez les cases situées en regard de vos tâches.
Cliquez sur le bouton Supprimer en haut de la page et confirmez la suppression.
Étape suivante
- Découvrez des architectures de référence, des schémas et des bonnes pratiques concernant Google Cloud. Consultez notre Cloud Architecture Center.