Configurer des conteneurs

Découvrez comment configurer le port du conteneur, ainsi que la commande entrypoint du conteneur et ses arguments.

Lorsque Cloud Run for Anthos sur Google Cloud démarre un conteneur, il exécute la commande entrypoint par défaut et transmet 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

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

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 envoyées adressées au conteneur :

Console

  1. Accédez à Cloud Run for Anthos sur Google Cloud.

  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. Sous Paramètres avancés, cliquez sur Conteneur.

    image

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

  • Pour les services existants, mettez à jour un paramètre de port en exécutant la commande gcloud kuberun core services update avec les paramètres suivants :

    gcloud kuberun core 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.
  • Pour les nouveaux services, définissez le port en exécutant la commande gcloud kuberun core services create avec le paramètre --port :

    gcloud kuberun core services create SERVICE --image=IMAGE_URL --port PORT
    

    Remplacez :

    • SERVICE par le nom du service ;
    • IMAGE_URL par une référence à l'image de conteneur, par exemple gcr.io/myproject/my-image:latest ;
    • PORT par le port auquel envoyer les requêtes. Notez que le port par défaut est 8080.

YAML

Pour utiliser un fichier YAML afin de modifier la configuration de votre service existant, vous devez obtenir une copie de la configuration actuelle, modifier et enregistrer vos modifications dans un fichier local, puis déployer ces modifications dans votre service.

  1. Affichez en YAML puis copiez la configuration de votre service dans un fichier local, par exemple service.yaml :

    gcloud kuberun core services describe SERVICE --format yaml

    Remplacez SERVICE par le nom de votre service Cloud Run pour Anthos.

  2. Dans votre fichier local, mettez à jour l'attribut containerPort: :

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

    Remplacez

    • IMAGE_URL par une référence à l'image de conteneur, par exemple gcr.io/myproject/my-image:latest ;
    • PORT par le port auquel envoyer les requêtes.
  3. Remplacez la configuration du service en utilisant la commande suivante :

    gcloud beta run services replace service.yaml

Configurer la commande entrypoint du conteneur et ses arguments

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

Lorsque Cloud Run for Anthos sur Google Cloud démarre un conteneur, il exécute la commande entrypoint par défaut de l'image. Pour spécifier ou remplacer la commande entrypoint et les arguments définis dans l'image du conteneur, vous pouvez configurer les paramètres command et args dans la configuration du conteneur Cloud Run for Anthos.

Vous pouvez choisir de configurer des commandes entrypoint, des arguments ou les deux. La commande que vous spécifiez dans Cloud Run for Anthos remplace les commandes entrypoint définies dans l'image du conteneur. Si vous choisissez de ne spécifier que des arguments, ceux-ci sont transmis à la commande entrypoint définie dans l'image du conteneur et exécutés par celle-ci.

Dans Cloud Run for Anthos, vous pouvez configurer des commandes entrypoint et des arguments à l'aide de Cloud Console, de l'outil de ligne de commande gcloud ou d'un fichier YAML lorsque vous déployez un nouveau service, mettez à jour un service existant ou déployez une révision :

Console

  1. Accédez à Cloud Run for Anthos sur Google Cloud.

  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. Sous Paramètres avancés, cliquez sur Conteneur.

    image

  4. Spécifiez la commande entrypoint et les arguments que le conteneur doit exécuter lors du démarrage.

  5. Cliquez sur Créer ou Déployer.

Ligne de commande

Options des paramètres de commande

  • Pour spécifier un argument contenant une virgule (,), vous devez échapper chaque ARG avec un délimiteur différent. Par exemple, si vous utilisez @ :
    --args "^@^arg,with,commas@anotherarg@ARG3..."
    
  • Pour spécifier plusieurs ensembles de paires clé/valeur, vous pouvez spécifier plusieurs paramètres de lisibilité. Exemple :
    [...]
    --args "ARG1" \
    --args "ARG2" \
    --args "ARG3"
    
  • Pour utiliser des signes "égal" (=) dans vos arguments, vous devez spécifier chaque argument au format suivant :
    gcloud kuberun core services ...  \
      --args "--repo-allowlist=github.com/example/example_demo" \
      --args "--gh-webhook-secret=XX"
    

  • Pour les services existants, mettez à jour la commande entrypoint en exécutant la commande gcloud kuberun core services update avec les paramètres suivants :

    gcloud kuberun core services update SERVICE --command COMMAND --args ARG1,ARG2,ARG-N
    

    Remplacez :

    • SERVICE par le nom du service ;
    • COMMAND par la commande que vous souhaitez que le conteneur exécute au démarrage (facultatif) ;
    • ARG1 par un ou plusieurs arguments pour la commande exécutée au démarrage (facultatif). Utilisez une liste en séparant chaque argument par une virgule. Mettre en forme vos arguments
  • Pour les nouveaux services, définissez la commande entrypoint en exécutant la commande gcloud kuberun core services create avec le paramètre --command :

    gcloud kuberun core services create SERVICE --image=IMAGE_URL --command COMMAND --args ARG1,ARG2,ARG-N
    

    Remplacez :

    • SERVICE par le nom du service ;
    • IMAGE_URL par une référence à l'image de conteneur, par exemple gcr.io/myproject/my-image:latest ;
    • COMMAND par la commande que vous souhaitez que le conteneur exécute au démarrage (facultatif) ;
    • ARG1 par un ou plusieurs arguments pour la commande exécutée au démarrage (facultatif). Utilisez une liste en séparant chaque argument par une virgule. Mettre en forme vos arguments

YAML

Pour utiliser un fichier YAML afin de modifier la configuration de votre service existant, vous devez obtenir une copie de la configuration actuelle, modifier et enregistrer vos modifications dans un fichier local, puis déployer ces modifications dans votre service.

  1. Affichez en YAML puis copiez la configuration de votre service dans un fichier local, par exemple service.yaml :

    gcloud kuberun core services describe SERVICE --format yaml

    Remplacez SERVICE par le nom de votre service Cloud Run pour Anthos.

  2. Dans votre fichier local, mettez à jour les attributs command et args :

    apiVersion: serving.knative.dev/v1
    kind: Service
    spec:
      template:
        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 gcr.io/myproject/my-image:latest ;
    • COMMAND par la commande que vous souhaitez que le conteneur exécute au démarrage (facultatif) ;
    • ARG1 par un ou plusieurs arguments pour la commande exécutée au démarrage (facultatif). Utilisez une liste en séparant chaque argument par une virgule.
  3. Remplacez la configuration du service en utilisant la commande suivante :

    gcloud beta run services replace service.yaml