7.5. Commandes CLI pour les fonctions Knative


7.5.1. kn fonctions commandes

7.5.1.1. Création de fonctions

Avant de pouvoir construire et déployer une fonction, vous devez la créer à l'aide de la CLI Knative (kn). Vous pouvez spécifier le chemin d'accès, la durée d'exécution, le modèle et le registre d'images en tant que drapeaux sur la ligne de commande, ou utiliser le drapeau -c pour lancer l'expérience interactive dans le terminal.

Conditions préalables

  • L'opérateur OpenShift Serverless et Knative Serving sont installés sur le cluster.
  • Vous avez installé le CLI Knative (kn).

Procédure

  • Créer un projet de fonction :

    $ kn func create -r <repository> -l <runtime> -t <template> <path>
    Copy to Clipboard Toggle word wrap
    • Les valeurs d'exécution acceptées sont quarkus, node, typescript, go, python, springboot et rust.
    • Les valeurs acceptées sont http et cloudevents.

      Example command

      $ kn func create -l typescript -t cloudevents examplefunc
      Copy to Clipboard Toggle word wrap

      Exemple de sortie

      Created typescript function in /home/user/demo/examplefunc
      Copy to Clipboard Toggle word wrap

    • Vous pouvez également spécifier un référentiel qui contient un modèle personnalisé.

      Example command

      $ kn func create -r https://github.com/boson-project/templates/ -l node -t hello-world examplefunc
      Copy to Clipboard Toggle word wrap

      Exemple de sortie

      Created node function in /home/user/demo/examplefunc
      Copy to Clipboard Toggle word wrap

7.5.1.2. Exécuter une fonction localement

Vous pouvez utiliser la commande kn func run pour exécuter une fonction localement dans le répertoire actuel ou dans le répertoire spécifié par l'indicateur --path. Si la fonction que vous exécutez n'a jamais été construite auparavant, ou si les fichiers du projet ont été modifiés depuis la dernière fois qu'elle a été construite, la commande kn func run construit la fonction avant de l'exécuter par défaut.

Exemple de commande pour exécuter une fonction dans le répertoire courant

$ kn func run
Copy to Clipboard Toggle word wrap

Exemple de commande pour exécuter une fonction dans un répertoire spécifié comme chemin d'accès

$ kn func run --path=<directory_path>
Copy to Clipboard Toggle word wrap

Vous pouvez également forcer la reconstruction d'une image existante avant d'exécuter la fonction, même si les fichiers du projet n'ont pas été modifiés, en utilisant l'option --build:

Exemple de commande d'exécution utilisant le drapeau de construction

$ kn func run --build
Copy to Clipboard Toggle word wrap

Si l'indicateur build est défini comme faux, la construction de l'image est désactivée et la fonction est exécutée à l'aide de l'image précédemment construite :

Exemple de commande d'exécution utilisant le drapeau de construction

$ kn func run --build=false
Copy to Clipboard Toggle word wrap

Vous pouvez utiliser la commande help pour en savoir plus sur les options de la commande kn func run:

Commande d'aide à la construction

$ kn func help run
Copy to Clipboard Toggle word wrap

7.5.1.3. Fonctions du bâtiment

Avant de pouvoir exécuter une fonction, vous devez construire le projet de la fonction. Si vous utilisez la commande kn func run, la fonction est construite automatiquement. Cependant, vous pouvez utiliser la commande kn func build pour construire une fonction sans l'exécuter, ce qui peut être utile pour les utilisateurs avancés ou les scénarios de débogage.

La commande kn func build crée une image de conteneur OCI qui peut être exécutée localement sur votre ordinateur ou sur un cluster OpenShift Container Platform. Cette commande utilise le nom du projet de la fonction et le nom du registre d'images pour construire un nom d'image entièrement qualifié pour votre fonction.

7.5.1.3.1. Types de conteneurs d'images

Par défaut, kn func build crée une image de conteneur en utilisant la technologie Red Hat Source-to-Image (S2I).

Exemple de commande de compilation utilisant Red Hat Source-to-Image (S2I)

$ kn func build
Copy to Clipboard Toggle word wrap

7.5.1.3.2. Types de registres d'images

OpenShift Container Registry est utilisé par défaut comme registre d'images pour le stockage des images de fonctions.

Exemple de commande de construction utilisant OpenShift Container Registry

$ kn func build
Copy to Clipboard Toggle word wrap

Exemple de sortie

