Flusso is an open-source, high-performance Ingress Controller for Kubernetes, built in Rust. Designed to provide a lightweight, secure, and scalable alternative to popular ingress solutions like Traefik and NGINX, Flusso delivers optimized performance and efficient load balancing tailored for cloud-native environments.
- Lightweight and Fast: Written in Rust, offering high performance and low memory and CPU consumption.
- Advanced Load Balancing: Flusso supports custom load balancing algorithms for optimized traffic distribution.
- Secure by Design: Implements modern TLS protocols with Rustls for enhanced security.
- Dynamic Backends: Automatically updates routing based on Kubernetes service changes.
- Flexible Configuration: Easily configurable via YAML files or environment variables.
- Minimal Dependencies: Avoids unnecessary dependencies for lightweight container images.
To get started with Flusso, you can use either Docker or Helm to deploy the Ingress Controller in your Kubernetes cluster.
-
Pull the Docker image:
docker pull diocrafts/flusso-ingress-controller:latest
-
Run the Docker container:
docker run -p 8080:8080 -p 8081:8081 -e SERVER_ADDR="0.0.0.0:8080" -e TLS_ENABLED="true" diocrafts/flusso-ingress-controller
-
Add your Helm repository (if not added yet):
helm repo add your-repo https://your-helm-repo.com/charts
-
Install Flusso Ingress Controller:
helm install flusso-ingress your-repo/flusso-ingress
For more configuration options, refer to the values.yaml.
Flusso supports several configuration options, both via environment variables and Helm chart values. Here are the key parameters:
- SERVER_ADDR: Define the address where the Ingress Controller will listen. Default is
0.0.0.0:8080. - TLS_ENABLED: Enable or disable TLS (default is
true). - TLS_CERT_PATH / TLS_KEY_PATH: Paths to TLS certificate and key files.
replicaCount: 1
image:
repository: diocrafts/flusso-ingress-controller
tag: latest
pullPolicy: IfNotPresent
serviceAccount:
create: true
name: flusso-ingress
service:
type: NodePort
port: 80
targetPort: 8080
env:
TLS_ENABLED: "true"
SERVER_ADDR: "0.0.0.0:8080"Flusso automatically routes incoming traffic to Kubernetes services defined by Ingress resources. Add an Ingress rule to direct traffic to your applications.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-ingress
spec:
ingressClassName: flusso
rules:
- host: example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: example-service
port:
number: 80Flusso exposes a built-in web GUI accessible at http://<controller-ip>:8081, providing insights into active backends and routing information.
Flusso is designed to work seamlessly in Kubernetes as an Ingress Controller.
- Kubernetes version 1.19 or higher
- Helm version 3 or higher
-
Enable the
metrics-serveron Minikube (optional but recommended):minikube addons enable metrics-server -
Deploy Flusso with Helm:
helm install flusso-ingress your-repo/flusso-ingress
-
Check pod and service status:
kubectl get pods -A kubectl get svc -A
We welcome contributions to make Flusso even better! If you have suggestions for improvements, open a GitHub issue or submit a pull request. Please refer to our Contributing Guide for more details.
Flusso is licensed under the MIT License.
- Website: Your Website
- GitHub: GitHub Repository
- Docker Hub: Docker Hub Repository
For further support, reach out via GitHub issues or visit our community forums.
Flusso aims to be the next generation Ingress Controller for Kubernetes clusters, offering a streamlined, secure, and high-performance solution built in Rust. Join the movement and contribute today!