Configurer des conteneurs

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

Lorsque Knative serving 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

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 à Knative serving dans la console Google Cloud :

    Accéder à Knative serving

  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.

  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 Next (Suivant) pour passer à la section suivante.

  6. Dans la section Configurer la manière dont ce service est déclenché, sélectionnez la connectivité que vous souhaitez utiliser pour appeler le service.

  7. Cliquez sur Créer pour déployer l'image sur Knative serving et attendez la fin du déploiement.

Ligne de commande

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

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

    gcloud run deploy 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/cloudrun/hello.
    • PORT par le port auquel envoyer les requêtes. Le port par défaut est 8080.

YAML

Vous pouvez télécharger la configuration d'un service existant dans un fichier YAML avec la commande gcloud run services describe à l'aide de l'option --format=export. Vous pouvez ensuite modifier ce fichier YAML et déployer ces modifications à l'aide de la commande gcloud run services replace. Veillez à ne modifier que les attributs spécifiés.

  1. Téléchargez la configuration de votre service dans un fichier nommé service.yaml sur l'espace de travail local :

    gcloud run services describe SERVICE --format export > service.yaml

    Remplacez SERVICE par le nom de votre service Knative serving.

  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
    

    Remplacer

    • IMAGE_URL par une référence à l'image de conteneur, par exemple gcr.io/cloudrun/hello.
    • PORT par le port auquel envoyer les requêtes.
  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

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

Vous pouvez choisir de configurer des commandes entrypoint, des arguments ou les deux. La commande que vous spécifiez dans Knative serving 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 Knative serving, vous pouvez configurer des commandes entrypoint et des arguments à l'aide de la console Google Cloud, de Google Cloud CLI 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 à Knative serving dans la console Google Cloud :

    Accéder à Knative serving

  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.

  4. Spécifiez la commande "entrypoint" et ses arguments que le conteneur doit exécuter au démarrage.

  5. Cliquez sur Suivant pour passer à la section suivante.

  6. Dans la section Configurer la manière dont ce service est déclenché, sélectionnez la connectivité que vous souhaitez utiliser pour appeler le service.

  7. Cliquez sur Créer pour déployer l'image sur Knative serving et attendez la fin du déploiement.

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 pour plus 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 run 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 run services update avec les paramètres suivants :

    gcloud run 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 run deploy avec le paramètre --command :

    gcloud run deploy 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/cloudrun/hello ;
    • 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

Vous pouvez télécharger la configuration d'un service existant dans un fichier YAML avec la commande gcloud run services describe à l'aide de l'option --format=export. Vous pouvez ensuite modifier ce fichier YAML et déployer ces modifications à l'aide de la commande gcloud run services replace. Veillez à ne modifier que les attributs spécifiés.

  1. Téléchargez la configuration de votre service dans un fichier nommé service.yaml sur l'espace de travail local :

    gcloud run services describe SERVICE --format export > service.yaml

    Remplacez SERVICE par le nom de votre service de diffusion Knative.

  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/cloudrun/hello ;
    • 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 run services replace service.yaml