Concevoir et créer une tâche shell dans Cloud Run
Avant de commencer
- Connectez-vous à votre compte Google Cloud. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.
-
Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.
-
Vérifiez que la facturation est activée pour votre projet Google Cloud. Découvrez comment vérifier si la facturation est activée sur un projet.
-
Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.
-
Vérifiez que la facturation est activée pour votre projet Google Cloud. Découvrez comment vérifier si la facturation est activée sur un projet.
Écrire l'exemple de tâche
Pour écrire une tâche Cloud Run qui exécute un script shell, procédez comme suit :
Créez un répertoire nommé
jobs
et modifiez les sous-répertoires comme suit :mkdir jobs cd jobs
Créez un fichier Dockerfile contenant les éléments suivants :
Dans le même répertoire, créez un fichier
script.sh
pour le code de la tâche réelle. Copiez les exemples de lignes suivants :Les jobs Cloud Run permettent aux utilisateurs de spécifier le nombre de tâches que le job doit exécuter. Cet exemple de code montre comment utiliser la variable d'environnement
CLOUD_RUN_TASK_INDEX
intégrée. Chaque tâche correspond à une copie en cours d'exécution du conteneur. Notez que les tâches sont généralement exécutées en parallèle. L'utilisation de plusieurs tâches est pertinente si chacune d'elles peut traiter indépendamment un sous-ensemble de vos données.Chaque tâche connaît son index, stocké dans la variable d'environnement
CLOUD_RUN_TASK_INDEX
. La variable d'environnementCLOUD_RUN_TASK_COUNT
intégrée contient le nombre de tâches fournies au moment de l'exécution du job via le paramètre--tasks
.Le code présenté montre également comment relancer des tâches à l'aide de la variable d'environnement intégrée
CLOUD_RUN_TASK_ATTEMPT
, qui contient le nombre de tentatives d'exécution de cette tâche, commençant à 0 pour la première tentative et incrémentée de 1 pour chaque nouvelle tentative, jusqu'à--max-retries
.Le code vous permet également de générer des échecs afin de tester la répétition des tentatives et de générer des journaux d'erreurs afin que vous puissiez voir à quoi ils ressemblent.
Votre code est terminé et prêt à être empaqueté dans un conteneur.
Créer le code dans une image de conteneur et l'envoyer vers un registre
Important : Dans ce guide de démarrage rapide, nous partons du principe que vous disposez de rôles de propriétaire ou d'éditeur dans le projet que vous utilisez pour les besoins du guide de démarrage rapide. Sinon, reportez-vous aux sections Autorisations de déploiement Cloud Run, Autorisations Cloud Build et Autorisations Artifact Registry pour connaître les autorisations requises.
Compilez avec le fichier Dockerfile :gcloud builds submit -t "gcr.io/PROJECT_ID/logger-job"
Créer une tâche dans Cloud Run
Pour créer une tâche à l'aide du conteneur que vous venez de compiler, procédez comme suit:
gcloud beta run jobs create job-quickstart \ --image gcr.io/PROJECT_ID/logger-job \ --tasks 50 \ --set-env-vars SLEEP_MS=10000 \ --set-env-vars FAIL_RATE=0.5 \ --max-retries 5 \ --region REGION
où PROJECT_ID correspond à votre ID de projet et REGION à votre région, par exemple us-central1
. Notez que vous pouvez remplacer les différents paramètres par les valeurs que vous souhaitez utiliser à des fins de test.
SLEEP_MS
simule le travail et FAIL_RATE
entraîne l'échec de X
% des tâches afin que vous puissiez tester le parallélisme et réessayer les tâches ayant échoué.
Exécuter une tâche dans Cloud Run
Pour exécuter la tâche que vous venez de créer, procédez comme suit :
gcloud beta run jobs execute job-quickstart
Lorsque vous êtes invité à indiquer la région, sélectionnez la région de votre choix, par exemple us-central1
.
Tester en local
Vous pouvez exécuter la tâche en local :
docker run --rm -e FAIL_RATE=0.9 -e SLEEP_MS=1000 gcr.io/PROJECT_ID/logger-joboù PROJECT_ID correspond à l'ID de votre projet.
Étape suivante
Pour savoir comment créer un conteneur à partir d'une source de code et le transférer vers un dépôt, consultez la section suivante :