Configurer des conteneurs pour les jobs

Cette page explique comment configurer la commande entrypoint et les arguments associés pour un job Cloud Run.

Lorsque Cloud Run démarre un conteneur, il exécute la commande entrypoint par défaut et les arguments de commande par défaut de l'image. Si vous souhaitez ignorer la commande entrypoint et les arguments de commande par défaut de l'image, vous pouvez utiliser les champs command et args dans la configuration du conteneur. Le champ command spécifie la commande réelle exécutée par le conteneur. Le champ args spécifie les arguments transmis à cette commande.

Notez que vous pouvez avoir un maximum de 1 000 arguments par conteneur pour chaque job.

Cette page explique comment configurer la commande, les arguments et l'ordre de démarrage des conteneurs dans vos jobs Cloud Run. Vous pouvez configurer ces paramètres dans la Google Cloud console, Google Cloud CLI ou YAML.

Rôles requis

Pour obtenir les autorisations nécessaires pour configurer 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 Google Cloud des API, 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.

Configurer un point d'entrée et des arguments

Pour configurer la commande entrypoint et les arguments des tâches, procédez comme suit :

Console

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

    Accédez à Cloud Run

  2. Cliquez sur Déployer un conteneur pour remplir la page des paramètres initiaux du job. Si vous configurez un job existant, cliquez sur celui-ci, puis sur Afficher et modifier la configuration du job.

  3. Cliquez sur Conteneur(s), volumes, connexions, sécurité pour développer la page des propriétés du job.

  4. Cliquez sur l'onglet Général.

    image

    • Spécifiez la commande que le conteneur doit exécuter, s'il ne s'agit pas de la commande définie dans votre conteneur, et spécifiez éventuellement les arguments de la commande entrypoint.
  5. Cliquez sur Créer ou Mettre à jour.

gcloud

  1. Pour définir la commande de démarrage et les arguments d'une nouvelle tâche :

    gcloud run jobs create JOB_NAME --image IMAGE_URL --command COMMAND --args ARG1,ARG-N

    Remplacer

    • JOB_NAME par le nom de votre job.
    • COMMAND par la commande avec laquelle le conteneur doit démarrer avec si vous n'utilisez pas la commande par défaut.
    • ARG1 par l'argument à envoyer à la commande du conteneur. Pour plusieurs arguments, utilisez une liste séparée par des virgules, par exemple --args="arg1", "arg2", "arg3". Si vos arguments contiennent des virgules ou des caractères spéciaux, consultez la section Utiliser des signes "égal" ou des virgules dans les arguments.
    • IMAGE_URL : référence à l' image de conteneur, par exemple us-docker.pkg.dev/cloudrun/container/job:latest.

Pour mettre à jour les commandes et les arguments d'une tâche existante, procédez comme suit :

gcloud run jobs update JOB_NAME --command COMMAND --args ARG1,ARG-N 

YAML

  1. Si vous créez un job, ignorez cette étape. Si vous mettez à jour un job existant, téléchargez sa configuration YAML :

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. Modifiez les attributs args: et command :

    apiVersion: run.googleapis.com/v1
    kind: Job
    metadata:
      name: JOB_NAME
    spec:
      template:
        spec:
          template:
            spec:
              containers:
              - args:
                - 'ARG1'
                - 'ARG-N'
                command:
                - COMMAND
                image: IMAGE

    Remplacer

    • COMMAND par la commande avec laquelle le conteneur doit démarrer avec si vous n'utilisez pas la commande par défaut.
    • ARG1 par l'argument à envoyer à la commande du conteneur. Vous pouvez éventuellement spécifier des arguments supplémentaires sur une ligne distincte. Si vos arguments contiennent des virgules ou des caractères spéciaux, consultez la section Utiliser des signes "égal" ou des virgules dans les arguments.

    Vous pouvez également spécifier d'autres éléments de configuration, tels que des variables d'environnement ou des limites de mémoire.

  3. Mettez à jour la configuration de tâche existante :

    gcloud run jobs replace job.yaml

Pour effacer les commandes entrypoint et les arguments que vous avez définis (restaurez sur les valeurs par défaut du conteneur), fournissez des chaînes vides comme suit :

gcloud run jobs update JOB_NAME --command "" --args "" 

Terraform

Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez la page Commandes Terraform de base.

Ajoutez les éléments suivants à une google_cloud_run_v2_job ressource dans votre configuration Terraform :
resource "google_cloud_run_v2_job" "default" {
 name     = "JOB_NAME"
 location = "REGION"

 template {
   template {
     containers {
       image = "us-docker.pkg.dev/cloudrun/container/job"
       command = ["COMMAND"]
       args = ["ARG1", "ARG-N"]
     }
   }
 }
}

Remplacez :

  • JOB_NAME par le nom de votre job Cloud Run.
  • REGION par la Google Cloud région. Exemple : europe-west1.
  • COMMAND par la commande avec laquelle le conteneur doit démarrer si vous n'utilisez pas la commande par défaut.
  • ARG1 par l'argument à envoyer à la commande du conteneur. Vous pouvez éventuellement spécifier des arguments supplémentaires. Si vos arguments contiennent des virgules ou des caractères spéciaux, consultez la section Utiliser des signes "égal" ou des virgules dans les arguments.

Utiliser des signes "égal" ou des virgules dans les arguments

Si vous utilisez des signes "égal" dans vos arguments, indiquez-les au format suivant :

gcloud run deploy  \
  --args="--repo-allowlist=github.com/example/example_demo"

Si vos arguments utilisent des virgules, reportez-vous à la section Configurer des variables d'environnement pour savoir comment échapper ces caractères.

