Go HTML JavaScript Shell COBOL Python Other
Latest commit 5ebaf25 Feb 14, 2018
laurentgrangeau and alexellis Add conferences around France
Signed-off-by: Laurent Grangeau <laurent.grangeau@gmail.com>
Permalink
Failed to load latest commit information.
.github Update ISSUE_TEMPLATE.md Feb 14, 2018
api-docs Remove non-async deployment option Dec 22, 2017
contrib Rename arm contrib files Feb 5, 2018
docs Add files via upload Jan 28, 2018
gateway adds Go durations for timeout configs Feb 10, 2018
guide Clarify timeouts Feb 15, 2018
prometheus Merge master into breakout_swarm Feb 1, 2018
sample-functions Move samples.yml to default name of stack.yml, upgrade to 0.7.0 in al… Feb 6, 2018
watchdog Typo fix Dec 30, 2017
.DEREK.yml Adding BurtonR to list of maintainers Dec 4, 2017
.gitignore Added GKE articles Dec 20, 2017
.travis.yml Update .travis.yml Oct 9, 2017
BACKERS.md Update backers in sync with Patreon Jan 14, 2018
CNAME Create CNAME Apr 29, 2017
CONTRIBUTING.md Update CONTRIBUTING.md Dec 29, 2017
DEV.md Removes depends_on tag from docker-compose.yml files and documentation Nov 21, 2017
LICENSE Add license into code files for MIT Apr 27, 2017
MAINTAINERS Adding BurtonR to list of maintainers Dec 4, 2017
Makefile Make gateway Sep 24, 2017
README.md Enable try-with-pwd button Jan 24, 2018
ROADMAP.md Updates for November Nov 4, 2017
TestDrive.md Update TestDrive.md Feb 6, 2018
_config.yml Set theme jekyll-theme-cayman Apr 29, 2017
appveyor.yml Windows port - spike (#66) Apr 27, 2017
build.sh Quote build.sh Oct 1, 2017
community.md Add conferences around France Feb 15, 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 Add PowerShell script to start Docker stack Aug 16, 2017
deploy_stack.sh Check for docker in linux deploy_stack scripts Aug 16, 2017
docker-compose.arm64.yml Removes depends_on tag from docker-compose.yml files and documentation Nov 21, 2017
docker-compose.armhf.yml Bump armhf to latest faas-swarm Feb 1, 2018
docker-compose.extended.armhf.yml Lock down Prometheus Alertmanager and NATS ports by default (#378) Nov 30, 2017
docker-compose.yml Bump to 0.1.5 of faas-swarm with less verbose logging Feb 1, 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

New: become an OpenFaaS backer or sponsor

We need your support to keep delivering on Serverless Functions Made Simple so pledge to OpenFaaS and become a backer or a sponsor with a unique set of rewards. Help us hit our goals and get to back a great project at the same time.

View the List of backers and sponsors

Press-kit/media/swag

For stickers, swag, media or press-kit information head over to openfaas/media

Governance

OpenFaaS is an independent project created by Alex Ellis which is now being built and shaped by a growing community of contributors. Project website: openfaas.com.

Overview of OpenFaaS

Serverless Functions Made Simple.

Stack

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. The response is sent back to the caller by writing to STDOUT 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.

  • Python example:
import requests

def handle(req):
        r =  requests.get(req, timeout = 1)
        print(req +" => " + str(r.status_code))

handler.py

  • Node.js example:
"use strict"

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

handler.js

Other Sample functions are available in the Github repository in a range of programming languages.

Documentation

View our guides for documentation, deployment guides and tutorials.

Get started with OpenFaaS

TestDrive

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

Kubernetes

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

The new login feature breaks the one-click deployment to PWD. Docker Playground

You can quickly start OpenFaaS on Docker Swarm online using the community-run Docker playground: play-with-docker.com (PWD) by clicking the button below:

Try in PWD

Begin the TestDrive

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

Portal

Find out more about OpenFaaS

SkillsMatter video presentation

Great 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

This is my original blog post on FaaS from January: Functions as a Service blog post

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 send a Tweet to @alexellisuk or email alex@openfaas.com.

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.

To get started you can read the roadmap and contribution guide or:

Highlights:

  • New: Kubernetes support via FaaS-netes plugin
  • New: FaaS CLI and easy install via curl and brew
  • New: Windows function support
  • New: Asynchronous/long-running OpenFaaS functions via NATS Streaming - Follow this guide

How do I become a contributor?

Anyone is invited to contribute to the project in-line with the contribution guide - you can also read the guide for ideas on how to get involved. We invite new contributors to join our Slack community. We would also ask you to propose any changes or contributions ahead of time, especially when there is no issue or proposal already tracking it.

Other

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

An alternative community dashboard is available here