7.5. Commandes CLI pour les fonctions Knative
7.5.1. kn fonctions commandes Copier lienLien copié sur presse-papiers!
7.5.1.1. Création de fonctions Copier lienLien copié sur presse-papiers!
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>
$ kn func create -r <repository> -l <runtime> -t <template> <path>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
Les valeurs d'exécution acceptées sont
quarkus
,node
,typescript
,go
,python
,springboot
etrust
. Les valeurs acceptées sont
http
etcloudevents
.Example command
kn func create -l typescript -t cloudevents examplefunc
$ kn func create -l typescript -t cloudevents examplefunc
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Created typescript function in /home/user/demo/examplefunc
Created typescript function in /home/user/demo/examplefunc
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
$ kn func create -r https://github.com/boson-project/templates/ -l node -t hello-world examplefunc
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Created node function in /home/user/demo/examplefunc
Created node function in /home/user/demo/examplefunc
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
Les valeurs d'exécution acceptées sont
7.5.1.2. Exécuter une fonction localement Copier lienLien copié sur presse-papiers!
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
$ kn func run
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>
$ kn func run --path=<directory_path>
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
$ kn func run --build
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
$ kn func run --build=false
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
$ kn func help run
7.5.1.3. Fonctions du bâtiment Copier lienLien copié sur presse-papiers!
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 Copier lienLien copié sur presse-papiers!
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
$ kn func build
7.5.1.3.2. Types de registres d'images Copier lienLien copié sur presse-papiers!
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
$ kn func build
Exemple de sortie
Building function image Function image has been built, image: registry.redhat.io/example/example-function:latest
Building function image
Function image has been built, image: registry.redhat.io/example/example-function:latest
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
$ kn func build --registry quay.io/username
Exemple de sortie
Building function image Function image has been built, image: quay.io/username/example-function:latest
Building function image
Function image has been built, image: quay.io/username/example-function:latest
7.5.1.3.3. Pousser le drapeau Copier lienLien copié sur presse-papiers!
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
$ kn func build --push
7.5.1.3.4. Commande d'aide Copier lienLien copié sur presse-papiers!
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
$ kn func help build
7.5.1.4. Déployer des fonctions Copier lienLien copié sur presse-papiers!
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>]
$ kn func deploy [-n <namespace> -p <path> -i <image>]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Function deployed at: http://func.example.com
Function deployed at: http://func.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
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.
-
Si aucune adresse
7.5.1.5. Liste des fonctions existantes Copier lienLien copié sur presse-papiers!
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>]
$ kn func list [-n <namespace> -p <path>]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
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 Copied! Toggle word wrap Toggle overflow Liste des fonctions déployées en tant que services Knative :
kn service list -n <namespace>
$ kn service list -n <namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
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 Copied! Toggle word wrap Toggle overflow
7.5.1.6. Description d'une fonction Copier lienLien copié sur presse-papiers!
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>]
$ kn func info [-f <format> -n <namespace> -p <path>]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example command
kn func info -p function/example-function
$ kn func info -p function/example-function
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.5.1.7. Invoquer une fonction déployée avec un événement de test Copier lienLien copié sur presse-papiers!
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
$ kn func invoke
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
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.
-
La commande
7.5.1.7.1. kn func invoke optional parameters Copier lienLien copié sur presse-papiers!
Vous pouvez spécifier des paramètres facultatifs pour la demande en utilisant les drapeaux de commande CLI suivants : kn func invoke
.
Drapeaux | Description |
---|---|
|
Spécifie l'instance cible de la fonction invoquée, par exemple, |
|
Spécifie le format du message, par exemple |
| Spécifie une chaîne d'identification unique pour la demande. |
| Spécifie l'espace de noms sur le cluster. |
|
Spécifie le nom de l'expéditeur de la demande. Cela correspond à l'attribut CloudEvent |
|
Spécifie le type de demande, par exemple, |
|
Spécifie le contenu de la demande. Pour les demandes CloudEvent, il s'agit de l'attribut CloudEvent |
| Spécifie le chemin d'accès à un fichier local contenant les données à envoyer. |
| Spécifie le type de contenu MIME pour la demande. |
| Spécifie le chemin d'accès au répertoire du projet. |
| Permet de demander la confirmation interactive de toutes les options. |
| Active l'impression de la sortie verbeuse. |
|
Imprime des informations sur l'utilisation de |
7.5.1.7.1.1. Principaux paramètres Copier lienLien copié sur presse-papiers!
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 valeurremote
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 estlocal
. - Format du message d'événement (
-f
,--format
) -
Le format du message pour l'événement, par exemple
http
oucloudevent
. 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ètretype
des événements produits commedev.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 commandekn 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 parkn func invoke
.NoteLes 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
ettype
. Ces événements ont souvent une valeurdata
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écifierkn func invoke --data "Hello world!" --content-type "text/plain"
.
7.5.1.7.1.2. Exemple de commandes Copier lienLien copié sur presse-papiers!
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>
$ kn func invoke --type <event_type> --source <event_source> --data <event_data> --content-type <content_type> --id <event_ID> --format <format> --namespace <namespace>
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
$ kn func invoke --type ping --source example-ping --data "Hello world!" --content-type "text/plain" --id example-ID --format http --namespace my-ns
7.5.1.7.1.2.1. Spécification du fichier contenant les données Copier lienLien copié sur presse-papiers!
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>
$ kn func invoke --file <path> --content-type <content-type>
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
$ kn func invoke --file ./test.json --content-type application/json
7.5.1.7.1.2.2. Spécifier le projet de fonction Copier lienLien copié sur presse-papiers!
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>
kn func invoke --path <path_to_function> $ kn func invoke --path <path_to_function>
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
$ kn func invoke --path ./example/example-function
7.5.1.7.1.2.3. Spécifier où la fonction cible est déployée Copier lienLien copié sur presse-papiers!
Par défaut, kn func invoke
cible le déploiement local de la fonction :
kn func invoke
$ kn func invoke
Pour utiliser un déploiement différent, utilisez l'option --target
:
kn func invoke --target <target> $ kn func invoke --target <target>
kn func invoke --target <target> $ kn func invoke --target <target>
Par exemple, pour utiliser la fonction déployée sur le cluster, utilisez le drapeau --target remote
:
kn func invoke --target remote
$ kn func invoke --target remote
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"
$ kn func invoke --target "https://my-event-broker.example.com"
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
$ kn func invoke --target local
7.5.1.8. Suppression d'une fonction Copier lienLien copié sur presse-papiers!
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>]
$ kn func delete [<function_name> -n <namespace> -p <path>]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
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 fichierfunc.yaml
.
-
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