From 8bd2ba5334eb2bf8930c3e4c840ff124fbccafd2 Mon Sep 17 00:00:00 2001 From: Alex Ellis Date: Sat, 8 Feb 2020 09:14:45 +0000 Subject: [PATCH] Clarify faasd purpose --- README.md | 54 ++++++++++++++++++++++++++---------------------------- 1 file changed, 26 insertions(+), 28 deletions(-) diff --git a/README.md b/README.md index 0425440..d36732d 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,17 @@ -# faasd - serverless with containerd +# faasd - serverless with containerd and CNI 🐳 [![Build Status](https://travis-ci.com/openfaas/faasd.svg?branch=master)](https://travis-ci.com/openfaas/faasd) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![OpenFaaS](https://img.shields.io/badge/openfaas-serverless-blue.svg)](https://www.openfaas.com) -faasd is a Golang supervisor that bundles OpenFaaS for use with containerd instead of a container orchestrator like Kubernetes or Docker Swarm. +faasd is the same OpenFaaS experience and ecosystem, but without Kubernetes. Functions and microservices can be deployed anywhere with reduced overheads whilst retaining production-grade components like containerd and CNI. -## About faasd: +## 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 +* is a single Golang binary +* can be set-up and left alone to run your applications +* is multi-arch, so works on Intel `x86_64` and ARM out the box +* uses the same core components and ecosystem of OpenFaaS ![demo](https://pbs.twimg.com/media/EPNQz00W4AEwDxM?format=jpg&name=small) @@ -18,11 +19,19 @@ faasd is a Golang supervisor that bundles OpenFaaS for use with containerd inste ## What does faasd deploy? -* faasd - itself, and its [faas-provider](https://github.com/openfaas/faas-provider) +* faasd - itself, and its [faas-provider](https://github.com/openfaas/faas-provider) for containerd * [Prometheus](https://github.com/prometheus/prometheus) -* [the OpenFaaS gateway](https://github.com/openfaas/faas/tree/master/gateway) +* [OpenFaaS Gateway & UI](https://github.com/openfaas/faas/tree/master/gateway) +* [OpenFaaS queue-worker for NATS](https://github.com/openfaas/nats-queue-worker) +* [NATS](https://nats.io) for asynchronous processing and queues -You can use the standard [faas-cli](https://github.com/openfaas/faas-cli) with faasd along with pre-packaged functions in the Function Store, or build your own with the template store. +You'll also need: + +* [CNI](https://github.com/containernetworking/plugins) +* [containerd](https://github.com/containerd/containerd) +* [runc](https://github.com/opencontainers/runc) + +You can use the standard [faas-cli](https://github.com/openfaas/faas-cli) along with pre-packaged functions from *the Function Store*, or build your own using any OpenFaaS template. ## Tutorials @@ -46,27 +55,27 @@ See [here for manual / developer instructions](docs/DEV.md) ## Backlog -### faasd supports: +### Supported operations +* `faas login` +* `faas up` * `faas list` * `faas describe` * `faas deploy --update=true --replace=false` +* `faas invoke --async` * `faas invoke` * `faas rm` -* `faas login` * `faas store list/deploy/inspect` -* `faas up` * `faas version` -* `faas invoke --async` * `faas namespace` +* `faas secret` Scale from and to zero is also supported. On a Dell XPS with a small, pre-pulled image unpausing an existing task took 0.19s and starting a task for a killed function took 0.39s. There may be further optimizations to be gained. Other operations are pending development in the provider such as: -* `faas logs` -* `faas secret` -* `faas auth` +* `faas logs` - to stream logs on-demand for a known function +* `faas auth` - for the OAuth2 and OIDC integration ## Todo @@ -81,6 +90,7 @@ Pending: Done: +* [x] Provide a cloud-config.txt file for automated deployments of `faasd` * [x] Inject / manage IPs between core components for service to service communication - i.e. so Prometheus can scrape the OpenFaaS gateway - done via `/etc/hosts` mount * [x] Add queue-worker and NATS * [x] Create faasd.service and faasd-provider.service @@ -92,15 +102,3 @@ Done: * [x] Setup custom working directory for faasd `/var/lib/faasd/` * [x] Use CNI to create network namespaces and adapters -## Appendix - -### Links - -https://github.com/renatofq/ctrofb/blob/31968e4b4893f3603e9998f21933c4131523bb5d/cmd/network.go - -https://github.com/renatofq/catraia/blob/c4f62c86bddbfadbead38cd2bfe6d920fba26dce/catraia-net/network.go - -https://github.com/containernetworking/plugins - -https://github.com/containerd/go-cni -