Environment Variables
Environment variables used by Fission CLI
Welcome! This guide will get you up and running with Fission on a Kubernetes cluster.
First, let’s ensure you have the Kubernetes CLI and Helm installed and ready along with a Kubernetes Cluster. If you already have Helm, skip ahead to the fission install.
If you don’t have a Kubernetes cluster, here’s a official guide to set one up.
Fission requires Kubernetes 1.19 or higher
Kubectl is a command line interface for running commands against Kubernetes clusters, visit kubectl docs to see how to install it.
Next, ensure you have access to a cluster. Do this by using kubectl to check your Kubernetes version:
kubectl version
Helm is an installer for Kubernetes. If you already use helm, skip to the next section.
If you cannot use Helm, there is an alternative installation method possible; see installing without Helm.
To install helm, first you’ll need the helm CLI. Visit here to see how to install it.
Helm v2 is deprecated, Fission can be installed via Helm v3. You can skip the following and head over Fission installation if you’re using Helm v3.
With 1.15 release,
fission-core
is removed. Please usefission-all
chart for migration.Refer 1.15 release notes for more details.
If you are upgrading Fission, do check upgrade guide
With 1.18 release, fission watches functions created in
defaultNamespace
mentioned helm chart value. If you want to watch additional namespaces, you can mention them viaadditionalFissionNamespaces
helm chart value.Refer 1.18 release notes for more details.
serviceType, routerServiceType can be
NodePort
orLoadBalancer
for external access to Fission in below steps. You can useClusterIP
if you want to access Fission from within the cluster.See Customizing the Chart Before Installing. To see all configurable options with detailed comments:
helm show values fission-charts/fission-all
Checkout Fission on ArtifactHub for chart supported values.
See how to add token to kubeconfig if you’re not able to connect to cluster.
export FISSION_NAMESPACE="fission"
kubectl create namespace $FISSION_NAMESPACE
kubectl create -k "github.com/fission/fission/crds/v1?ref=v1.19.0"
helm repo add fission-charts https://fission.github.io/fission-charts/
helm repo update
helm install --version v1.19.0 --namespace $FISSION_NAMESPACE fission fission-charts/fission-all
export FISSION_NAMESPACE="fission"
kubectl create namespace $FISSION_NAMESPACE
kubectl create -k "github.com/fission/fission/crds/v1?ref=v1.19.0"
helm repo add fission-charts https://fission.github.io/fission-charts/
helm repo update
helm install --version v1.19.0 --namespace $FISSION_NAMESPACE fission \
--set serviceType=NodePort,routerServiceType=NodePort \
fission-charts/fission-all
export FISSION_NAMESPACE="fission"
kubectl create namespace $FISSION_NAMESPACE
kubectl create -k "github.com/fission/fission/crds/v1?ref=v1.19.0"
helm repo add fission-charts https://fission.github.io/fission-charts/
helm repo update
helm install --version v1.19.0 --namespace $FISSION_NAMESPACE fission \
--set serviceType=NodePort,routerServiceType=NodePort,logger.enableSecurityContext=true \
fission-charts/fission-all
export FISSION_NAMESPACE="fission"
kubectl create namespace $FISSION_NAMESPACE
kubectl create -k "github.com/fission/fission/crds/v1?ref=v1.19.0"
helm repo add fission-charts https://fission.github.io/fission-charts/
helm repo update
helm install --version v1.19.0 --namespace $FISSION_NAMESPACE fission \
--set logger.enableSecurityContext=true \
fission-charts/fission-all
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 usehelm
or generate yaml for first withhelm template
command.
Choose one of the following commands to run:
kubectl create -k "github.com/fission/fission/crds/v1?ref=v1.19.0"
export FISSION_NAMESPACE="fission"
kubectl create namespace $FISSION_NAMESPACE
kubectl config set-context --current --namespace=$FISSION_NAMESPACE
kubectl apply -f https://github.com/fission/fission/releases/download/v1.19.0/fission-all-v1.19.0.yaml
kubectl create -k "github.com/fission/fission/crds/v1?ref=v1.19.0"
export FISSION_NAMESPACE="fission"
kubectl create namespace $FISSION_NAMESPACE
kubectl config set-context --current --namespace=$FISSION_NAMESPACE
kubectl apply -f https://github.com/fission/fission/releases/download/v1.19.0/fission-all-v1.19.0-minikube.yaml
kubectl create -k "github.com/fission/fission/crds/v1?ref=v1.19.0"
export FISSION_NAMESPACE="fission"
kubectl create namespace $FISSION_NAMESPACE
kubectl config set-context --current --namespace=$FISSION_NAMESPACE
kubectl apply -f https://github.com/fission/fission/releases/download/v1.19.0/fission-core-v1.19.0-openshift.yaml
Fission CLI helps you to operate Fission. Checkout Fission CLI reference for more.
curl -Lo fission https://github.com/fission/fission/releases/download/v1.19.0/fission-v1.19.0-darwin-amd64 \
&& chmod +x fission && sudo mv fission /usr/local/bin/
curl -Lo fission https://github.com/fission/fission/releases/download/v1.19.0/fission-v1.19.0-linux-amd64 \
&& chmod +x fission && sudo mv fission /usr/local/bin/
nix-env -iA nixos.fission
Once you are done with fission installation, run these commands to make sure fission is installed successfully and all core components of fission are working properly.
To check fission is installed successfully, run this command and verify both client and server version should be same.
$ fission version
client:
fission/core:
BuildDate: "2023-01-25T04:56:25Z"
GitCommit: deb3523
Version: v1.19.0
server:
fission/core:
BuildDate: "2023-01-25T04:53:33Z"
GitCommit: deb3523
Version: v1.19.0
To check fission core components are working properly, run this command.
$ fission check
fission-services
--------------------
√ executor is running fine
√ router is running fine
√ storagesvc is running fine
√ webhook is running fine
fission-version
--------------------
√ fission is up-to-date
If you have enabled authentication while installing fission, mentioned above commands won’t show proper result. You need to generate token to make it work.
See How to generate auth token, if authentication is enabled.
Finally, you’re ready to use Fission!
It might take one or two mintues for fission to start running. check the status using kubectl get pods -n fission
.
Ensure that functions are created within the specified namespaces: either the
defaultNamespace
or any listed inadditionalFissionNamespaces
from the Helm chart values.To verify the namespaces the executor is monitoring, inspect the
FISSION_RESOURCE_NAMESPACES
environment variable using the following command:kubectl get deployment executor -n fission -o yaml | grep -A 2 FISSION
You can pass--namespace
or-n
flag tofission
CLI to specify the namespace for the function or environment.
# Add the stock NodeJS env to your Fission deployment
$ fission env create --name nodejs --image fission/node-env
# A javascript function that prints "hello world"
$ curl -LO https://raw.githubusercontent.com/fission/examples/main/nodejs/hello.js
# Upload your function code to fission
$ fission function create --name hello-js --env nodejs --code hello.js
# Test your function. This takes about 100msec the first time.
$ fission function test --name hello-js
Hello, world!
# Add the stock Python env to your Fission deployment
$ fission env create --name python --image fission/python-env
# A Python function that prints "hello world"
$ curl -LO https://raw.githubusercontent.com/fission/examples/main/python/hello.py
# Upload your function code to fission
$ fission function create --name hello-py --env python --code hello.py
# Test your function. This takes about 100msec the first time.
$ fission function test --name hello-py
Hello, world!
# Add the stock Go env to your Fission deployment
$ fission env create --name go --image fission/go-env-1.16 --builder fission/go-builder-1.16
# A Go function that prints "hello world"
$ curl -LO https://raw.githubusercontent.com/fission/examples/main/go/hello-world/hello.go
# Upload your function code to fission
$ fission function create --name hello-go --env go --src hello.go --entrypoint Handler
# Wait for your source code to be built, package status should be succeeded. This may take a few minutes.
$ fission pkg list | grep hello-go
hello-go-8bb933b5-b12b-499b-a951-ee2245c8f1b5 succeeded go 23 Nov 21 10:55 IST
# Test your function. This takes about 100msec the first time.
$ fission function test --name hello-go
Hello, world!
# Add the stock Java env to your Fission deployment
$ fission environment create --name java --image fission/jvm-env --builder fission/jvm-builder --keeparchive --version 3
# A Java function that prints "hello world"
$ mkdir -p src/main/java/io/fission/
$ curl -L https://raw.githubusercontent.com/fission/examples/main/java/hello-world/src/main/java/io/fission/HelloWorld.java \
-o src/main/java/io/fission/HelloWorld.java
# pom.xml contains dependencies for the function.
$ curl -LO https://raw.githubusercontent.com/fission/environments/master/jvm/examples/java/pom.xml
# Upload your function code to fission via zip
$ zip java-src-pkg.zip -r src/ pom.xml
$ fission package create --name hello-pkg --env java --src java-src-pkg.zip
Package 'hello-pkg' created
# Wait for your source code to be built, package status should be succeeded. This may take a few minutes.
$ fission pkg list | grep hello-pkg
hello-pkg succeeded java 23 Nov 21 11:19 IST
# Test your function. This takes about 100msec the first time.
$ fission function create --name hello-java --env java --pkg hello-pkg --entrypoint io.fission.HelloWorld
$ fission function test --name hello-java
Hello World!
For more language tutorials, visit Language.
If something went wrong, we’d love to help – please drop by the Fission slack and ask for help.
Check out the examples for some example functions.
Environment variables used by Fission CLI
Installation guide for offline on-premise.
Docker Desktop specific setup
OpenShift specific setup
Guide to set up basic authentication with Fission
Advanced setup guide for Fission installation
Upgrade guidance 1.13 onwards
Fission Compatibility with environments, Keda and Keda Connectors
Uninstallation guide for Fission