3.6 KiB
OpenFaaS backends guide
OpenFaaS is a framework for building serverless functions with containers and running them at scale.
Bring Serverless OpenFaaS functions to your favourite container platform.
We support two orchestration platforms or "backends":
- Docker Swarm
- Kubernetes
There is also community work in-progress to support:
- Rancher/Cattle
- Nomad
- DCOS
- Hyper.sh
The Docker Swarm support is built-into the faas repo, but the Kubernetes support is provided by a microservice in the faas-netes repo.
If you're thinking of writing a new back-end we'd love to hear about it and help you, so please get in touch with alex@openfaas.com. Existing implementations (like OpenFaaS) are written in Golang and this provides a level of consistency across the projects.
I need a backend for X
This project is focusing on Docker Swarm and Kubernetes, but we're open to support from third parties and vendors for other backends:
Here are some ideas:
- Nomad
- Marathon Mesos
- AWS ECS
- Hyper.sh
If you would like to write your own back-end for X
then you can write your own microservice that conforms to the Swagger API here.
How does my back-end work?
In order to support a new back end you will write a new "external_provider" and configure this on the API Gateway. The API Gateway will then proxy any requests to your new microservice. The first "external_provider" was the Kubernetes implementation faas-netes:
Deploy a function - through the built-in Swarm support or through faas-netes
Invoke your function - through the built-in Swarm or via faas-netes
Find out more about the watchdog here.
Automatically compatible OpenFaaS
The following are fully compatible with any additional back-ends:
- API Gateway
- Promethes metrics (tracked through API Gateway)
- The built-in UI portal (hosted on the API Gateway)
- The Function Watchdog and any existing OpenFaaS functions
- The CLI
- Asynchronous function invocation
Dependent on back-end:
- Secrets or environmental variable support
- Windows Containers function runtimes (i.e. via W2016 and Docker)
- Scaling - dependent on underlying API (available in Docker & Kubernetes)
Backend endpoints:
- List / Create / Delete a function
/system/functions
Method(s): GET / POST / DELETE
- Get a specific function
/system/function/{name:[-a-zA-Z_0-9]+}
Method(s): GET
- Scale a specific function:
/system/scale-function/{name:[-a-zA-Z_0-9]+}
Method(s): POST
- Invoke a specific function
/function/{name:[-a-zA-Z_0-9]+}
Method(s): POST
Examples / documentation
- See the Swagger API as a starting point.
faas-netes (Kubernetes)
The Kubernetes integration was written by Alex Ellis and is officially supported by the project.
- See the FaaS-netes handlers for examples of how to implement each endpoint.
Rancher / Cattle (community)
This work is by Ken Fukuyama from Japan.
-
faas-rancher implementation in Golang