|
| 1 | +## OpenFaaS Edge |
| 2 | + |
| 3 | +OpenFaaS Edge (aka faasd-pro) is the commercial distribution of our faasd project. |
| 4 | + |
| 5 | +faasd takes the core OpenFaaS components, and packages them for use on a single host, without the cost and complexity of Kubernetes. It is distributed as a single binary, and runs as a systemd service. It can manage both functions, and a set of stateful services such as databases, messages brokers, monitoring tools, and custom agents. |
| 6 | + |
| 7 | +Kubernetes can be a complex system to install and manage, needing many add-on components to be installed, configured and maintained over time. Each version of Kubernetes can introduce breaking changes. faasd presents a simpler alternative, where clustering and scaling are traded-off in return for a stable system, that can be deployed as an appliance and largely left alone. |
| 8 | + |
| 9 | +faasd combines the following battle-tested components from OpenFaaS and Kubernetes: |
| 10 | + |
| 11 | +* The Core Components of OpenFaaS - the gateway, the queue-worker, Prometheus monitoring |
| 12 | +* [containerd](https://containerd.io/) - the container runtime used in Kubernetes |
| 13 | +* [Container Networking Interface (CNI)](https://github.com/containernetworking/cni) - the networking interface used in Kubernetes |
| 14 | + |
| 15 | +Minimum system requirements: |
| 16 | + |
| 17 | +* *x86_64* or *64-bit Arm* CPU architecture |
| 18 | +* 512MB-1GB RAM (1GB recommended) |
| 19 | +* 2-4 vCPU |
| 20 | +* 10-25GB disk space |
| 21 | +* The Raspberry Pi 3, 4 & 5 are *also supported* |
| 22 | + |
| 23 | +## Getting started (faasd CE or faasd-pro) |
| 24 | + |
| 25 | +If you want to use faasd for non-commercial, personal use, faasd CE is available for you for free. If you need to use faasd at work, on work time, for a commercial product or service, or for an end-client, then you will need to purchase a license for OpenFaaS Edge (faasd-pro). Up to 15 functions are supported, including private registries and a single namespace. |
| 26 | + |
| 27 | +If you need to use faasd for commercial use, you can evaluate a single installation of faasd CE for a period of 60 days. After that time, you will need to purchase a license for OpenFaaS Edge (faasd-pro). |
| 28 | + |
| 29 | +* Upgraded Pro components from OpenFaaS Standard: Gateway, Cron Connector, JetStream Queue Worker and Classic Scale to Zero |
| 30 | +* Deploy up to 250 functions per installation* |
| 31 | +* Configure private DNS servers |
| 32 | +* Airgap-friendly with installation bundled in an OCI image or RPM package |
| 33 | +* Detailed RAM/CPU metrics for stateful containers, and functions, including Out Of Memory (OOM) events |
| 34 | +* Multiple namespace support |
| 35 | +* Network policies/segmentation to secure multi-tenant environments |
| 36 | + |
| 37 | +`*` The number of functions is tied to your license, with a maximum of 250 functions per installation. |
| 38 | + |
| 39 | +This version is intended for resale as part of a wider solution, and to be deployed both into industrial and on-premises environments. |
| 40 | + |
| 41 | +## Documentation and handbook |
| 42 | + |
| 43 | +For either edition, the complete handbook for faasd "Serverless For Everyone Else" is available [in the OpenFaaS Store](https://store.openfaas.com/l/serverless-for-everyone-else?layout=profile). It contains complete examples for deploying faasd, building functions in Node.js, setting up TLS and custom domains, monitoring, background jobs, and cron schedules. |
| 44 | + |
| 45 | +<a href="https://openfaas.gumroad.com/l/serverless-for-everyone-else"> |
| 46 | +<img src="https://www.alexellis.io/serverless.png" width="40%"></a> |
| 47 | + |
| 48 | + |
| 49 | +Any examples of functions on the blog or in the documentation for OpenFaaS on Kubernetes, will generally work with faasd without modification. |
| 50 | + |
| 51 | +Additional topics covered by the handbook: |
| 52 | + |
| 53 | +* Should you deploy to a VPS or Raspberry Pi? |
| 54 | +* Deploying your server with bash, cloud-init or terraform |
| 55 | +* Using a private container registry |
| 56 | +* Finding functions in the store |
| 57 | +* Building your first function with Node.js |
| 58 | +* Using environment variables for configuration |
| 59 | +* Using secrets from functions, and enabling authentication tokens |
| 60 | +* Customising templates |
| 61 | +* Monitoring your functions with Grafana and Prometheus |
| 62 | +* Scheduling invocations and background jobs |
| 63 | +* Tuning timeouts, parallelism, running tasks in the background |
| 64 | +* Adding TLS to faasd and custom domains for functions |
| 65 | +* Self-hosting on your Raspberry Pi |
| 66 | +* Adding a database for storage with InfluxDB and Postgresql |
| 67 | +* Troubleshooting and logs |
| 68 | +* CI/CD with GitHub Actions and multi-arch |
| 69 | +* Taking things further, community and case-studies |
| 70 | + |
| 71 | +## Prerequisites |
| 72 | + |
| 73 | +The quickest and easiest option for trying out faasd is to use a Linux VM from a cloud provider. You can typically create these in a minute or two, and then delete them when you're finished. |
| 74 | + |
| 75 | +If you want to try out faasd on your Mac or Windows machine, then we recommend [Multipass](https://multipass.run/) by Canonical. Multipass is a tool that allows you to create a Linux VM on your Mac or Windows machine. |
| 76 | + |
| 77 | +faasd must not be co-located with Docker, since they both make use of containerd, iptables and CNI, and will clash with one-another. It is designed to be an appliance, and have sole tenancy of any host. |
| 78 | + |
| 79 | +Images should always be built on another host, and pushed to a registry that faasd can subsequently pull from. |
| 80 | + |
| 81 | +A utility script is provided for either version, which can also be run via cloud-init for automated and production deployments. |
| 82 | + |
| 83 | +## OpenFaaS Edge/faasd-pro (commercial use) |
| 84 | + |
| 85 | +Everything required for faasd-pro is packaged in an container image, which makes for easy off-line installation. An RPM package is also available for RHEL-like Operating Systems. |
| 86 | + |
| 87 | +```bash |
| 88 | +curl -sLSf \ |
| 89 | + https://raw.githubusercontent.com/openfaas/faasd/refs/heads/master/hack/install-edge.sh \ |
| 90 | + -o install-edge.sh && \ |
| 91 | +chmod +x install-edge.sh |
| 92 | +sudo -E ./install-edge.sh |
| 93 | +``` |
| 94 | + |
| 95 | +*For an offline installation* |
| 96 | + |
| 97 | +Copy the OCI bundle and the install-edge.sh script to the remote server. |
| 98 | + |
| 99 | +Then mirror the various images from docker-compose.yaml into your private registry, and update the references from i.e. `image: ghcr.io/openfaasltd/gateway` to the equivalents in your registry. |
| 100 | + |
| 101 | +If your system is unable to install apt, yum, or pacman packages, due to limited network access, then set the `SKIP_OS` environment to 1. The list of packages is available in the `install_required_packages` section of the script. |
| 102 | + |
| 103 | +## faasd CE (non-commercial use only) |
| 104 | + |
| 105 | +faasd CE supports 15 functions and needs a computer with a stable Internet connection to run. There are restrictions on commercial use, but [individuals](EULA.md) can use it for free for personal, non-commercial use. |
| 106 | + |
| 107 | +```bash |
| 108 | +git clone https://github.com/openfaas/faasd --depth=1 |
| 109 | +cd faasd |
| 110 | + |
| 111 | +./hack/install.sh |
| 112 | +``` |
| 113 | + |
| 114 | +## Video overview |
| 115 | + |
| 116 | +Watch the presentation from KubeCon, where faasd was first announced: |
| 117 | + |
| 118 | +[](https://www.youtube.com/watch?v=ZnZJXI377ak) |
| 119 | + |
| 120 | +[Meet faasd. Look Ma’ No Kubernetes! - Serverless Summit](https://www.youtube.com/watch?v=ZnZJXI377ak) |
| 121 | + |
| 122 | +An additional training video and walkthrough is available via the [Serverless For Everyone Else](https://store.openfaas.com/l/serverless-for-everyone-else?layout=profile) handbook package. |
0 commit comments