Cette page explique comment créer et mettre à jour des jobs Cloud Run à partir d'une image de conteneur existante. Contrairement à un service Cloud Run, qui écoute et diffuse les requêtes, un job Cloud Run n'exécute que ses tâches et se ferme une fois qu'elle a terminé. Un job n'écoute pas et ne diffuse pas les requêtes.
Après avoir créé ou mis à jour un job, vous pouvez effectuer les opérations suivantes :
- Exécuter le job de manière unique ou planifiée, ou dans le cadre d'un workflow.
- Remplacez les paramètres configurés pour un job lorsque vous exécutez un job.
- Gérez des exécutions de jobs individuels et affichez les journaux d'exécution.
Vous pouvez structurer un job en tant que tâche unique ou en tant que plusieurs tâches indépendantes (jusqu'à 10 000 tâches) pouvant être exécutées en parallèle. Chaque tâche exécute une instance de conteneur et peut être configurée de manière à être relancée en cas d'échec. Chaque opération connaît son index, qui est stocké dans la variable d'environnement CLOUD_RUN_TASK_INDEX. Le nombre total de tâches est stocké dans la variable d'environnement CLOUD_RUN_TASK_COUNT. Si vous traitez des données en parallèle, votre code est chargé de déterminer quelle tâche gère quel sous-ensemble de données.
Vous pouvez définir des délais avant expiration sur des tâches et spécifier le nombre de tentatives en cas d'échec de la tâche. Si une tâche dépasse son nombre maximal de tentatives, elle est marquée comme failed (échec). Si des tâches ont échoué, l'exécution du job est marquée comme failed (échec) une fois que Cloud Run a essayé toutes les tâches.
Par défaut, chaque tâche s'exécute pendant 10 minutes au maximum. Vous pouvez modifier la valeur par défaut en changeant le paramètre de délai avant expiration des tâches, jusqu'à 168 heures (7 jours). Pour les tâches utilisant des GPU, le délai avant expiration maximal disponible est d'une heure.
Il n'y a pas de délai explicite pour l'exécution d'un job : lorsque toutes les tâches sont terminées, l'exécution du job est terminé.
Les jobs utilisent l'environnement d'exécution de deuxième génération.
Rôles requis
Pour obtenir les autorisations nécessaires pour créer des jobs Cloud Run, demandez à votre administrateur de vous accorder les rôles IAM suivants :
- Développeur Cloud Run (
roles/run.developer) sur le job Cloud Run - Utilisateur du compte de service (
roles/iam.serviceAccountUser) sur l'identité du service - Lecteur Artifact Registry (
roles/artifactregistry.reader) : sur le dépôt Artifact Registry des images de conteneur du job
Pour obtenir la liste des rôles et des autorisations IAM associés à Cloud Run, consultez les sections Rôles IAM Cloud Run et Autorisations IAM Cloud Run. Si votre job Cloud Run communique avec des APIGoogle Cloud , telles que des bibliothèques clientes Cloud, consultez le guide de configuration de l'identité du service. Pour en savoir plus sur l'attribution de rôles, consultez les pages Autorisations de déploiement et Gérer les accès.
Registres de conteneurs et images acceptés
Vous pouvez utiliser directement des images de conteneurs stockées dans Artifact Registry ou Docker Hub, ou des images publiques provenant de GitHub Container Registry. Google recommande d'utiliser Artifact Registry. Les images publiques de GitHub Container Registry et les images Docker Hub sont mises en cache pendant une heure maximum.
Vous pouvez utiliser des images de conteneurs provenant d'autres registres publics ou privés (tels que JFrog Artifactory ou Nexus), ou des images privées de GitHub Container Registry, en configurant un dépôt Artifact Registry distant.
Envisagez d'utiliser Docker Hub uniquement pour déployer des images de conteneurs populaires, telles que des images officielles Docker ou des images OSS sponsorisées par Docker. Pour accroître la disponibilité, Google recommande de déployer ces images Docker Hub ou GitHub Container Registry à l'aide d'un dépôt Artifact Registry distant.
Cloud Run ne prend pas en charge les calques d'image de conteneur de plus de 9,9 Go lors du déploiement à partir de Docker Hub ou d'un dépôt Artifact Registry distant avec un registre externe.
Créer un job
Vous pouvez créer un job à l'aide de la console Google Cloud , de Google Cloud CLI, de YAML ou de Terraform.
Console
Pour créer un job, procédez comme suit :
Dans la console Google Cloud , accédez à la page Cloud Run :
Sélectionnez Jobs dans le menu de navigation Cloud Run, puis cliquez sur Déployer un conteneur pour afficher le formulaire Créer un job.
- Dans le formulaire, spécifiez l'image de conteneur contenant le code de la tâche ou sélectionnez-la dans la liste des conteneurs précédemment déployés.
Le nom du job est généré automatiquement à partir de l'image du conteneur. Vous pouvez modifier le nom de la tâche si nécessaire. Un nom de tâche ne peut plus être modifié une fois que la tâche a été créée.
Dans le champ Région, sélectionnez la région dans laquelle vous souhaitez créer votre tâche. Le sélecteur de région met en avant les régions ayant l'impact carbone le plus faible.
Spécifiez le nombre de tâches que vous souhaitez exécuter dans le job. Toutes les tâches doivent réussir pour que le job aboutisse. Par défaut, les tâches s'exécutent en parallèle.
Cliquez sur Conteneurs, mise en réseau, sécurité pour définir d'autres propriétés de jobs.
Dans la section Modifier le conteneur, vous pouvez configurer les paramètres suivants dans les onglets appropriés :
Sous Capacité de la tâche :
Sous Délai avant expiration de la tâche, spécifiez la durée maximale en secondes pendant laquelle la tâche peut être exécutée, dans la limite de 168 heures (7 jours). Pour les tâches utilisant des GPU, le délai avant expiration maximal disponible est de 1 heure. Chaque tâche doit être terminée dans ce délai. La valeur par défaut est de 10 minutes.
Sous Nombre de nouvelles tentatives par tâche en échec, spécifiez le nombre de tentatives en cas d'échec de la tâche. La valeur par défaut est de trois nouvelles tentatives.
Sous Parallélisme :
- Dans la plupart des cas, vous pouvez sélectionner Exécuter simultanément autant de tâches que possible.
- Si vous devez définir une limite inférieure en raison de contraintes de scaling sur les ressources auxquelles votre job accède, sélectionnez Limiter le nombre maximal de tâches simultanées et spécifiez le nombre de tâches simultanées dans le champ Limite de parallélisme personnalisée.
Une fois la tâche configurée, cliquez sur Créer pour créer la tâche dans Cloud Run.
Pour exécuter le job, consultez la page Exécuter des jobs ou Exécuter des jobs selon un calendrier.
gcloud
Pour utiliser la ligne de commande, vous devez déjà avoir configuré gcloud CLI.
Pour créer un job, procédez comme suit :
Exécutez la commande suivante :
Vous pouvez également utiliser la commande de déploiement :gcloud run jobs create JOB_NAME --image IMAGE_URL OPTIONS
gcloud run jobs deploy JOB_NAME --image IMAGE_URL OPTIONS
Remplacez les éléments suivants :
JOB_NAME: nom du job que vous souhaitez créer. Si vous omettez ce paramètre, le nom du job vous sera demandé lorsque vous exécuterez la commande.- IMAGE_URL : référence à l'image de conteneur (par exemple,
us-docker.pkg.dev/cloudrun/container/job:latest). Vous pouvez également remplacer
OPTIONSpar l'une des options suivantes :Option Description --tasksAccepte les entiers supérieurs ou égaux à 1. La valeur par défaut est 1. La valeur maximale est 10 000. Chaque tâche reçoit les variables d'environnement CLOUD_RUN_TASK_INDEXavec une valeur comprise entre 0 et le nombre de tâches moins 1, ainsi queCLOUD_RUN_TASK_COUNT, qui correspond au nombre de tâches.--max-retriesNombre de nouvelles tentatives d'exécution d'une tâche ayant échoué. Lorsqu'une tâche dépasse cette limite, l'intégralité de la tâche est marquée comme étant en échec. Par exemple, si vous définissez la valeur sur 1, une tâche ayant échoué est relancée une seule fois, soit un total de deux tentatives. La valeur par défaut est 3. Accepte les entiers compris entre 0 et 10. --task-timeoutAccepte une durée telle que "2s". La valeur par défaut est de 10 minutes. La durée maximale est de 168 heures (7 jours). Pour les tâches utilisant des GPU, le délai avant expiration maximal disponible est d'une heure. --parallelismNombre maximal de tâches pouvant s'exécuter en parallèle. Par défaut, les tâches sont démarrées aussi rapidement que possible en parallèle. Pour connaître la plage de valeurs, consultez la page Parallélisme. --execute-nowSi ce champ est défini immédiatement après la création de la tâche, une exécution de tâche démarre. Équivaut à l'appel de gcloud run jobs createsuivi degcloud run jobs execute.Outre les options ci-dessus, vous spécifiez d'autres éléments de configuration, tels que des variables d'environnement ou des limites de mémoire.
Pour obtenir la liste complète des options disponibles lors de la création d'une tâche, reportez-vous à la documentation de ligne de commande portant sur gcloud run jobs create.
Patientez pendant la création de la tâche. Un message de réussite s'affiche une fois l'opération terminée.
Pour exécuter le job, consultez la page Exécuter des jobs ou Exécuter des jobs selon un calendrier.
YAML
Vous pouvez stocker votre spécification de tâche dans un fichier YAML, puis la déployer à l'aide de gcloud CLI.
Créez un fichier
job.yamlavec le contenu suivant :apiVersion: run.googleapis.com/v1 kind: Job metadata: name: JOB spec: template: spec: template: spec: containers: - image: IMAGE_URL
Remplacez les éléments suivants :
- JOB par le nom de votre job Cloud Run Les noms de tâche doivent comporter un maximum de 49 caractères et être uniques par région et par projet.
- IMAGE_URL : référence à l'image de conteneur (par exemple,
us-docker.pkg.dev/cloudrun/container/job:latest).
Vous pouvez également spécifier d'autres éléments de configuration, tels que des variables d'environnement ou des limites de mémoire.
Déployez la nouvelle tâche à l'aide de la commande suivante :
gcloud run jobs replace job.yaml
La commande
gcloud run jobs replaceutilise par défaut le fichierjob.yamls'il est présent.
Terraform
Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez Commandes Terraform de base.
Ajoutez les éléments suivants à une ressourcegoogle_cloud_run_v2_job dans votre configuration Terraform :Bibliothèques clientes
Pour créer un job à partir du code, procédez comme suit :
API REST
Pour créer un job, envoyez une requête HTTP POST au point de terminaison jobs de l'API Cloud Run Admin.
Exemple, à l'aide de curl :
curl -H "Content-Type: application/json" \ -H "Authorization: Bearer ACCESS_TOKEN" \ -X POST