/faas-provider

A backend provider interface for OpenFaaS

Primary LanguageGoMIT LicenseMIT

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

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

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 file in the faas-netes Kubernetes backend.

OpenFaaS for containerd (faasd)

See provider.go for the faasd backend

I.e.:

	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)