Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/openfaas/faas-provider
A backend provider interface for OpenFaaS
https://github.com/openfaas/faas-provider
Last synced: 3 days ago
JSON representation
A backend provider interface for OpenFaaS
- Host: GitHub
- URL: https://github.com/openfaas/faas-provider
- Owner: openfaas
- License: mit
- Created: 2017-09-06T08:20:14.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2024-07-10T08:35:20.000Z (4 months ago)
- Last Synced: 2024-08-02T15:47:57.207Z (3 months ago)
- Language: Go
- Homepage: https://github.com/openfaas/faas
- Size: 2.7 MB
- Stars: 122
- Watchers: 8
- Forks: 44
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- my-awesome - openfaas/faas-provider - 07 star:0.1k fork:0.0k A backend provider interface for OpenFaaS (Go)
README
faas-provider
==============This faas-provider can be used to write your own back-end for OpenFaaS. The Golang SDK can be vendored into your project so that you can provide a provider which is compliant and compatible with the OpenFaaS gateway.
![Conceptual diagram](docs/conceptual.png)
The faas-provider provides CRUD for functions and an invoke capability. If you complete the required endpoints then you will be able to use your container orchestrator or back-end system with the existing OpenFaaS ecosystem and tooling.
Read more: [The power of interfaces in OpenFaaS](https://blog.alexellis.io/the-power-of-interfaces-openfaas/)
### Recommendations
The following is used in OpenFaaS and recommended for those seeking to build their own back-ends:
* License: MIT
* Language: Golang### How to use this project
All the required HTTP routes are configured automatically including a HTTP server on port 8080. Your task is to implement the supplied HTTP handler functions.
Examples:
**OpenFaaS for Kubernetes**
See the [main.go](https://github.com/openfaas/faas-netes/blob/master/main.go) file in the [faas-netes](https://github.com/openfaas/faas-netes) Kubernetes backend.
**OpenFaaS for containerd (faasd)**
See [provider.go](https://github.com/openfaas/faasd/blob/master/cmd/provider.go#L100) for the [faasd backend](https://github.com/openfaas/faasd/)
I.e.:
```go
timeout := 8 * time.Second
bootstrapHandlers := bootTypes.FaaSHandlers{
ListNamespaces: handlers.MakeNamespaceLister(),
FunctionProxy: handlers.MakeProxyHandler(),
FunctionLister: handlers.MakeFunctionLister(),
DeployFunction: handlers.MakeDeployFunctionHandler(),
DeleteFunction: handlers.MakeDeleteFunctionHandler(),
UpdateFunction: handlers.MakeUpdateFunctionHandler(),
FunctionStatus: handlers.MakeFunctionStatusHandler(),
ScaleFunction: handlers.MakeScaleFunctionHandler(),
Secrets: handlers.MakeSecretHandler(),
Logs: handlers.MakeLogsHandler(),
Info: handlers.MakeInfoHandler(),
Health: handlers.MakeHealthHandler(),
}var port int
port = 8080
bootstrapConfig := bootTypes.FaaSConfig{
ReadTimeout: timeout,
WriteTimeout: timeout,
TCPPort: &port,
}bootstrap.Serve(&bootstrapHandlers, &bootstrapConfig)
```