2.9 KiB
OpenFaaS backends
OpenFaaS is a framework for building serverless functions with containers and running them at scale.
We support two orchestration platforms or "backends":
- Docker Swarm
- Kubernetes
The Docker Swarm support is built-into the faas repo, but the Kubernetes support is provided by a microservice in the faas-netes repo.
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:
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