Configurer des conteneurs

Cette page explique comment configurer le port du conteneur, ainsi que la commande entrypoint et ses arguments pour les services Cloud Run, et comment configurer la commande entrypoint et ses arguments pour les tâches 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.

Configurer le port du conteneur (services)

Tout changement de configuration entraîne la création d'une révision. Les révisions ultérieures obtiennent aussi automatiquement le même paramètre de configuration, à moins que vous ne le mettiez explicitement à jour.

Pour les services Cloud Run, Cloud Run injecte la variable d'environnement PORT dans le conteneur. Le conteneur doit écouter sur le port défini par la variable d'environnement PORT plutôt que sur un port spécifique codé en dur. Toutefois, si cela n'est pas possible, vous pouvez configurer le port sur lequel les requêtes sont adressées au conteneur. Notez que les paramètres de port ne s'appliquent pas aux tâches Cloud Run.

Console

  1. Accédez à Cloud Run

  2. Cliquez sur Créer un service si vous configurez un nouveau service sur lequel effectuer un déploiement. Si vous configurez un service existant, cliquez sur celui-ci puis sur Modifier et déployer la nouvelle révision.

  3. Si vous configurez un nouveau service, remplissez la page initiale des paramètres du service selon vos besoins, puis cliquez sur Conteneur, mise en réseau, sécurité pour développer la page de configuration du service.

  4. Cliquez sur l'onglet Conteneur.

    image

    • Spécifiez le port auquel vous souhaitez envoyer les requêtes, s'il ne s'agit pas du port par défaut "8080". Cela définit également la variable d'environnement "PORT".
  5. Cliquez sur Créer ou Déployer.

Ligne de commande

Vous pouvez mettre à jour la configuration du port d'un service à l'aide de la commande suivante :

gcloud run services update SERVICE --port PORT

Remplacez

  • SERVICE par le nom du service ;
  • PORT par le port auquel envoyer les requêtes. Notez que le port par défaut est 8080.

Vous pouvez également configurer des ports lors du déploiement à l'aide de la commande suivante :

gcloud run deploy --image IMAGE_URL --port PORT

Remplacez IMAGE_URL par une référence à l'image de conteneur, par exemple us-docker.pkg.dev/cloudrun/container/hello:latest. Lorsque vous utilisez Artifact Registry, l'URL se présente sous la forme suivante: REGION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.

YAML

Vous pouvez télécharger et afficher les configurations de service existantes à l'aide de la commande gcloud run services describe --format export, qui renvoie les résultats nettoyés au format YAML. Vous pouvez ensuite modifier les champs décrits ci-dessous et importer le fichier YAML modifié à l'aide de la commande gcloud run services replace. Veillez à ne modifier que les champs indiqués.

  1. Pour afficher et télécharger la configuration, exécutez la commande suivante :

    gcloud run services describe SERVICE --format export > service.yaml
  2. Mettez à jour l'attribut containerPort: :

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          name: REVISION
        spec:
          containers:
          - image: IMAGE_URL
            ports:
            - containerPort: PORT
    

    Remplacez

    • SERVICE par le nom de votre service Cloud Run
    • IMAGE_URL par une référence à l'image de conteneur, par exemple us-docker.pkg.dev/cloudrun/container/hello:latest. Lorsque vous utilisez Artifact Registry, l'URL se présente sous la forme suivante: REGION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
    • PORT par le port auquel envoyer les requêtes.
    • REVISION par un nouveau nom de révision ou supprimez-le (le cas échéant). Si vous indiquez un nouveau nom de révision, il doit répondre aux critères suivants :
      • Commencer par SERVICE-
      • Ne contenir que des lettres minuscules, des chiffres et -
      • Ne pas se terminer par -
      • Ne pas dépasser 63 caractères
  3. Remplacez la configuration du service en utilisant la commande suivante :

    gcloud run services replace service.yaml

Configurer la commande entrypoint du conteneur et ses arguments

Vous pouvez configurer des commandes entrypoint et des arguments pour les tâches et services Cloud Run.

Pour les services Cloud Run

Tout changement de configuration entraîne la création d'une révision. Les révisions ultérieures obtiennent aussi automatiquement le même paramètre de configuration, à moins que vous ne le mettiez explicitement à jour.

La commande du conteneur et les arguments spécifiés remplacent l'image par défaut ENTRYPOINT et CMD.

Vous pouvez définir la commande entrypoint et ses arguments à l'aide de Google Cloud Console, de la ligne de commande gcloud ou d'un fichier .yaml lorsque vous créez un service ou déployez une nouvelle révision :

Console

  1. Accédez à Cloud Run

  2. Cliquez sur Créer un service si vous configurez un nouveau service sur lequel effectuer un déploiement. Si vous configurez un service existant, cliquez sur celui-ci puis sur Modifier et déployer la nouvelle révision.

  3. Si vous configurez un nouveau service, remplissez la page initiale des paramètres du service selon vos besoins, puis cliquez sur Conteneur, mise en réseau, sécurité pour développer la page de configuration du service.

  4. Cliquez sur l'onglet Conteneur.

    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 Déployer.

Ligne de commande

Pour mettre à jour la commande de démarrage et les arguments d'un service existant, procédez comme suit :

gcloud run services update SERVICE --command COMMAND --args ARG1,ARG-N

Remplacer

  • 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. Si vous avez plusieurs arguments, indiquez-les sous forme de liste en les séparant par une virgule.

