6.3. Création et déploiement de fonctions sur le cluster
Au lieu de construire une fonction localement, vous pouvez construire une fonction directement sur le cluster. Lorsque vous utilisez ce flux de travail sur une machine de développement locale, vous ne devez travailler qu'avec le code source de la fonction. Ceci est utile, par exemple, lorsque vous ne pouvez pas installer d'outils de construction de fonctions sur le cluster, tels que docker ou podman.
6.3.1. Construire et déployer des fonctions sur le cluster Copier lienLien copié sur presse-papiers!
Vous pouvez utiliser le CLI de Knative (kn
) pour initier la construction d'un projet de fonction et ensuite déployer la fonction directement sur le cluster. Pour construire un projet de fonction de cette manière, le code source de votre projet de fonction doit exister dans une branche du dépôt Git accessible à votre cluster.
Conditions préalables
- Red Hat OpenShift Pipelines doit être installé sur votre cluster.
-
Vous avez installé l'OpenShift CLI (
oc
). -
Vous avez installé le CLI Knative (
kn
).
Procédure
Dans chaque espace de noms où vous souhaitez exécuter OpenShift Pipelines et déployer une fonction, vous devez créer les ressources suivantes :
Créez la tâche
s2i
Tekton pour pouvoir utiliser Source-to-Image dans le pipeline :oc apply -f https://raw.githubusercontent.com/openshift-knative/kn-plugin-func/serverless-1.28.0/pipelines/resources/tekton/task/func-s2i/0.1/func-s2i.yaml
$ oc apply -f https://raw.githubusercontent.com/openshift-knative/kn-plugin-func/serverless-1.28.0/pipelines/resources/tekton/task/func-s2i/0.1/func-s2i.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créez la tâche
kn func
deploy Tekton pour pouvoir déployer la fonction dans le pipeline :oc apply -f https://raw.githubusercontent.com/openshift-knative/kn-plugin-func/serverless-1.28.0/pipelines/resources/tekton/task/func-deploy/0.1/func-deploy.yaml
$ oc apply -f https://raw.githubusercontent.com/openshift-knative/kn-plugin-func/serverless-1.28.0/pipelines/resources/tekton/task/func-deploy/0.1/func-deploy.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Créer une fonction :
kn func create <function_name> -l <runtime>
$ kn func create <function_name> -l <runtime>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
Après avoir créé un nouveau projet de fonction, vous devez ajouter le projet à un dépôt Git et vous assurer que le dépôt est disponible pour le cluster. Les informations relatives à ce dépôt Git sont utilisées pour mettre à jour le fichier
func.yaml
dans l'étape suivante. Mettez à jour la configuration dans le fichier
func.yaml
pour votre projet de fonction afin d'activer les constructions sur le cluster pour le dépôt Git :Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Obligatoire. Indiquez le dépôt Git qui contient le code source de votre fonction.
- 2
- Facultatif. Spécifiez la révision du dépôt Git à utiliser. Il peut s'agir d'une branche, d'une balise ou d'un commit.
- 3
- Facultatif. Indiquez le chemin d'accès au répertoire de la fonction si celle-ci n'est pas située dans le dossier racine du référentiel Git.
- Mettez en œuvre la logique commerciale de votre fonction. Ensuite, utilisez Git pour livrer et pousser les changements.
Déployez votre fonction :
kn func deploy --remote
$ kn func deploy --remote
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Si vous n'êtes pas connecté au registre de conteneurs référencé dans la configuration de votre fonction, vous êtes invité à fournir des informations d'identification pour le registre de conteneurs distant qui héberge l'image de la fonction :
Exemple de résultats et d'invites
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
Pour mettre à jour votre fonction, validez les nouvelles modifications à l'aide de Git, puis exécutez à nouveau la commande
kn func deploy --remote
.
6.3.2. Spécification de la révision des fonctions Copier lienLien copié sur presse-papiers!
Lors de la construction et du déploiement d'une fonction sur le cluster, vous devez spécifier l'emplacement du code de la fonction en indiquant le dépôt Git, la branche et le sous-répertoire dans le dépôt. Vous n'avez pas besoin de spécifier la branche si vous utilisez la branche main
. De même, vous n'avez pas besoin de spécifier le sous-répertoire si votre fonction se trouve à la racine du référentiel. Vous pouvez spécifier ces paramètres dans le fichier de configuration func.yaml
ou en utilisant des drapeaux avec la commande kn func deploy
.
Conditions préalables
- Red Hat OpenShift Pipelines doit être installé sur votre cluster.
-
Vous avez installé le CLI OpenShift (
oc
). -
Vous avez installé le CLI Knative (
kn
).
Procédure
Déployez votre fonction :
kn func deploy --remote \ --git-url <repo-url> \ [--git-branch <branch>] \ [--git-dir <function-dir>]
$ kn func deploy --remote \
1 --git-url <repo-url> \
2 [--git-branch <branch>] \
3 [--git-dir <function-dir>]
4 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Avec l'option
--remote
, la construction s'exécute à distance. - 2
- Remplacez
<repo-url>
par l'URL du dépôt Git. - 3
- Remplacez
<branch>
par la branche, le tag ou le commit Git. Si vous utilisez le dernier commit sur la branchemain
, vous pouvez ignorer ce drapeau. - 4
- Remplacez
<function-dir>
par le répertoire contenant la fonction s'il est différent du répertoire racine du référentiel.
Par exemple :
kn func deploy --remote \ --git-url https://example.com/alice/myfunc.git \ --git-branch my-feature \ --git-dir functions/example-func/
$ kn func deploy --remote \ --git-url https://example.com/alice/myfunc.git \ --git-branch my-feature \ --git-dir functions/example-func/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow