Skip to content

Commit

Permalink
Update README for faas-containerd rename
Browse files Browse the repository at this point in the history
Signed-off-by: Alex Ellis (OpenFaaS Ltd) <alexellis2@gmail.com>
  • Loading branch information
alexellis committed Jan 21, 2020
1 parent bacf8eb commit f09028e
Showing 1 changed file with 26 additions and 27 deletions.
53 changes: 26 additions & 27 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,21 +12,33 @@ faasd is a Golang supervisor that bundles OpenFaaS for use with containerd inste

## What does faasd deploy?

* [faas-containerd](https://github.com/alexellis/faas-containerd/)
* faasd - itself, and its [faas-provider](https://github.com/openfaas/faas-provider)
* [Prometheus](https://github.com/prometheus/prometheus)
* [the OpenFaaS gateway](https://github.com/openfaas/faas/tree/master/gateway)

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.

### faas-containerd supports:
### faasd supports:

* `faas list`
* `faas describe`
* `faas deploy --update=true --replace=false`
* `faas invoke`
* `faas rm`
* `faas login`
* `faas store list/deploy/inspect`
* `faas up`
* `faas version`
* `faas invoke --async`
* `faas namespace`

Other operations are pending development in the provider.
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`

### Pre-reqs

Expand All @@ -40,11 +52,9 @@ Other operations are pending development in the provider.

For Windows users, install [Git Bash](https://git-scm.com/downloads) along with multipass or vagrant. You can also use WSL1 or WSL2 which provides a Linux environment.

* Installation steps as per [faas-containerd](https://github.com/alexellis/faas-containerd) for building and for development
* [containerd v1.3.2](https://github.com/containerd/containerd)
* [CNI plugins v0.8.4](https://github.com/containernetworking/plugins)
You will also need [containerd v1.3.2](https://github.com/containerd/containerd) and the [CNI plugins v0.8.4](https://github.com/containernetworking/plugins)

* [faas-cli](https://github.com/openfaas/faas-cli) (optional)
[faas-cli](https://github.com/openfaas/faas-cli) is optional, but recommended.

## Backlog

Expand All @@ -59,12 +69,12 @@ Done:

* [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 faas-containerd.service
* [x] Create faasd.service and faasd-provider.service
* [x] Self-install / create systemd service via `faasd install`
* [x] Restart containers upon restart of faasd
* [x] Clear / remove containers and tasks with SIGTERM / SIGINT
* [x] Determine armhf/arm64 containers to run for gateway
* [x] Configure `basic_auth` to protect the OpenFaaS gateway and faas-containerd HTTP API
* [x] Configure `basic_auth` to protect the OpenFaaS gateway and faasd-provider HTTP API
* [x] Setup custom working directory for faasd `/run/faasd/`
* [x] Use CNI to create network namespaces and adapters

Expand All @@ -90,18 +100,7 @@ sudo mkdir -p /opt/cni/bin
curl -sSL https://github.com/containernetworking/plugins/releases/download/${CNI_VERSION}/cni-plugins-linux-${ARCH}-${CNI_VERSION}.tgz | sudo tar -xz -C /opt/cni/bin
```

First run faas-containerd

```sh
cd $GOPATH/src/github.com/alexellis/faas-containerd

# You'll need to install containerd and its pre-reqs first
# https://github.com/alexellis/faas-containerd/

sudo ./faas-containerd
```

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

```sh
cd $GOPATH/src/github.com/alexellis/faasd
Expand Down Expand Up @@ -138,8 +137,8 @@ sudo curl -fSLs "https://github.com/alexellis/faasd/releases/download/0.4.4/faas
Look in `hosts` in the current working folder or in `/run/faasd/` to get the IP for the gateway or Prometheus

```sh
127.0.0.1 localhost
10.62.0.1 faas-containerd
127.0.0.1 localhost
10.62.0.1 faasd-provider

10.62.0.2 prometheus
10.62.0.3 gateway
Expand All @@ -149,11 +148,11 @@ Look in `hosts` in the current working folder or in `/run/faasd/` to get the IP

The IP addresses are dynamic and may change on every launch.

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. openfaas0.
Since faasd-provider 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. openfaas0.

* Prometheus will run on the Prometheus IP plus port 8080 i.e. http://[prometheus_ip]:9090/targets

* faas-containerd runs on 10.62.0.1:8081
* faasd-provider runs on 10.62.0.1:8081, i.e. directly on the host, and accessible via the bridge interface from CNI.

* Now go to the gateway's IP address as shown above on port 8080, i.e. http://[gateway_ip]:8080 - you can also use this address to deploy OpenFaaS Functions via the `faas-cli`.

Expand All @@ -165,8 +164,8 @@ The default Basic Auth username is `admin`, which is written to `/run/faasd/secr
#### Installation with systemd

* `faasd install` - install faasd and containerd with systemd, this must be run from `$GOPATH/src/github.com/alexellis/faasd`
* `journalctl -u faasd` - faasd systemd logs
* `journalctl -u faas-containerd` - faas-containerd systemd logs
* `journalctl -u faasd -f` - faasd service logs
* `journalctl -u faasd-provider -f` - faasd-provider service logs

### Appendix

Expand Down

0 comments on commit f09028e

Please sign in to comment.