Pour spécifier le point d'entrée et les arguments lors du déploiement d'un service nouveau ou existant, procédez comme suit :

gcloud run deploy --image IMAGE_URL --command COMMAND --args ARG1,ARG-N

Remplacez IMAGE_URL par une référence à l'image de conteneur, par exemple us-docker.pkg.dev/cloudrun/container/hello:latest. Lorsque vous utilisez Artifact Registry, l'URL se présente sous la forme suivante: REGION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.

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 deploy --image IMAGE_URL --command "" --args ""

YAML

Vous pouvez télécharger et afficher les configurations de service existantes à l'aide de la commande gcloud run services describe --format export, qui renvoie les résultats nettoyés au format YAML. Vous pouvez ensuite modifier les champs décrits ci-dessous et importer le fichier YAML modifié à l'aide de la commande gcloud run services replace. Veillez à ne modifier que les champs indiqués.

  1. Pour afficher et télécharger la configuration, exécutez la commande suivante :

    gcloud run services describe SERVICE --format export > service.yaml
  2. Modifiez les attributs command et args :

    spec:
      containers:
      - image: IMAGE_URL
        command:
        - COMMAND
        args:
        - "ARG1"
        - "ARG-N"
    

    Remplacez

    • IMAGE_URL par une référence à l'image de conteneur, par exemple us-docker.pkg.dev/cloudrun/container/hello:latest. Lorsque vous utilisez Artifact Registry, l'URL se présente sous la forme suivante: REGION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
    • 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. Si vous utilisez plusieurs arguments, spécifiez chacun d'eux sur une ligne distincte (par exemple, ARG-N).
  3. Remplacez la configuration du service en utilisant la commande suivante :

    gcloud run services replace service.yaml

Terraform

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

Ajoutez le code suivant à une ressource google_cloud_run_service de votre configuration Terraform. Remplacez /server par la commande utilisée pour démarrer votre conteneur et ajoutez les arguments nécessaires au tableau args.

template {
  spec {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"

      # Container "entry-point" command
      # https://cloud.google.com/run/docs/configuring/containers#configure-entrypoint
      command = ["/server"]

      # Container "entry-point" args
      # https://cloud.google.com/run/docs/configuring/containers#configure-entrypoint
      args = []
    }
  }

Pour les jobs Cloud Run

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

Console

  1. Accédez à Cloud Run

  2. Si vous configurez une nouvelle tâche, cliquez sur l'onglet Tâches et remplissez la page des paramètres initiaux de la tâche selon vos besoins. Si vous configurez une tâche existante, cliquez sur celle-ci, puis sur Modifier.

  3. Cliquez sur Conteneur, variables et secrets, connexions, sécurité pour développer la page des propriétés de la tâche.

  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.

Command line

  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 tâche.
    • 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. Si vous avez plusieurs arguments, indiquez-les sous forme de liste en les séparant par une virgule.
    • Remplacez IMAGE_URL par une 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

Téléchargez et affichez la configuration de tâche existante à l'aide de la commande gcloud run jobs describe --format export, qui renvoie les résultats nettoyés au format YAML. Modifiez ensuite les champs décrits ci-dessous et importez le fichier YAML modifié à l'aide de la commande gcloud run jobs replace. Veillez à ne modifier que les champs indiqués.

  1. Pour afficher et télécharger la configuration, exécutez la commande suivante :

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

    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 "" 

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.

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

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 les conteneurs qui ont des dépendances et répertoriez les conteneurs dont ils dépendent. Ces conteneurs sont démarrés en premier. Les conteneurs sans dépendance sont toujours démarrés en premier et simultanément.

Notez que si vous utilisez des vérifications d'état, Cloud Run inspecte l'état d'un conteneur dépendant, en vous assurant qu'il réussit avant de démarrer le conteneur suivant. Si vous n'utilisez pas les vérifications d'état, les conteneurs sont démarrés dans l'ordre spécifié, même si les conteneurs dont ils dépendent échouent.

En version preview, vous devez utiliser la méthode YAML pour configurer l'ordre de démarrage du conteneur. Pour spécifier l'ordre de démarrage, procédez comme suit :

YAML

Vous pouvez télécharger et afficher les configurations de service existantes à l'aide de la commande gcloud run services describe --format export, qui renvoie les résultats nettoyés au format YAML. Vous pouvez ensuite modifier les champs décrits ci-dessous et importer le fichier YAML modifié à l'aide de la commande gcloud run services replace. Veillez à ne modifier que les champs indiqués.

  1. Pour afficher et télécharger la configuration, exécutez la commande suivante :

    gcloud run services describe SERVICE --format export > service.yaml
  2. Mettez à jour l'attribut container-dependencies :

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      annotations:
        run.googleapis.com/launch-stage: BETA
      name: SERVICE
    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. Remplacez la configuration du service en utilisant la commande suivante :

    gcloud run services replace service.yaml

Afficher les paramètres du conteneur

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

Console

  1. Accédez à Cloud Run

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

  3. Cliquez sur l'onglet Révisions.

  4. Dans le panneau de détails sur la droite, le paramètre du conteneur est répertorié sous l'onglet Général.

Command line

  1. Exécutez la commande suivante :

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

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

Console

  1. Accéder aux tâches Cloud Run

  2. Cliquez sur la tâche qui vous intéresse pour ouvrir la page Informations sur la tâche.

  3. Cliquez sur l'onglet Configuration.

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

Command line

  1. Exécutez la commande suivante :

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