Configurer des conteneurs pour les instances

Cette page explique comment configurer la commande entrypoint et les arguments associés pour une instance 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 instance.

Rôles requis

Pour obtenir les autorisations nécessaires pour configurer et déployer des instances 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 instance 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.

Configurer un point d'entrée et des arguments

Pour remplacer les paramètres d'image ENTRYPOINT et CMD par défaut, vous pouvez définir la commande entrypoint et ses arguments pour une instance Cloud Run à l'aide de Google Cloud CLI ou de YAML :

gcloud

Pour mettre à jour la commande de démarrage et les arguments d'une instance existante :

gcloud beta run instances update INSTANCE --command COMMAND --args ARG1,ARG-N

Remplacez les éléments suivants :

  • INSTANCE : nom de l'instance.
  • COMMAND : commande avec laquelle le conteneur démarre, si vous n'utilisez pas la commande par défaut.
  • ARG1 : 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'une instance nouvelle ou existante :

gcloud beta run instances deploy INSTANCE --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.

Si vous souhaitez restaurer les valeurs par défaut du conteneur pour les commandes entrypoint et les arguments, fournissez des chaînes vides comme suit :

gcloud beta run instances update INSTANCE --command "" --args ""

YAML

  1. Si vous créez une instance, ignorez cette étape. Si vous mettez à jour une instance existante, téléchargez sa configuration YAML :

    gcloud beta run instances describe INSTANCE --format export > instance.yaml
  2. L'exemple suivant contient la configuration YAML :

    apiVersion: run.googleapis.com/v1
    kind: Instance
    metadata:
      name: INSTANCE
      annotations:
        run.googleapis.com/launch-stage: BETA
    spec:
      containers:
      - name: CONTAINER_NAME
        image: IMAGE_URL
        command:
        - COMMAND
        args:
        - ARG1
        - ARG-N

    Remplacez les éléments suivants :

    • INSTANCE : nom de votre instance Cloud Run.
    • CONTAINER_NAME : nom du conteneur.
    • IMAGE_URL : référence à l'image de conteneur, par exemple us-docker.pkg.dev/cloudrun/container/hello:latest.
    • COMMAND : commande avec laquelle le conteneur doit démarrer si vous n'utilisez pas la commande par défaut.
    • ARG1 : 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. Créez ou mettez à jour l'instance à l'aide de la commande suivante :

    gcloud beta run instances replace instance.yaml

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, utilisez la fonctionnalité de dépendances de conteneurs. 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.

Pour utiliser cette fonctionnalité, vous devez utiliser des vérifications dvérification de l'état démarrage. La vérification du démarrage permet à Cloud Run d'inspecter l'état d'un conteneur dépendant pour s'assurer qu'il est opérationnel 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.

Utilisez la Google Cloud CLI ou YAML pour spécifier l'ordre de démarrage :

gcloud

Avant de spécifier un ordre de démarrage à l'aide de la Google Cloud CLI, configurez une vérification d'état de démarrage pour tout conteneur side-car dont dépend un autre conteneur. Le conteneur d'entrée (le conteneur avec un port exposé) dispose d'une vérification de l'état de démarrage TCP par défaut.

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

    Activer Cloud Shell

    En bas de la fenêtre de la console Google Cloud , une session Cloud Shell démarre et affiche une invite de ligne de commande. Cloud Shell est un environnement de shell dans lequel la Google Cloud CLI est déjà installée, 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 sur une instance avec un ordre de démarrage spécifique, exécutez la commande suivante :

gcloud beta run instances deploy INSTANCE \
     --container CONTAINER_1_NAME --image='IMAGE_URL' --port='CONTAINER_PORT' \
     --container CONTAINER_2_NAME --image='SIDECAR_IMAGE' --depends-on=CONTAINER_1_NAME \
     --startup-probe=tcpSocket.port=SIDECAR_PORT \
     --container CONTAINER_3_NAME --image='SIDECAR_IMAGE' --depends-on=CONTAINER_1_NAME,CONTAINER_2_NAME

Remplacez les éléments suivants :

  • INSTANCE : nom de l'instance.
  • IMAGE_URL : référence à l'image de conteneur, par exemple us-docker.pkg.dev/cloudrun/container/hello:latest.
  • CONTAINER_PORT : port sur lequel le conteneur d'entrée écoute les requêtes entrantes. Pour une instance comportant plusieurs conteneurs, vous devez configurer explicitement le port du conteneur pour le conteneur d'entrée.
  • SIDECAR_IMAGE : référence à l'image de conteneur side-car.
  • SIDECAR_PORT : port du conteneur side-car vérifié par sa vérification de démarrage TCP. Chaque conteneur side-car dont dépend un autre conteneur doit configurer une vérification de démarrage.

    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 une instance, ignorez cette étape. Si vous mettez à jour une instance existante, téléchargez sa configuration YAML :

    gcloud beta run instances describe INSTANCE --format export > instance.yaml
  2. L'exemple suivant contient la configuration YAML :

    apiVersion: run.googleapis.com/v1
    kind: Instance
    metadata:
      name: INSTANCE
      annotations:
        run.googleapis.com/container-dependencies: '{"CONTAINER1":["CONTAINER2"], "CONTAINER3":["CONTAINER1","CONTAINER2"]}'

    Remplacez les éléments suivants :

    • INSTANCE : nom de votre instance Cloud Run.
    • CONTAINER1 : nom du premier conteneur qui dépend d'un ou de plusieurs conteneurs. 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 : nom du conteneur qui doit démarrer avant CONTAINER1.
    • CONTAINER3 : 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 l'instance à l'aide de la commande suivante :

    gcloud beta run instances replace instance.yaml