Créer des jobs

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 :

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 :

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 :

  1. Dans la console Google Cloud , accédez à la page Cloud Run :

    Accédez à Cloud Run

  2. 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.

    1. 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.
    2. 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.

    3. 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.

    4. 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.

  3. Cliquez sur Conteneurs, mise en réseau, sécurité pour définir d'autres propriétés de jobs.

  4. Dans la section Modifier le conteneur, vous pouvez configurer les paramètres suivants dans les onglets appropriés :

  5. Sous Capacité de la tâche :

    1. 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.

    2. 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.

  6. Sous Parallélisme :

    1. Dans la plupart des cas, vous pouvez sélectionner Exécuter simultanément autant de tâches que possible.
    2. 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.
  7. Une fois la tâche configurée, cliquez sur Créer pour créer la tâche dans Cloud Run.

  8. 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 :

  1. Exécutez la commande suivante :

    gcloud run jobs create JOB_NAME --image IMAGE_URL OPTIONS
    Vous pouvez également utiliser la commande de déploiement :
    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 OPTIONS par l'une des options suivantes :

      Option Description
      --tasks Accepte 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_INDEX avec une valeur comprise entre 0 et le nombre de tâches moins 1, ainsi que CLOUD_RUN_TASK_COUNT, qui correspond au nombre de tâches.
      --max-retries Nombre 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-timeout Accepte 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.
      --parallelism Nombre 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-now Si 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 create suivi de gcloud 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.

  2. Patientez pendant la création de la tâche. Un message de réussite s'affiche une fois l'opération terminée.

  3. 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.

  1. Créez un fichier job.yaml avec 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.

  2. Déployez la nouvelle tâche à l'aide de la commande suivante :

    gcloud run jobs replace job.yaml

    La commande gcloud run jobs replace utilise par défaut le fichier job.yaml s'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 ressource google_cloud_run_v2_job dans votre configuration Terraform :
resource "google_cloud_run_v2_job" "default" {
  name     = "cloud-run-job"
  location = "us-central1"

  deletion_protection = false # set to "true" in production

  template {
    template {
      containers {
        image = "us-docker.pkg.dev/cloudrun/container/job:latest"
      }
    }
  }
}

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