À propos de cet atelier de programmation
1. Présentation
Dernière mise à jour:06/05/2022
Tâches Cloud Run
Les tâches Cloud Run vous permettent d'exécuter des tâches de longue durée sur Cloud Run.
Cet atelier de programmation est strictement informatif. Il vous explique quand et comment utiliser les tâches Cloud Run. Il vous permet de vous préparer à l'atelier de programmation Premiers pas avec les tâches Cloud Run, au cours duquel vous pourrez vous familiariser avec Google Cloud Console pour créer un conteneur, créer et exécuter une tâche Cloud Run, et mettre à jour et planifier les tâches. .
Points abordés
- Tâches Cloud Run
- Quand utiliser des tâches Cloud Run ?
- Workflow des tâches Cloud Run
- Créer une tâche Cloud Run
- Exécuter une tâche Cloud Run
- Exécuter une tâche selon un calendrier
- Afficher l'état d'exécution
- Gérer les tâches et les exécutions
- Détecter l'avancement d'une tâche
- Mettre à jour une offre d'emploi
2. Présentation des tâches Cloud Run
Vous pouvez exécuter votre code sur Cloud Run de deux manières. Vous pouvez l'exécuter en continu en tant que service,
Si votre code effectue une action, puis s'arrête, vous pouvez utiliser une tâche Cloud Run.
Bien que les services Cloud Run conviennent aux conteneurs qui écoutent indéfiniment les requêtes HTTP, les tâches Cloud Run conviennent aux conteneurs qui sont exécutés et qui ne diffusent pas de requêtes, telles que les tâches de traitement de données et d'administration.
Voici d'autres cas d'utilisation des tâches Cloud Run:
- Exécution d'un script pour effectuer des migrations de bases de données ou d'autres tâches opérationnelles
- Traitement en parallèle de tous les fichiers d'un bucket Cloud Storage.
- créer et envoyer des factures chaque mois ;
- Toutes les quatre heures, enregistrez les résultats d'une requête de base de données au format XML et importez le fichier.
Par rapport aux autres plates-formes compatibles avec les tâches de longue durée, les tâches Cloud Run démarrent rapidement après leur création. Un conteneur simple peut démarrer en seulement 10 secondes selon sa complexité. Les tâches Cloud Run conviennent donc aux situations dans lesquelles il peut être problématique d'attendre quelques minutes qu'une VM démarre.
3. Workflow des tâches Cloud Run
Le workflow de tâche Cloud Run comprend deux étapes simples:
- Créez la tâche. La tâche encapsule toutes les configurations nécessaires à l'exécution de la tâche, telles que l'image du conteneur.
- Exécutez la tâche. Utilisez Cloud Console ou la CLI gcloud, puis exécutez la tâche à partir de la ligne de commande.
Une tâche peut démarrer une instance de conteneur pour exécuter votre code, ou démarrer plusieurs instances de conteneur indépendantes identiques en parallèle en spécifiant le nombre de tâches à exécuter. Par exemple, si vous lisez 1 000 images depuis Cloud Storage pour les redimensionner et les recadrer, cela sera plus lent que de les traiter en même temps que pour de nombreuses instances de conteneur.
4. Créer la tâche
Pour créer la tâche, vous pouvez utiliser Cloud Console ou la CLI gcloud à l'aide de la commande suivante:
gcloud beta run jobs create JOB_NAME --image IMAGE_URL OPTIONS
Remplacez :
JOB_NAME
par le nom de la tâche que vous souhaitez créer.IMAGE_URL
avec une référence à l'image de conteneur.- (Facultatif) Remplacez
OPTIONS
par l'un des indicateurs disponibles. Pour obtenir la liste complète des indicateurs, exécutezgcloud beta run jobs create --help
.
Exemples d'indicateurs:
--tasks
pour le nombre de tâches à exécuter.-–max retries
pour le nombre de nouvelles tentatives d'une tâche ayant échoué.--parallelism
pour le nombre maximal de tâches pouvant être exécutées en parallèle.--execute-now
pour exécuter la tâche immédiatement après sa création.--async
pour quitter la tâche immédiatement après la création d'une nouvelle exécution.
Vous pouvez également utiliser les fonctionnalités Cloud Run habituelles pour sécuriser votre tâche Cloud Run et la connecter au reste de votre environnement Google Cloud Platform (GCP).
5. Exécuter la tâche
Pour exécuter la tâche, vous pouvez utiliser Cloud Console ou la CLI gcloud à l'aide de la commande suivante:
- Dans Cloud Console, cliquez sur le nom de la tâche, puis sur Running (Exécuter) en haut de la page.
- Dans la CLI gcloud, utilisez la commande suivante:
gcloud beta run jobs execute JOB_NAME EXECUTION_OPTIONS
Remplacez JOB_NAME
par le nom de la tâche. Vous pouvez éventuellement remplacer EXECUTION_OPTIONS
pour spécifier les éléments suivants:
- L'exécution de la tâche est immédiate après sa création.
gcloud beta run jobs create JOB_NAME --execute-now
- Si vous voulezAttendre jusqu'à la fin de l'exécution avant de quitter.
gcloud beta run jobs create JOB_NAME --wait
- Vous souhaitez quitter immédiatement après avoir créé une exécution.
gcloud beta run jobs create JOB_NAME --async
6. Exécuter la tâche selon une planification
Si vous souhaitez exécuter votre tâche selon une programmation, utilisez Cloud Scheduler.
Par exemple, vous pouvez créer et envoyer des factures à intervalles réguliers, ou enregistrer les résultats d'une requête de base de données au format XML et importer le fichier toutes les deux ou trois heures.
Avec Cloud Scheduler, vous pouvez planifier la tâche et gérer toutes vos tâches d'automatisation depuis un seul et même endroit.
- Exécutez vos tâches de traitement par lot et par big data simultanément en semaine, par jour ou par heure, en bénéficiant d'une exécution garantie et de nouvelles tentatives en cas d'échec.
- Automatisez de nombreuses tâches fastidieuses associées à l'exécution de l'infrastructure cloud de manière fiable et entièrement gérée.
- Automatisez pratiquement tout.
- Affichez et gérez toutes vos tâches à partir d'une interface utilisateur ou d'une interface de ligne de commande unique.
Une fois que vous avez configuré votre environnement pour permettre à votre projet d'utiliser Cloud Scheduler, vous pouvez créer une tâche Cloud Run, puis définir une planification en saisissant le nom, la région, la description, la fréquence et le fuseau horaire. Cloud Scheduler exécute ensuite la tâche Cloud Run à la fréquence que vous spécifiez.
7. Afficher l'état d'exécution d'une tâche
Une fois votre tâche exécutée, vous pouvez consulter les journaux dans les journaux Cloud Logging et les données de surveillance dans Cloud Monitoring.
Pour afficher les journaux, vous pouvez:
- Utiliser la page Cloud Run dans Cloud Console.
- Utiliser l'explorateur de journaux Cloud Logging dans Cloud Console
Ces deux méthodes d'affichage examinent les mêmes journaux stockés dans Cloud Logging, mais l'explorateur de journaux Cloud Logging fournit plus de détails et davantage de fonctionnalités de filtrage.
Cloud Monitoring propose une surveillance des performances et des métriques dans Cloud Run, ainsi que des alertes pour envoyer des notifications lorsque certains seuils de métriques sont dépassés. Cloud Run est automatiquement intégré à Cloud Monitoring sans aucune installation ni configuration requise. Les métriques de vos tâches Cloud Run sont donc automatiquement collectées lorsqu'elles sont en cours d'exécution.
Vous pouvez afficher les métriques dans Cloud Monitoring ou sur la page Cloud Run de la console. Cloud Monitoring offre davantage d'options de filtrage et de création de graphiques.
8. Gérer les tâches et les exécutions
Pour gérer votre tâche, consultez la liste à l'aide de Cloud Console ou de la CLI gcloud:
Vous pouvez également réaliser les opérations suivantes :
- Arrêtez une tâche en cours d'exécution en la supprimant.
- Supprimer les exécutions de tâche qui ne sont pas en cours d'exécution.
- Supprimez une offre d'emploi.
La suppression d'une tâche annule toutes ses exécutions, mais les journaux de tâches et les données de surveillance restent disponibles pendant la durée de conservation des journaux, qui est généralement de 30 jours. La surveillance des données reste disponible dans Cloud Monitoring.
9. Détecter l'exécution de la tâche
Il existe plusieurs façons de détecter qu'une exécution de votre tâche est terminée:
- Exécutez votre tâche avec l'option
--wait
pour quitter la CLI gcloud une fois la tâche terminée.
gcloud beta run jobs execute JOB_NAME --wait
- Interrogez le point de terminaison runtimes.get de l'API REST pour que la condition d'état
Completed
soitTrue
. - Recherchez l'entrée de journal écrite lorsqu'une exécution se termine comme suit:
Completed condition status changed to True for Execution sleepy-l8zjp.
Pour rechercher ce message de journal, exécutez la requête suivante dans Cloud Logging :
resource.type="cloud_run_revision"
resource.labels.revision_name="EXECUTION_NAME" log_name="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event"
protoPayload.response.status.conditions.type="Completed"
protoPayload.response.status.conditions.status="True"
Vous pouvez également interroger l'emplacement où vous créez le résultat pour détecter le moment où il apparaît. Cependant, cette méthode ne fonctionne correctement que si l'écriture du résultat est la dernière tâche effectuée. Par exemple, si votre tâche effectue un nettoyage après l'écriture des résultats, celle-ci peut toujours échouer après l'écriture du résultat.
10. Mettre à jour la tâche
Lorsque vous créez une tâche, vous pouvez spécifier une image de conteneur à l'aide d'une balise ou d'un digest exact:
- Exemple de tag:
gcr.io/my-project/my-image:tag
- Exemple de condensé:
gcr.io/my-project/my-image@sha256:41f34ab970ee...
Si aucun de ces paramètres n'est spécifié, le tag :latest
est utilisé.
La façon de mettre à jour votre tâche pour exécuter la dernière version de votre code dépend de si vous avez spécifié une image de conteneur avec une balise ou un condensé.
Si vous avez spécifié une image de conteneur avec une balise, Cloud Run résout votre image à un condensé spécifique lors de l'exécution de votre tâche. Cela signifie que vous n'avez pas besoin de mettre à jour explicitement votre tâche pour récupérer la dernière version de votre conteneur la prochaine fois que vous exécutez la tâche.
Si vous préférez utiliser un condensé de conteneur spécifique à chaque exécution, vous pouvez spécifier une image de conteneur avec un condensé exact. Dans ce cas, vous devez explicitement mettre à jour votre tâche pour qu'elle utilise un autre condensé si vous souhaitez que les modifications apportées au code soient prises en compte:
gcloud alpha run jobs update JOB_NAME --image NEW-IMAGE
Quelle que soit la manière dont vous spécifiez l'image de votre conteneur, toutes les tâches d'une exécution utiliseront toujours le même condensé.
Vous ne pouvez pas lancer de nouvelles exécutions pendant l'application d'une mise à jour. Vous devez attendre la fin de la mise à jour, qui prend généralement quelques secondes. Si la mise à jour échoue, aucune nouvelle exécution ne peut être créée. Vous devrez d'abord rétablir la tâche en bon état.
11. Félicitations
Félicitations, vous avez appris quand et comment utiliser des tâches Cloud Run !
Vous avez appris:
- Tâches Cloud Run
- Quand utiliser des tâches Cloud Run ?
- Workflow des tâches Cloud Run
- Créer une tâche Cloud Run
- Exécuter une tâche Cloud Run
- Exécuter une tâche selon un calendrier
- Afficher l'état d'exécution
- Gérer les tâches et les exécutions
- Détecter l'avancement d'une tâche
- Mettre à jour une offre d'emploi
Et ensuite ?
Premiers pas avec les tâches Cloud Run
Aide
Pour consulter la documentation de référence complète de gcloud, utilisez la commande help:
gcloud alpha run jobs --help
gcloud alpha run jobs executions --help
Documents de référence
Exécuter des tâches selon un calendrier
Configurer votre environnement
Journaliser et afficher des journaux
Surveiller l'état et les performances
Documentation Cloud Monitoring
Gérer les exécutions de tâches
Méthode: namespaces.runtimes.get
Bonnes pratiques pour les nouvelles tâches et points de contrôle