Files
fission-src/README.md
T
2016-11-12 10:38:52 -08:00

125 lines
2.8 KiB
Markdown

Fission
=======
Fission is a fast serverless framework for Kubernetes with a focus on
developer productivity and high performance.
It's customizable (with sensible defaults), extensible to any
language, and interoperates well with other infrastructure.
See http://fission.io for more.
Running Fission
===============
### Setup Kubernetes
You can install Kubernetes on your laptop with minikube: https://github.com/kubernetes/minikube
Or, you can use Google Container Engine's free trial to get a 3 node cluster.
### Verify access to the cluster
```
$ kubectl version
```
### Get and Run Fission
If you're using GKE, use the fission.yaml unmodified. If you're using
minikube, change all instances of LoadBalancer services to NodePort.
```
$ curl http://fission.io/fission.yaml | kubectl create -f -
$ kubectl --namespace fission get services
```
Save the external IP addresses of controller and router services in
FISSION_URL and FISSION_ROUTER, respectively. FISSION_URL is used by
the fission CLI to find the server. (FISSION_ROUTER is only needed
for the examples below to work.)
### Install the client CLI
```
$ curl http://fission.io/fission > fission
$ chmod +x fission
$ sudo mv fission /usr/local/bin/
```
### Run an example
```
$ fission env create --name nodejs --image fission/node-env
$ echo 'module.exports = function(context, callback) { callback(200, "Hello, world!\n"); }' > hello.js
$ fission function create --name hello --env nodejs --code hello.js
$ fission route create --method GET --url /hello --function hello
$ curl http://$FISSION_ROUTER/hello
Hello, world!
```
Compiling Fission
=================
You'll need go installed, along with the glide dependecy management
tool. You'll also need docker for building images.
The server side is compiled as one binary ("fission-bundle") which
contains controller, poolmgr and router; it invokes the right one
based on command-line arguments.
To build fission-bundle: clone this repo, then from the top level
directory:
```
# Get dependencies
$ glide install
# Build fission server and an image
$ pushd fission-bundle
$ ./build.sh
# Edit push.sh to point to your registry
$ $EDITOR push.sh
$ ./push.sh
$ popd
# To install, update fission.yaml to point to your compiled image
$ $EDITOR fission.yaml
$ kubectl create -f fission.yaml
```
If you're changing the CLI:
```
# Build Fission CLI
$ cd fission-cli && go install
```
Status
======
Fission is in early alpha. Don't use it in production just yet, but
play with it and give us feedback!
Performance
===========
The alpha release has focussed on cold-start latency performance. For
requests that don't have a running instance, i.e. a "cold start",
fission has a latency overhead of less than 100 msec for the NodeJS
environment.