OpenFaaS - Serverless Functions Made Simple
Switch branches/tags
Clone or download
TPei and alexellis add link to blog describing how to write serverless crystal functions
Signed-off-by: TPei <t.s.peikert@gmail.com>
Latest commit 0ae1051 Dec 5, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Add CODEOWNERS Nov 22, 2018
api-docs Adds missing annotation field from swagger.yml Sep 2, 2018
ci Add sha256 hashgen for watchdog to ci config Nov 14, 2018
contrib Bump files to use alpine:3.8 Nov 16, 2018
docs Update README files Oct 3, 2018
gateway Download vendor cdn files for gateway Dec 5, 2018
guide Move perf page to docs Dec 6, 2018
prometheus Bump alertmanager to RC version due to bug Mar 13, 2018
sample-functions Bump files to use alpine:3.8 Nov 16, 2018
watchdog Bump the watchdog version to 0.9.6 Oct 19, 2018
.DEREK.yml Add pr_description_required Nov 22, 2018
.gitignore Add sha256 hashgen for watchdog to ci config Nov 14, 2018
.travis.yml Add sha256 hashgen for watchdog to ci config Nov 14, 2018
BACKERS.md Add Jock to hall of fame Aug 7, 2018
CNAME Create CNAME Apr 29, 2017
CONTRIBUTING.md Add note on Yagni Nov 19, 2018
DEV.md Bump the watchdog version to 0.9.6 Oct 19, 2018
LICENSE Add OpenFaaS Author(s) Sep 8, 2018
Makefile Add armhf build steps Aug 23, 2018
README.md Update incubator link Nov 8, 2018
ROADMAP.md Updates for November Nov 4, 2017
TestDrive.md Remove sample functions for swarm Jun 5, 2018
_config.yml Set theme jekyll-theme-cayman Apr 29, 2017
appveyor.yml Windows port - spike (#66) Apr 27, 2017
build.sh Enhance info endpoint to include gateway version Jul 6, 2018
community.md add link to blog describing how to write serverless crystal functions Dec 11, 2018
debug.md Disable KeepAlive on proxy (#21) Mar 21, 2017
deploy_stack.armhf.sh Check for docker in linux deploy_stack scripts Aug 16, 2017
deploy_stack.ps1 Enable hashed passwords with PowerShell Nov 4, 2018
deploy_stack.sh Enable basic-auth by default Jul 16, 2018
docker-compose.arm64.yml Bump gateway and watchdog tags/versions Feb 25, 2018
docker-compose.armhf.yml Bump the faas-swarm version in the compose yml Nov 29, 2018
docker-compose.yml Bump the faas-swarm version in the compose yml Nov 29, 2018
stack.yml Update stack.yml Sep 18, 2018
stack_arm.yml Update stack_arm.yml Sep 18, 2018

README.md

OpenFaaS - Serverless Functions Made Simple

Go Report Card Build Status GoDoc License: MIT OpenFaaS

OpenFaaS Logo

OpenFaaS® (Functions as a Service) is a framework for building Serverless functions with Docker and Kubernetes which has first-class support for metrics. Any process can be packaged as a function enabling you to consume a range of web events without repetitive boiler-plate coding.

Twitter URL

Highlights

  • Ease of use through UI portal and one-click install
  • Write functions in any language for Linux or Windows and package in Docker/OCI image format
  • Portable - runs on existing hardware or public/private cloud - Kubernetes and Docker Swarm native
  • CLI available with YAML format for templating and defining functions
  • Auto-scales as demand increases including to zero

Overview of OpenFaaS

Serverless Functions Made Simple.

Stack

Press / Branding / Sponsors

For information on branding, the press-kit, registered entities and sponsorship head over to the openfaas/media repo. You can also order custom SWAG or take part in the weekly Twitter contest #FaaSFriday

Looking for statistics? This project does not use a mono-repo, but is split across several components. Use Ken Fukuyama's dashboard to gather accurate counts on contributors, stars and forks across the GitHub organisation.

Incubator projects are not counted in these totals and are hosted under openfaas-incubator awaiting graduation.

Governance

OpenFaaS® is an independent project founded by Alex Ellis which is now being built and shaped by a growing community of contributors, GitHub Organisation members, Core contributors and end-users. More at: openfaas.com.

Users

View our end-users or get in touch to have your company added.

Please support OpenFaaS on Patreon) and back a great community at the same time. You will be listed as a backers or sponsor here.

Thank you for your support.

Technical overview

Function Watchdog

  • You can make any Docker image into a serverless function by adding the Function Watchdog (a tiny Golang HTTP server)
  • The Function Watchdog is the entrypoint allowing HTTP requests to be forwarded to the target process via STDIN or HTTP. The response is sent back to the caller by writing to STDOUT or HTTP from your application.

API Gateway / UI Portal

  • The API Gateway provides an external route into your functions and collects Cloud Native metrics through Prometheus.
  • Your API Gateway will scale functions according to demand by altering the service replica count in the Docker Swarm or Kubernetes API.
  • A UI is baked in allowing you to invoke functions in your browser and create new ones as needed.

The API Gateway is a RESTful micro-service and you can view the Swagger docs here.

CLI

Any container or process in a Docker container can be a serverless function in FaaS. Using the FaaS CLI you can deploy your functions quickly.

Create new functions from templates for Node.js, Python, Go and many more. If you can't find a suitable template you can also use a Dockerfile.

The CLI is effectively a RESTful client for the API Gateway.

When you have OpenFaaS configured you can get started with the CLI here

Function examples

You can generate new functions using the FaaS-CLI and built-in templates or use any binary for Windows or Linux in a Docker container.

Official templates exist for many popular languages and are easily extensible with Dockerfiles. Here is an example with Python 3 and Node.js:

  • Python 3 example:
import requests

def handle(req):
    r =  requests.get(req, timeout = 1)
    return "{} => {:d}".format(req, r.status_code)

handler.py

  • Node.js example:
"use strict"

module.exports = (callback, context) => {
    var err;
    callback(err, {"message": "You said: " + context})
}

handler.js

The easiest way to get started with functions is to take the workshop or one of the tutorials in the documentation.

Get started with OpenFaaS

Official documentation and blog

See our documentation on docs.openfaas.com. The source repository for the documentation website is openfaas/docs.

Read latest news on OpenFaaS from the community blog

Hands-on labs (detailed getting started)

You can learn how to build functions with OpenFaaS using our hands-on labs in the OpenFaaS workshop.

TestDrive (classic getting started)

Kubernetes

OpenFaaS is Kubernetes-native - you can follow the deployment guide here.

Docker Swarm

The deployment guide for Docker Swarm contains a simple one-line command to get you up and running in around 60 seconds. It also includes a set of sample functions which you can use with the TestDrive instructions below.

Deployment guide for Docker Swarm

Docker Playground

You can quickly start OpenFaaS on Docker Swarm online using the community-run Docker playground: Play-with-Docker (PWD)

Simply follow the deployment guide for Swarm above in a new session

You will need a free Docker Hub account to get access. Get one here: Docker Hub

Begin the TestDrive

Here is a screenshot of the API gateway portal - designed for ease of use.

Portal

Find out more about OpenFaaS

The Cube interview @ DevNet Create 2018

SkillsMatter video presentation 2017

Overview of OpenFaaS features, users and roadmap

OpenFaaS presents to CNCF Serverless workgroup

Closing Keynote at Dockercon 2017

Functions as a Service or FaaS was a winner in the Cool Hacks contest for Dockercon 2017.

If you'd like to find the functions I used in the demos head over to the faas-dockercon repository.

Background story

Community

Have you written a blog about OpenFaaS? Send a Pull Request to the community page below.

If you'd like to join OpenFaaS community Slack channel to chat with contributors or get some help then check out this page on community.

Roadmap and contributing

OpenFaaS is written in Golang and is MIT licensed - contributions are welcomed whether that means providing feedback, testing existing and new feature or hacking on the source.

How do I become a contributor?

Please see the guide on community & contributing

Roadmap

The roadmap for OpenFaaS is represented in GitHub issues and a Trello board. There is also a historical ROADMAP file in the main faas repository.

Roadmap: OpenFaaS Cloud

OpenFaaS Cloud is a platform built on top of the OpenFaaS framework which enables a multi-user experience driven by GitOps. It can be installed wherever you already have OpenFaaS and packages a dashboard along with CI/CD integration with GitHub so that you can push code to a private or public Git repo and get live HTTPS endpoints.

Dashboards

Example of a Grafana dashboards linked to OpenFaaS showing auto-scaling live in action: here

An alternative community dashboard is available here