Building function image
Function image has been built, image: registry.redhat.io/example/example-function:latest
Copy to Clipboard Toggle word wrap

Vous pouvez remplacer l'utilisation d'OpenShift Container Registry comme registre d'images par défaut en utilisant le drapeau --registry:

Exemple de commande de construction surchargeant OpenShift Container Registry pour utiliser quay.io

$ kn func build --registry quay.io/username
Copy to Clipboard Toggle word wrap

Exemple de sortie

Building function image
Function image has been built, image: quay.io/username/example-function:latest
Copy to Clipboard Toggle word wrap

7.5.1.3.3. Pousser le drapeau

Vous pouvez ajouter l'option --push à une commande kn func build pour pousser automatiquement l'image de la fonction une fois qu'elle a été construite avec succès :

Exemple de commande de construction utilisant OpenShift Container Registry

$ kn func build --push
Copy to Clipboard Toggle word wrap

7.5.1.3.4. Commande d'aide

Vous pouvez utiliser la commande help pour en savoir plus sur les options de la commande kn func build:

Commande d'aide à la construction

$ kn func help build
Copy to Clipboard Toggle word wrap

7.5.1.4. Déployer des fonctions

Vous pouvez déployer une fonction sur votre cluster en tant que service Knative à l'aide de la commande kn func deploy. Si la fonction ciblée est déjà déployée, elle est mise à jour avec une nouvelle image de conteneur qui est poussée vers un registre d'images de conteneur, et le service Knative est mis à jour.

Conditions préalables

  • L'opérateur OpenShift Serverless et Knative Serving sont installés sur le cluster.
  • Vous avez installé le CLI Knative (kn).
  • Vous avez créé un projet ou avez accès à un projet avec les rôles et autorisations appropriés pour créer des applications et d'autres charges de travail dans OpenShift Container Platform.
  • Vous devez avoir déjà créé et initialisé la fonction que vous souhaitez déployer.

Procédure

  • Déployer une fonction :

    $ kn func deploy [-n <namespace> -p <path> -i <image>]
    Copy to Clipboard Toggle word wrap

    Exemple de sortie

    Function deployed at: http://func.example.com
    Copy to Clipboard Toggle word wrap

    • Si aucune adresse namespace n'est spécifiée, la fonction est déployée dans l'espace de noms actuel.
    • La fonction est déployée à partir du répertoire actuel, à moins qu'une adresse path ne soit spécifiée.
    • Le nom du service Knative est dérivé du nom du projet et ne peut pas être modifié à l'aide de cette commande.

7.5.1.5. Liste des fonctions existantes

Vous pouvez dresser la liste des fonctions existantes en utilisant kn func list. Si vous souhaitez lister les fonctions qui ont été déployées en tant que services Knative, vous pouvez également utiliser kn service list.

Procédure

  • Dresser la liste des fonctions existantes :

    $ kn func list [-n <namespace> -p <path>]
    Copy to Clipboard Toggle word wrap

    Exemple de sortie

    NAME           NAMESPACE  RUNTIME  URL                                                                                      READY
    example-function  default    node     http://example-function.default.apps.ci-ln-g9f36hb-d5d6b.origin-ci-int-aws.dev.rhcloud.com  True
    Copy to Clipboard Toggle word wrap

  • Liste des fonctions déployées en tant que services Knative :

    $ kn service list -n <namespace>
    Copy to Clipboard Toggle word wrap

    Exemple de sortie

    NAME            URL                                                                                       LATEST                AGE   CONDITIONS   READY   REASON
    example-function   http://example-function.default.apps.ci-ln-g9f36hb-d5d6b.origin-ci-int-aws.dev.rhcloud.com   example-function-gzl4c   16m   3 OK / 3     True
    Copy to Clipboard Toggle word wrap

7.5.1.6. Description d'une fonction

La commande kn func info imprime des informations sur une fonction déployée, telles que le nom de la fonction, l'image, l'espace de noms, les informations sur le service Knative, les informations sur les itinéraires et les abonnements aux événements.

Procédure

  • Décrire une fonction :

    $ kn func info [-f <format> -n <namespace> -p <path>]
    Copy to Clipboard Toggle word wrap

    Example command

    $ kn func info -p function/example-function
    Copy to Clipboard Toggle word wrap

    Exemple de sortie

    Function name:
      example-function
    Function is built in image:
      docker.io/user/example-function:latest
    Function is deployed as Knative Service:
      example-function
    Function is deployed in namespace:
      default
    Routes:
      http://example-function.default.apps.ci-ln-g9f36hb-d5d6b.origin-ci-int-aws.dev.rhcloud.com
    Copy to Clipboard Toggle word wrap

