6.2. Commencer avec les fonctions
La gestion du cycle de vie des fonctions comprend la création, l'élaboration et le déploiement d'une fonction. En option, vous pouvez également tester une fonction déployée en l'invoquant. Vous pouvez effectuer toutes ces opérations sur OpenShift Serverless en utilisant l'outil kn func
.
6.2.1. Conditions préalables
Avant de pouvoir effectuer les procédures suivantes, vous devez vous assurer que vous avez effectué toutes les tâches prérequises dans la section Configuration d'OpenShift Serverless Functions.
6.2.2. 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>
-
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
Exemple de sortie
Created typescript function in /home/user/demo/examplefunc
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
Exemple de sortie
Created node function in /home/user/demo/examplefunc
-
Les valeurs d'exécution acceptées sont
6.2.3. 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
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>
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
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
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
6.2.4. 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.
6.2.4.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
6.2.4.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
Exemple de sortie
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
Exemple de sortie
Building function image Function image has been built, image: quay.io/username/example-function:latest
6.2.4.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
6.2.4.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
6.2.5. 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>]
Exemple de sortie
Function deployed at: http://func.example.com
-
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
6.2.6. Invoquer une fonction déployée avec un événement de test
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
-
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
6.2.7. 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>]
-
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