diff --git a/README.md b/README.md index 36d8e2a..d7ae04b 100644 --- a/README.md +++ b/README.md @@ -150,9 +150,13 @@ See [here for manual / developer instructions](docs/DEV.md) ## Getting help -### Docs +### faasd handbook -The [OpenFaaS docs](https://docs.openfaas.com/) provide a wealth of information and are kept up to date with new features. +Get early access to the faasd handbook through an [OpenFaaS GitHub Sponsorship](https://github.com/sponsors/openfaas/) + +### Reference docs for Kubernetes + +The [OpenFaaS docs](https://docs.openfaas.com/) provide a wealth of information for OpenFaaS on Kubernetes, and are likely to be useful for you, even using faasd. ### Function and template store @@ -181,56 +185,7 @@ If you are learning faasd, or want to share your use-case, you can join the Open * [Become an OpenFaaS GitHub Sponsor](https://github.com/sponsors/openfaas/) * [Join Slack](https://slack.openfaas.io/) - -## Roadmap - -### Supported operations - -* `faas login` -* `faas up` -* `faas list` -* `faas describe` -* `faas deploy --update=true --replace=false` -* `faas invoke --async` -* `faas invoke` -* `faas rm` -* `faas store list/deploy/inspect` -* `faas version` -* `faas namespace` -* `faas secret` -* `faas logs` - -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 auth` - supported for Basic Authentication, but SSO, OAuth2 & OIDC may require a patch - -### Known-issues - -#### Non 200 HTTP status code upon first use - -This issue appears to happen sporadically and only for some users. - -If you get a non 200 HTTP code from the gateway, or caddy after installing faasd, check the logs of faasd: - -```bash -sudo journalctl -t faasd -``` - -If you see the following error: - -``` -unable to dial to 10.62.0.5:8080, error: dial tcp 10.62.0.5:8080: connect: no route to host -``` - -Restart the faasd service with: - -```bash -sudo systemctl restart faasd -``` - -### Backlog and features +### Backlog, features and known issues For completed features, WIP and upcoming roadmap see: diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md index c9d3d96..3f23394 100644 --- a/docs/ROADMAP.md +++ b/docs/ROADMAP.md @@ -1,5 +1,76 @@ # faasd backlog and features +## Supported operations + +* `faas login` +* `faas up` +* `faas list` +* `faas describe` +* `faas deploy --update=true --replace=false` +* `faas invoke --async` +* `faas invoke` +* `faas rm` +* `faas store list/deploy/inspect` +* `faas version` +* `faas namespace` +* `faas secret` +* `faas logs` +* `faas auth` - supported for Basic Authentication and OpenFaaS PRO with OIDC and Single-sign On. + +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. + +## Constraints vs OpenFaaS on Kubernetes + +faasd suits certain use-cases as mentioned in the README file, for those who want a solution which can scale out horizontally with minimum effort, Kubernetes or K3s is a valid option. + +### One replica per function + +Functions only support one replica, so cannot scale horizontally, but can scale vertically. + +Workaround: deploy one uniquely named function per replica. + +### Scale from zero may give a non-200 + +When scaling from zero there is no health check implemented, so the request may arrive before your HTTP server is ready to serve a request, and therefore give a non-200 code. + +Workaround: Do not scale to zero, or have your client retry HTTP calls. + +### No clustering is available + +No clustering is available in faasd, however you can still apply fault-tolerance and high availability techniques. + +Workaround: deploy multiple faasd instances and use a hardware or software load-balancer. Take regular VM/host snapshots or backups. + +### No rolling updates + +When running `faas-cli deploy`, your old function is removed before the new one is started. This may cause a small amount of downtime, depending on the timeouts and grace periods you set. + +Workaround: deploy uniquely named functions per version, and switch an Ingress or Reverse Proxy record to point at a new version once it is ready. + +## Known issues + +### Non 200 HTTP status from the gateway upon first use + +This issue appears to happen sporadically and only for some users. + +If you get a non 200 HTTP code from the gateway, or caddy after installing faasd, check the logs of faasd: + +```bash +sudo journalctl -t faasd +``` + +If you see the following error: + +``` +unable to dial to 10.62.0.5:8080, error: dial tcp 10.62.0.5:8080: connect: no route to host +``` + +Restart the faasd service with: + +```bash +sudo systemctl restart faasd +``` + ## Backlog Should have: @@ -42,3 +113,4 @@ Nice to Have: * [x] Terraform for DigitalOcean * [x] [Store and retrieve annotations in function spec](https://github.com/openfaas/faasd/pull/86) - in progress * [x] An installer for faasd and dependencies - runc, containerd +