Vous pouvez utiliser la commande CLI kn func invoke pour envoyer une requête de test afin d'invoquer une fonction localement ou sur votre cluster OpenShift Container Platform. Vous pouvez utiliser cette commande pour tester qu'une fonction fonctionne et qu'elle est capable de recevoir des événements correctement. L'invocation d'une fonction localement est utile pour un test rapide pendant le développement de la fonction. L'invocation d'une fonction sur le cluster est utile pour des tests plus proches de l'environnement de production.

Conditions préalables

  • L'opérateur OpenShift Serverless et Knative Serving sont installés sur le cluster.
  • Vous avez installé le CLI Knative (kn).
  • Vous avez créé un projet ou avez accès à un projet avec les rôles et autorisations appropriés pour créer des applications et d'autres charges de travail dans OpenShift Container Platform.
  • Vous devez avoir déjà déployé la fonction que vous souhaitez invoquer.

Procédure

  • Invoquer une fonction :

    $ kn func invoke
    Copy to Clipboard Toggle word wrap
    • La commande kn func invoke ne fonctionne que lorsqu'une image de conteneur locale est en cours d'exécution ou lorsqu'une fonction est déployée dans le cluster.
    • La commande kn func invoke s'exécute par défaut dans le répertoire local et suppose que ce répertoire est un projet de fonction.
7.5.1.7.1. kn func invoke optional parameters

Vous pouvez spécifier des paramètres facultatifs pour la demande en utilisant les drapeaux de commande CLI suivants : kn func invoke.

Expand
DrapeauxDescription

-t, --target

Spécifie l'instance cible de la fonction invoquée, par exemple, local ou remote ou https://staging.example.com/. La cible par défaut est local.

-f, --format

Spécifie le format du message, par exemple cloudevent ou http.

--id

Spécifie une chaîne d'identification unique pour la demande.

-n, --namespace

Spécifie l'espace de noms sur le cluster.

--source

Spécifie le nom de l'expéditeur de la demande. Cela correspond à l'attribut CloudEvent source.

--type

Spécifie le type de demande, par exemple, boson.fn. Cela correspond à l'attribut CloudEvent type.

--data

Spécifie le contenu de la demande. Pour les demandes CloudEvent, il s'agit de l'attribut CloudEvent data.

--file

Spécifie le chemin d'accès à un fichier local contenant les données à envoyer.

--content-type

Spécifie le type de contenu MIME pour la demande.

-p, --path

Spécifie le chemin d'accès au répertoire du projet.

-c, --confirm

Permet de demander la confirmation interactive de toutes les options.

-v, --verbose

Active l'impression de la sortie verbeuse.

-h, --help

Imprime des informations sur l'utilisation de kn func invoke.

7.5.1.7.1.1. Principaux paramètres

Les paramètres suivants définissent les principales propriétés de la commande kn func invoke:

Cible de l'événement (-t, --target)
L'instance cible de la fonction invoquée. Accepte la valeur local pour une fonction déployée localement, la valeur remote pour une fonction déployée à distance, ou une URL pour une fonction déployée à un point de terminaison arbitraire. Si aucune cible n'est spécifiée, la valeur par défaut est local.
Format du message d'événement (-f, --format)
Le format du message pour l'événement, par exemple http ou cloudevent. Le format par défaut est celui du modèle utilisé lors de la création de la fonction.
Type d'événement (--type)
Le type d'événement envoyé. Vous trouverez des informations sur le paramètre type défini dans la documentation de chaque producteur d'événements. Par exemple, la source du serveur API peut définir le paramètre type des événements produits comme dev.knative.apiserver.resource.update.
Source de l'événement (--source)
La source d'événement unique qui a produit l'événement. Il peut s'agir d'un URI pour la source de l'événement, par exemple https://10.96.0.1/ou du nom de la source de l'événement.
ID de l'événement (--id)
Un identifiant unique et aléatoire créé par le producteur de l'événement.
Données d'événement (--data)

Permet de spécifier une valeur data pour l'événement envoyé par la commande kn func invoke. Par exemple, vous pouvez spécifier une valeur --data telle que "Hello World" pour que l'événement contienne cette chaîne de données. Par défaut, aucune donnée n'est incluse dans les événements créés par kn func invoke.

