Fission — Fast Serverless Functions on Kubernetes
Fission is an open-source serverless framework for Kubernetes that lets developers deploy functions in Python, Go, Node.js, and other languages with sub-second cold starts and no container builds required.
What it is
Fission is an open-source serverless framework that runs on Kubernetes. It lets developers deploy functions in Python, Go, Node.js, Java, and other languages without building container images. Fission maintains pre-warmed containers (environments) that load function code at invocation time, achieving sub-second cold starts.
Fission targets teams running Kubernetes who want serverless capabilities without vendor lock-in. It brings the function-as-a-service model to any Kubernetes cluster, on-premises or cloud.
How it saves time or tokens
Fission eliminates the Docker build step from the deploy cycle. Write a function, upload it, and it runs immediately on your existing Kubernetes cluster. Pre-warmed environments mean cold starts are sub-second instead of the multi-second delays common with container-based serverless. HTTP triggers, message queue triggers (Kafka, NATS), and timer triggers are configured declaratively.
How to use
- Install the Fission CLI and deploy Fission to your Kubernetes cluster.
- Create an environment for your language:
fission env create --name python --image fission/python-env. - Deploy a function:
fission function create --name hello --env python --code hello.py.
Example
# Install Fission CLI
curl -Lo fission https://github.com/fission/fission/releases/latest/download/fission-cli-linux
chmod +x fission && sudo mv fission /usr/local/bin/
# Install on K8s cluster
kubectl create -k 'github.com/fission/fission/crds/v1?ref=v1.20.5'
kubectl create namespace fission
helm install fission fission-charts/fission-all --namespace fission
# Create a Python environment
fission env create --name python --image fission/python-env
# Deploy a function
echo 'def main():
return "Hello from Fission"' > hello.py
fission function create --name hello --env python --code hello.py
# Create HTTP trigger
fission route create --method GET --url /hello --function hello
# Test
curl http://$FISSION_ROUTER/hello
Related on TokRepo
- DevOps Tools — Kubernetes and serverless tools
- Coding AI Tools — Developer deployment tools
Common pitfalls
- Fission requires a running Kubernetes cluster. It is not a standalone serverless platform. If you do not already run Kubernetes, the operational overhead may outweigh the benefits.
- Pre-warmed environments consume cluster resources even when idle. Size your environment pool based on expected concurrency.
- Function dependencies must be baked into the environment image or uploaded as packages. Large dependency sets require custom environment images.
Frequently Asked Questions
Fission maintains pre-warmed container pools (environments) that are already running and ready. When a function is invoked, Fission loads the function code into an existing container rather than starting a new one from scratch.
Fission supports Python, Go, Node.js, Java, .NET, Ruby, PHP, and Perl through official and community environments. You can also create custom environments for any language.
Fission runs on your own Kubernetes cluster, avoiding vendor lock-in and cloud costs. Lambda is fully managed with no infrastructure to maintain. Fission gives you more control; Lambda gives you less operational burden.
Yes. Fission supports HTTP triggers, timer (cron) triggers, message queue triggers (Kafka, NATS), and Kubernetes watch triggers. You configure triggers declaratively via the CLI.
Yes. Fission integrates with Kubernetes HPA (Horizontal Pod Autoscaler) to scale function pods based on request volume. It also supports pool-based scaling for the pre-warmed environment model.
Citations (3)
- Fission GitHub— Fission provides serverless functions on Kubernetes with sub-second cold starts
- Fission Documentation— Fission architecture and environment model
- Fission Official Site— Serverless on Kubernetes patterns
Related on TokRepo
Discussion
Related Assets
Conda — Cross-Platform Package and Environment Manager
Install, update, and manage packages and isolated environments for Python, R, C/C++, and hundreds of other languages from a single tool.
Sphinx — Python Documentation Generator
Generate professional documentation from reStructuredText and Markdown with cross-references, API autodoc, and multiple output formats.
Neutralinojs — Lightweight Cross-Platform Desktop Apps
Build desktop applications with HTML, CSS, and JavaScript using a tiny native runtime instead of bundling Chromium.