diff --git a/README.md b/README.md index a8cea06..42f0bfc 100644 --- a/README.md +++ b/README.md @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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`. @@ -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