Note

Les fonctions qui ont été déployées dans un cluster peuvent répondre à des événements provenant d'une source d'événements existante qui fournit des valeurs pour des propriétés telles que source et type. Ces événements ont souvent une valeur data au format JSON, qui capture le contexte spécifique au domaine de l'événement. En utilisant les drapeaux CLI mentionnés dans ce document, les développeurs peuvent simuler ces événements pour des tests locaux.

Vous pouvez également envoyer des données d'événement en utilisant l'indicateur --file pour fournir un fichier local contenant les données de l'événement. Dans ce cas, spécifiez le type de contenu en utilisant --content-type.

Type de contenu des données (--content-type)
Si vous utilisez l'indicateur --data pour ajouter des données à des événements, vous pouvez utiliser l'indicateur --content-type pour spécifier le type de données transportées par l'événement. Dans l'exemple précédent, les données sont du texte brut, vous pouvez donc spécifier kn func invoke --data "Hello world!" --content-type "text/plain".
7.5.1.7.1.2. Exemple de commandes

Il s'agit de l'invocation générale de la commande kn func invoke:

$ kn func invoke --type <event_type> --source <event_source> --data <event_data> --content-type <content_type> --id <event_ID> --format <format> --namespace <namespace>
Copy to Clipboard Toggle word wrap

Par exemple, pour envoyer un événement \N "Hello world!\N", vous pouvez exécuter :

$ kn func invoke --type ping --source example-ping --data "Hello world!" --content-type "text/plain" --id example-ID --format http --namespace my-ns
Copy to Clipboard Toggle word wrap

Pour spécifier le fichier sur disque qui contient les données de l'événement, utilisez les drapeaux --file et --content-type:

$ kn func invoke --file <path> --content-type <content-type>
Copy to Clipboard Toggle word wrap

Par exemple, pour envoyer des données JSON stockées dans le fichier test.json, utilisez la commande suivante :

$ kn func invoke --file ./test.json --content-type application/json
Copy to Clipboard Toggle word wrap
7.5.1.7.1.2.2. Spécifier le projet de fonction

Vous pouvez spécifier un chemin d'accès au projet de la fonction en utilisant l'option --path:

kn func invoke --path <path_to_function> $ kn func invoke --path <path_to_function>
Copy to Clipboard Toggle word wrap

Par exemple, pour utiliser le projet de fonction situé dans le répertoire ./example/example-function, utilisez la commande suivante :

$ kn func invoke --path ./example/example-function
Copy to Clipboard Toggle word wrap
7.5.1.7.1.2.3. Spécifier où la fonction cible est déployée

Par défaut, kn func invoke cible le déploiement local de la fonction :

$ kn func invoke
Copy to Clipboard Toggle word wrap

Pour utiliser un déploiement différent, utilisez l'option --target:

kn func invoke --target <target> $ kn func invoke --target <target>
Copy to Clipboard Toggle word wrap

Par exemple, pour utiliser la fonction déployée sur le cluster, utilisez le drapeau --target remote:

$ kn func invoke --target remote
Copy to Clipboard Toggle word wrap

Pour utiliser la fonction déployée à une URL arbitraire, utilisez l'option --target <URL>:

$ kn func invoke --target "https://my-event-broker.example.com"
Copy to Clipboard Toggle word wrap

Vous pouvez explicitement cibler le déploiement local. Dans ce cas, si la fonction n'est pas exécutée localement, la commande échoue :

$ kn func invoke --target local
Copy to Clipboard Toggle word wrap

7.5.1.8. Suppression d'une fonction

Vous pouvez supprimer une fonction en utilisant la commande kn func delete. Cette opération est utile lorsqu'une fonction n'est plus nécessaire et permet d'économiser des ressources sur votre cluster.

Procédure

  • Supprimer une fonction :

    $ kn func delete [<function_name> -n <namespace> -p <path>]
    Copy to Clipboard Toggle word wrap
    • Si le nom ou le chemin de la fonction à supprimer n'est pas spécifié, le répertoire actuel est parcouru à la recherche d'un fichier func.yaml qui est utilisé pour déterminer la fonction à supprimer.
    • Si l'espace de noms n'est pas spécifié, il prend par défaut la valeur de namespace dans le fichier func.yaml.
Retour au début
Red Hat logoGithubredditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance. Découvrez nos récentes mises à jour.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez le Blog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

Theme

© 2025 Red Hat