Fast Serverless Functions for Kubernetes
Branch: master
Clone or download
vishal-biyani V1.0.0 (#1100)
Fission 1.0.0 release
Latest commit 9ec0084 Feb 14, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
Documentation Remove/Redirect out-of-date docs to fission doc site (#1061) Jan 17, 2019
builder Use Header.Set() to override the existing header value (#1032) Dec 20, 2018
buildermgr OpenTracing for Fission (#1079) Feb 7, 2019
cache
canaryconfigmgr Send the error message to user when enabling canary feature fails. (#990 Jan 14, 2019
charts V1.0.0 (#1100) Feb 14, 2019
controller Fix unable to update the function value of route (#1081) Jan 28, 2019
crd Canary deployments for fission functions. (#892) Sep 26, 2018
demos Rename canary flag name from funcN/funcN-1 to newfunction/oldfunction ( Nov 28, 2018
environments
examples
executor OpenTracing for Fission (#1079) Feb 7, 2019
featureconfig Send the error message to user when enabling canary feature fails. (#990 Jan 14, 2019
fission-bundle OpenTracing for Fission (#1079) Feb 7, 2019
fission OpenTracing for Fission (#1079) Feb 7, 2019
hack Fix helm command not found issue when kubeconfig is not provided. Nov 20, 2018
kubewatcher Enabling multi-tenancy for fission objects. (#655) May 23, 2018
logger Fix fluentd plugin version to prevent version incompatible problem (#… Jan 23, 2019
mqtrigger
pkg/apis/fission.io/v1 Changed Kafka topic name validation (#1051) Jan 14, 2019
preupgradechecks V0.11.0 (#913) Oct 1, 2018
publisher
redis Use Header.Set() to override the existing header value (#1032) Dec 20, 2018
router OpenTracing for Fission (#1079) Feb 7, 2019
storagesvc OpenTracing for Fission (#1079) Feb 7, 2019
test Fix executor tries to create same name deployment (#1082) Jan 30, 2019
throttler Replace router svcAddrUpdateLocks with new throttler package for code… Jan 16, 2019
timer Enabling multi-tenancy for fission objects. (#655) May 23, 2018
v1 Upgrade tool for 0.1 -> 0.2.1 (#320) Sep 12, 2017
.gitignore Add fluentd.conf as a configmap (#792) Jan 10, 2019
.travis.yml Fix helm command not found issue when kubeconfig is not provided. Nov 20, 2018
CHANGELOG.md V1.0.0 (#1100) Feb 14, 2019
CODE_OF_CONDUCT.md Update with our new codeofconduct@ alias Aug 12, 2017
CONTRIBUTING.md Add a contributing.md Jan 24, 2017
LICENSE Initial docs commit Aug 19, 2016
Makefile Add Container object to environment build and runtime specs (#413) Mar 22, 2018
README.md V1.0 (#1094) Feb 9, 2019
common.go Consider Pod Phase in IsReadyPod (#1080) Jan 28, 2019
commonrbacutil.go Update k8s dependencies to 1.10 (#687) Jun 1, 2018
error.go Indicate HTTP status code by library const (#703) May 24, 2018
glide.lock OpenTracing for Fission (#1079) Feb 7, 2019
glide.yaml OpenTracing for Fission (#1079) Feb 7, 2019
info.go Add time trigger cron spec examination tool (#680) Jun 4, 2018
merge_test.go Update k8s dependencies to 1.10 (#687) Jun 1, 2018
plugins.yaml Extensible Fission CLI (#743) Aug 17, 2018
port-forward-nats.sh Service type ClusterIP - Controller port forward through CLI (#431) Feb 27, 2018
port-forward-router.sh Service type ClusterIP - Controller port forward through CLI (#431) Feb 27, 2018
types.go Fix requests are sent to unready function pod (newdeploy) (#1005) Dec 27, 2018

README.md

Fission: Serverless Functions for Kubernetes

Build Status Go Report Card Fission Slack

fission.io @fissionio

Fission is a fast serverless framework for Kubernetes with a focus on developer productivity and high performance.

Fission operates on just the code: Docker and Kubernetes are abstracted away under normal operation, though you can use both to extend Fission if you want to.

Fission is extensible to any language; the core is written in Go, and language-specific parts are isolated in something called environments (more below). Fission currently supports NodeJS, Python, Ruby, Go, PHP, Bash, and any Linux executable, with more languages coming soon.

Performance: 100msec cold start

Fission maintains a pool of "warm" containers that each contain a small dynamic loader. When a function is first called, i.e. "cold-started", a running container is chosen and the function is loaded. This pool is what makes Fission fast: cold-start latencies are typically about 100msec.

Kubernetes is the right place for Serverless

We're built on Kubernetes because we think any non-trivial app will use a combination of serverless functions and more conventional microservices, and Kubernetes is a great framework to bring these together seamlessly.

Building on Kubernetes also means that anything you do for operations on your Kubernetes cluster — such as monitoring or log aggregation — also helps with ops on your Fission deployment.

Fission Concepts

A function is a piece of code that follows the fission function interface.

An environment contains the language- and runtime-specific parts of running a function.

The following environments are currently available:

Environment Image
Binary (for executables or scripts) fission/binary-env
Go fission/go-env
JVM fission/jvm-env
.NET fission/dotnet-env
.NET 2.0 fission/dotnet20-env
NodeJS (Alpine) fission/node-env
NodeJS (Debian) fission/node-env-debian
Perl fission/perl-env
PHP 7 fission/php-env
Python 3 fission/python-env
Ruby fission/ruby-env

You can also extend environments or create entirely new ones if you want. (An environment is essentially just a container with a webserver and dynamic loader.)

A trigger is something that maps an event to a function; Fission as of today supports HTTP request, timed, and message queue triggers.

Usage

  # Add the stock NodeJS env to your Fission deployment
  $ fission env create --name nodejs --image fission/node-env

  # A javascript one-liner that prints "hello world"
  $ curl https://raw.githubusercontent.com/fission/fission/master/examples/nodejs/hello.js > hello.js

  # Upload your function code to fission
  $ fission function create --name hello --env nodejs --code hello.js

  # Map GET /hello to your new function
  $ fission route create --method GET --url /hello --function hello

  # Run the function.  This takes about 100msec the first time.
  $ fission function test --name hello
  Hello, world!

See the examples directory for more.

Running Fission on your Cluster

See the installation guide.

Compiling Fission

See the compilation guide.

Reach us on slack or twitter.

Fission is a project by Platform9 Systems and many contributors.