Skip to content

Latest commit

 

History

History
109 lines (85 loc) · 3.78 KB

README.md

File metadata and controls

109 lines (85 loc) · 3.78 KB

OpenFaaS Pro Function Builder API examples

This repo contains some code examples that show you how to use the OpenFaaSFunction Builder API from different languages.

The Function Builder API provides a simple REST API to create your functions from source code. See Function Builder API docs for installation instructions

Before attempting to run the examples make sure the pro-builder is port-forwarded to port 8081 on the local host.

kubectl port-forward \
    -n openfaas \
    svc/pro-builder 8081:8080

Save the HMAC signing secret created during the installation to a file payload.txt at the root of this repo.

kubectl get secret \
    -n openfaas payload-secret -o jsonpath='{.data.payload-secret}' \
    | base64 --decode \
    > payload.txt

The directory hello-world can be passed as the handler directory to the examples. It contains a javascript handler for a function. The hello-world directory was created by running:

faas-cli new hello-world --lang node20

You can use the faas-cli to create any other handler to try these example scripts with.

Use Python to call the pro-builder

The python-request directory has an example on how to invoke the Function Builder API from python. Run the build.py script with the required flags to turn a function handler into a container image.

The python script uses the Requests package so you will have to install that to run the example.

sudo python3 -m pip install requests

Run the script

python3 python-request/build.py \
    --image ttl.sh/hello-world-python:1h \
    --handler ./hello-world \
    --lang node20

Use NodeJS to call the pro-builder

The nodejs-request directory has an example on how to invoke the Function Builder API from NodeJS. Run the index.js script with the required arguments to turn a function handler into a container image.

Install the required packages

cd nodejs-request
npm install

The script takes three arguments:

  • The docker image name to build
  • A directory with the handler for the function
  • The language or template to use
node nodejs-request/index.js \
    'ttl.sh/hello-world-node:1h' \
    ./hello-world \
    node20

Use php to call the pro-builder

The php-request directory has an example on how to invoke the Function Builder API from php. Run the build.php script with the required arguments to turn a function handler into a container image.

Install the required packages

cd php-request
php composer.phar install

The script takes three arguments:

  • The docker image name to build
  • A directory with the handler for the function
  • The language or template to use
php php-request/build.php \
    --image=ttl.sh/hello-world-php:1h \
    --handler=./hello-world \
    --lang=node20

Use go and the OpenFaaS go-sdk to call the pro-builder

The go-request directory has an example on how to invoke the Function Builder API from go using the official OpenFaaS go-sdk. Run the main.go script with the required flags to turn a function handler into a container image.

The example script does not fetch templates. How this is done is up to your implementation. Templates can be pulled from a git repository, copied from an S3 bucket, downloaded with an http call.

To try out this example you can fetch them using the faas-cli before running the script:

faas-cli template store pull node20

Run the script

go run go-request/main.go \
    -image=ttl.sh/hello-world-go:1h \
    -handler=./hello-world \
    -lang=node20 \
    -name="hello-world" \
    -platforms="linux/amd64"