Installing Fission

Installation guide for Fission installation

Welcome! This guide will get you up and running with Fission on a Kubernetes cluster.

Cluster preliminaries

First, let’s ensure you have the Kubernetes CLI and Helm installed and ready. If you already have helm, skip ahead to the fission install.

If you cannot (or don’t want to) use Helm, there is an alternative installation method possible; see installing without Helm.

Kubernetes Cluster

If you don’t have a Kubernetes cluster, here’s a official guide to set one up.

Fission requires Kubernetes 1.9 or higher

Kubectl

Kubectl is a command line interface for running commands against Kubernetes clusters, visit here to see how to install it.

See how to setup config correctly on different platforms Next, ensure you have access to a cluster. Do this by using kubectl to check your Kubernetes version:

$ kubectl version

Helm

Helm is an installer for Kubernetes. If you already use helm, skip to the next section.

To install helm, first you’ll need the helm CLI. Visit here to see how to install it.

Next, install the Helm server on your Kubernetes cluster. Before you do that, you have to give helm’s server privileges to install software on your cluster.

For example, you can use the following steps to install helm using a dedicated service account with full cluster admin privileges.

$ kubectl create serviceaccount --namespace kube-system tiller

$ kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller

$ helm init --service-account tiller

Or, if your cluster is already set up with a permissive service account (this varies by version and how your Kubernetes was installed), you can simply do:

$ helm init

Install Fission

What version should I use: All vs Core

  • fission-all (Recommend)

    • Install a full set of services including the NATS message queue, influxDB for logs, etc. and enable all Fission features. It’s suitable for people who want to try all the cool features Fission has and for companies that use features that don’t include in the core version.
  • fission-core

    • Install core components for creating and serving a function.

Following, we will use fission-all to demonstrate how to install Fission.

List of all supported configurations for the charts fission-all and fission-core can be found here.

With Helm

Minikube, Docker Desktop

Prometheus operator doesn’t work on Kubernetes 1.16. You have to disable it when using helm to install Fission. See issue.

Disable prometheus deployment before the prometheus operator gets fixed.

$ helm install --name fission --namespace fission \
    --set serviceType=NodePort,routerServiceType=NodePort,prometheusDeploy=false \
    https://github.com/fission/fission/releases/download/1.6.0/fission-all-1.6.0.tgz
$ helm install --name fission --namespace fission \
    --set serviceType=NodePort,routerServiceType=NodePort \
    https://github.com/fission/fission/releases/download/1.6.0/fission-all-1.6.0.tgz

The serviceType variable allows configuring the type of Kubernetes service outside the cluster. You can use ClusterIP if you don’t want to expose anything outside the cluster.

Cloud Hosted Clusters

Prometheus operator doesn’t work on Kubernetes 1.16. You have to disable it when using helm to install Fission. See issue.

Disable prometheus deployment before the prometheus operator gets fixed.

$ helm install --name fission --namespace fission --set prometheusDeploy=false \
    https://github.com/fission/fission/releases/download/1.6.0/fission-all-1.6.0.tgz
$ helm install --name fission --namespace fission \
    https://github.com/fission/fission/releases/download/1.6.0/fission-all-1.6.0.tgz

Without helm

  • Prometheus operator doesn’t work on Kubernetes 1.16. So this alternative method may not work on kubernetes 1.16 for now. Please use helm before the problem gets fixed. See issue.

This method uses kubectl apply to install Fission. You can edit the YAML file before applying it to your cluster, if you want to change anything in it. Create namespace for fission installation.

$ kubectl create namespace fission 
  • If you want to install in another namespace, please consider to use helm.

Choose one of the following commands to run:

Next, install the Fission CLI.

Install Fission CLI

$ curl -Lo fission https://github.com/fission/fission/releases/download/1.6.0/fission-cli-osx \
    && chmod +x fission && sudo mv fission /usr/local/bin/
$ curl -Lo fission https://github.com/fission/fission/releases/download/1.6.0/fission-cli-linux \
    && chmod +x fission && sudo mv fission /usr/local/bin/
For Windows, you can use the linux binary on WSL. Or you can download this windows executable: fission.exe

Run an example

Finally, you’re ready to use Fission!

$ fission env create --name nodejs --image fission/node-env:1.6.0

$ curl -LO https://raw.githubusercontent.com/fission/fission/master/examples/nodejs/hello.js

$ fission function create --name hello --env nodejs --code hello.js

$ fission function test --name hello
Hello, world!

For more language tutorials, visit Language.

What’s next?

If something went wrong, we’d love to help – please drop by the slack channel and ask for help.

Check out the examples for some example functions.


Advanced Setup

Advanced setup guide for Fission installation

Upgrading Fission

Upgrade guide for Fission installation

Environment Variables

Environment variables used by Fission CLI

Trouble Shooting

Debug with your Fission setup

Offline On-Premise

Installation guide for offline on-premise.

Docker Desktop

Docker Desktop specific setup

Last modified October 28, 2019: Fix broken link (6d22d99)