Afficher les paramètres du conteneur

Pour afficher les paramètres actuels du conteneur de votre tâche Cloud Run, procédez comme suit :

Console

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

    Accéder aux jobs Cloud Run

  2. Cliquez sur le job qui vous intéresse pour ouvrir la page Informations sur le job.

  3. Cliquez sur Afficher et modifier la configuration du job.

  4. Localisez le paramètre de conteneur dans les détails de la configuration.

gcloud

  1. Exécutez la commande suivante :

    gcloud run jobs describe JOB_NAME
  2. Recherchez le paramètre de conteneur dans la configuration renvoyée.

Configurer l'ordre de démarrage des conteneurs pour les déploiements side-car

Pour spécifier l'ordre de démarrage des conteneurs dans un déploiement side-car, vous devez utiliser la fonctionnalité de dépendances de conteneurs. Vous spécifiez tous les conteneurs qui ont des dépendances et listez les conteneurs dont ils dépendent. Les conteneurs sans dépendance sont toujours démarrés en premier et simultanément.

Vous pouvez utiliser la Google Cloud console, Google Cloud CLI ou YAML pour spécifier l' ordre de démarrage :

Console

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

    Accédez à Cloud Run

    • Pour un job existant, cliquez sur le job dans la liste et sélectionnez Afficher et modifier la configuration du job pour afficher le formulaire Modifier le job.
    • Pour un nouveau job, cliquez sur Déployer un conteneur pour afficher le formulaire Créer un job.
  2. Pour un nouveau job, spécifiez le nom du job, l'URL du conteneur du job, la région et le nombre de tâches. Dans l'onglet Conteneur(s), volumes, mise en réseau, sécurité, procédez comme suit :

    1. Configurez le conteneur de job principal.
    2. Pour ajouter chaque conteneur side-car que vous déployez, cliquez sur Ajouter un conteneur.
    3. Si un conteneur dépend d'autres conteneurs, utilisez le menu Ordre de démarrage du conteneur pour sélectionner les conteneurs que Cloud Run doit démarrer avant le conteneur actuel.
  3. Pour un job existant, procédez comme suit pour chaque conteneur :

    1. Examinez les conteneurs listés dans le menu Ordre de démarrage du conteneur.
    2. Si un conteneur dépend d'autres conteneurs, utilisez le menu Ordre de démarrage du conteneur pour sélectionner ces conteneurs.
  4. Terminez toutes les autres configurations requises, puis cliquez sur Créer pour un nouveau job ou sur Mettre à jour pour un job existant. Patientez jusqu'à la fin du déploiement.

gcloud

  1. Dans la Google Cloud console, activez Cloud Shell.

    Activer Cloud Shell

    En bas de la Google Cloud console, une session Cloud Shell démarre et affiche une invite de ligne de commande. Cloud Shell est un environnement shell dans lequel Google Cloud CLI est déjà installé, et dans lequel des valeurs sont déjà définies pour votre projet actuel. L'initialisation de la session peut prendre quelques secondes.

  2. Pour déployer plusieurs conteneurs dans un job avec un ordre de démarrage spécifié, exécutez la commande :

    gcloud beta run create JOB \
       --container CONTAINER_1_NAME --image='JOB_IMAGE' \
       --container CONTAINER_2_NAME --image='SIDECAR_IMAGE' --depends-on=CONTAINER_1_NAME \
       --container CONTAINER_3_NAME --image='SIDECAR_IMAGE' --depends-on=CONTAINER_1_NAMECONTAINER_2_NAME

    Remplacez :

    • JOB par le nom du job dans lequel vous effectuez le déploiement. Vous pouvez omettre ce paramètre, mais vous serez invité à saisir le nom du job si vous l'omettez.
    • CONTAINER_1_NAME par le nom du conteneur de job principal.
    • JOB_IMAGE par une référence à l'image de conteneur de job principal, par exemple us-docker.pkg.dev/cloudrun/container/job:latest.
    • CONTAINER_2_NAME par le nom du conteneur side-car, par exemple sidecar.
    • SIDECAR_IMAGE par une référence à l'image de conteneur side-car.

    Si vous souhaitez configurer chaque conteneur dans la commande de déploiement, indiquez la configuration de chaque conteneur après les paramètres container.

YAML

  1. Si vous créez un job, ignorez cette étape. Si vous mettez à jour un job existant, téléchargez sa configuration YAML :

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. Mettez à jour l'attribut container-dependencies :

    apiVersion: run.googleapis.com/v1
    kind: Job
    metadata:
      annotations:
        run.googleapis.com/launch-stage: BETA
      name: JOB
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/container-dependencies: '{"CONTAINER1":["CONTAINER2"], "CONTAINER3":["CONTAINER1","CONTAINER2"]}'
    

    Remplacer

    • CONTAINER1 par le nom du premier conteneur qui dépend d'un ou de plusieurs conteneurs. Notez que vous pouvez définir le nom du conteneur dans le fichier YAML : Cloud Run génère automatiquement un nom s'il n'est pas spécifié.
    • CONTAINER2 par le nom du conteneur qui doit démarrer avant CONTAINER1.
    • CONTAINER3 par le nom du second conteneur qui dépend d'un ou de plusieurs conteneurs.

    Dans l'exemple présenté dans l'extrait de code YAML, CONTAINER2 démarre en premier, CONTAINER1 en deuxième et CONTAINER3 en dernier.

  3. Créez ou mettez à jour le job à l'aide de la commande suivante :

    gcloud run jobs replace job.yaml