Alex Ellis (OpenFaaS Ltd) 699458cc99 Update running instructions
Signed-off-by: Alex Ellis (OpenFaaS Ltd) <alexellis2@gmail.com>
2019-12-21 20:21:23 +00:00
2019-12-21 20:21:23 +00:00
2019-12-21 20:21:23 +00:00
2019-12-21 12:44:01 +00:00
2019-12-21 10:09:55 +00:00
2019-12-21 12:44:01 +00:00
2019-12-21 12:44:01 +00:00
2019-12-20 12:56:19 +00:00
2019-12-20 12:55:08 +00:00
2019-12-20 12:56:19 +00:00
2019-12-21 20:21:23 +00:00

faasd - serverless with containerd

faasd is a Golang supervisor that bundles OpenFaaS for use with containerd instead of a container orchestrator like Kubernetes or Docker Swarm.

About faasd:

  • faasd is a single Golang binary
  • faasd is multi-arch, so works on x86_64, armhf and arm64
  • faasd downloads, starts and supervises the core components to run OpenFaaS

What does faasd deploy?

You can use the standard faas-cli with faasd along with pre-packaged functions in the Function Store, or build your own with the template store.

faas-containerd supports:

  • faas list
  • faas describe
  • faas deploy --update=true --replace=false
  • faas invoke

Other operations are pending development in the provider.

Backlog

  • Use CNI to create network namespaces and adapters
  • Inject / manage IPs between core components for service to service communication - i.e. so Prometheus can scrape the OpenFaaS gateway
  • Monitor and restart any of the core components, if they crash
  • Configure basic_auth to protect the OpenFaaS gateway and faas-containerd HTTP API
  • Self-install / create systemd service on start-up using go-systemd
  • Bundle/package/automate installation of containerd - see bootstrap from k3s
  • Create faasd.service

Hacking

First run faas-containerd

cd $GOPATH/src/github.com/alexellis/faas-containerd
go build && sudo ./faas-containerd

Then run faasd, which brings up the gateway and Prometheus as containers

cd $GOPATH/src/github.com/alexellis/faasd
go build && sudo ./faasd

Look in hosts in the current working folder to get the IP for the gateway or Prometheus

127.0.0.1       localhost
172.19.0.1      faas-containerd
172.19.0.2      prometheus

172.19.0.3      gateway

Since faas-containerd uses containerd heavily it is not running as a container, but as a stand-alone process. Its port is available via the bridge interface, i.e. netns0.

Removing containers:

echo faas-containerd gateway prometheus |xargs sudo ctr task rm -f

echo faas-containerd gateway prometheus |xargs sudo ctr container rm

echo faas-containerd gateway prometheus |xargs sudo ctr snapshot rm
Languages
Go 90.6%
Shell 7.4%
Makefile 2%