Knative Functions propose un modèle de programmation simplifié pour créer et déployer des fonctions sur Knative, en masquant les complexités liées à Knative, Kubernetes et aux conteneurs. Créez votre fonction, laissez la plateforme construire l'image du conteneur, personnalisez les paramètres de construction et de déploiement, puis déployez-la en tant que service Knative.
Prérequis
Assurez-vous d'avoir :
Knative déployé dans votre cluster ACK. Consultez la rubrique Déployer et gérer Knative.
Étape 1 : Installer l'interface CLI func
Téléchargez le binaire func correspondant à votre système d'exploitation depuis la page des versions de func.
Exemple pour Linux :
-
Renommez le binaire en
func:mv <path-to-binary-file> funcRemplacez
<path-to-binary-file>par le chemin d'accès au binaire téléchargé, par exemplefunc_linux_amd64. -
Rendez le binaire exécutable :
chmod +x func -
Déplacez le binaire vers un répertoire inclus dans votre variable
PATH:mv func /usr/local/bin -
Vérifiez l'installation :
func versionL'affichage de la version confirme la réussite de l'installation.
Étape 2 : Créer une fonction
Knative Functions prend en charge les environnements d'exécution suivants, tous compatibles avec les invocations HTTP et CloudEvent :
Cet exemple utilise Go.
-
Créez une fonction :
func create -l <language> <function-name>Exemple : créez une fonction Go nommée
hello:func create -l go helloSortie attendue :
Created go function in /usr/local/bin/hello -
Listez les fichiers du répertoire
hello:ls hello/Sortie attendue :
func.yaml go.mod handle.go handle_test.go README.md -
Consultez le fichier
func.yamlgénéré dans le répertoirehello:cat func.yamlSortie attendue :
specVersion: 0.35.0 name: hello runtime: go created: 2023-12-13T06:48:45.419587147Z -
Modifiez le fichier
func.yamlpour configurer le registre et les paramètres de déploiement. Exemple complet :specVersion: 0.35.0 name: hello runtime: go created: 2023-11-29T14:47:34.101658+08:00 registry: registry.cn-beijing.aliyuncs.com/knative-release-xxx image: registry.cn-beijing.aliyuncs.com/knative-release-xxx/hello:latest build: builderImages: pack: registry-cn-beijing.ack.aliyuncs.com/acs/knative-func-builder-jammy-tiny:latest deploy: namespace: defaultChamps clés :
Champ Description registryRegistre de conteneurs pour les images construites. Exemple : registry.cn-beijing.aliyuncs.com/knative-release-xxxbuild.builderImages.packImage de construction pour la fonction. Exemple : registry-cn-beijing.ack.aliyuncs.com/acs/knative-func-builder-jammy-tiny:latestdeploy.namespaceNamespace Kubernetes cible pour la fonction. Consultez la référence func.yaml pour connaître toutes les options disponibles.
Étape 3 : Déployer la fonction
Exécutez la commande func deploy depuis le répertoire hello. Cette commande utilise le nom du projet comme nom du service Knative et le combine avec le registre pour construire l'adresse de l'image.
func deploy
Vérifiez le déploiement :
func info
Sortie attendue :
Function name:
hello
Function is built in image:
Function is deployed in namespace:
default
Routes:
http://hello.default.example.com
Étape 4 : Appeler la fonction
-
Ajoutez une entrée au fichier hosts pour mapper le domaine du service Knative à l'IP de la passerelle :
121.xx.xxx.xx hello.default.example.comRemplacez
121.xx.xxx.xxpar l'IP de votre passerelle Knative ethello.default.example.compar le domaine de votre déploiement. -
Appelez la fonction :
func invokeSortie attendue :
POST / HTTP/1.1 hello.default.example.com Content-Type: application/json Forwarded: for=192.168.102.101;proto=http Knative-Serving-Default-Route: true X-Forwarded-Proto: http User-Agent: Go-http-client/1.1 Content-Length: 25 Accept-Encoding: gzip K-Proxy-Request: activator X-Forwarded-For: 192.168.102.101, 192.168.102.97 X-Request-Id: 3d82cfc8-f9df-4935-84cd-c6561b4587f6 Body:La sortie confirme que la fonction a reçu et traité la requête HTTP.
-
Vérifiez que les pods de la fonction ont été créés :
kubectl get podSortie attendue :
NAME READY STATUS RESTARTS AGE hello-00001-deployment-7b65fcdc4c-gfcbp 2/2 Running 0 34
Étapes suivantes
Consultez la rubrique FAQ Knative pour obtenir des réponses aux questions courantes sur Knative dans ACK.