GlassFlow on Kubernetes using Helm
This guide will walk you through the process of installing GlassFlow on Kubernetes using Helm.
- The official Helm chart is available at github.com/glassflow/charts .
- The current Helm deployment does not expose GlassFlow to the internet by default. You must use
kubectl port-forwardto access the UI or API. - To expose GlassFlow externally (e.g., via a domain), you must configure ingress in your
values.yaml. See the Ingress Setup Guide for complete instructions.
Prerequisites
- A running Kubernetes cluster
- Helm installed
- kubectl for interacting with your cluster (e.g., port forwarding the UI)
Installation
Add the GlassFlow Helm repository:
helm repo add glassflow https://glassflow.github.io/chartsUpdate the Helm repository:
helm repo updateInstall the GlassFlow Helm chart
helm install glassflow glassflow/glassflow-etl --create-namespace --namespace glassflowThis installs the GlassFlow Helm chart into the glassflow namespace. The --create-namespace flag ensures the namespace is created if it doesn’t already exist.
By default, the deployment is not publicly accessible. To expose it, you must configure ingress settings in your values.yaml. You can use the default template as a starting point:
glassflow-etl values.yaml
Verify that the installation is successful
helm list -n glassflowThe output should look like this:
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
glassflow glassflow 1 2025-09-03 15:07:47.125128 +0200 CEST deployed glassflow-etl-0.2.0 2.0.0 To check the services that were deployed:
kubectl get svc -n glassflowThe output should look like this:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
glassflow-api ClusterIP 10.96.252.167 <none> 8081/TCP 3m37s
glassflow-nats ClusterIP 10.96.157.112 <none> 4222/TCP 3m37s
glassflow-nats-headless ClusterIP None <none> 4222/TCP,6222/TCP,8222/TCP 3m37s
glassflow-otel-collector ClusterIP 10.96.223.30 <none> 4317/TCP,4318/TCP,9090/TCP 3m37s
glassflow-postgresql ClusterIP 10.96.217.168 <none> 5432/TCP 3m37s
glassflow-prometheus-nats-exporter ClusterIP 10.96.7.124 <none> 80/TCP 3m37s
glassflow-ui ClusterIP 10.96.10.81 <none> 8080/TCP 3m37sList the pods that were deployed:
kubectl get pods -n glassflowThe output should look like this:
kubectl get pods -n glassflow
NAME READY STATUS RESTARTS AGE
glassflow-api-7445c785b5-2wgq2 1/1 Running 0 3m22s
glassflow-controller-manager-d8bb98457-nfqss 0/1 Init:0/2 0 3m22s
glassflow-glassflow-etl-migration-1-7czwz 0/1 Completed 0 3m22s
glassflow-nats-0 2/2 Running 0 3m22s
glassflow-nats-1 2/2 Running 0 3m22s
glassflow-nats-2 2/2 Running 0 3m22s
glassflow-nats-box-5b49b6ff96-tk96l 1/1 Running 0 3m22s
glassflow-otel-collector-5c94d868d9-g6mt9 1/1 Running 0 3m22s
glassflow-postgresql-0 1/1 Running 0 3m22s
glassflow-prometheus-nats-exporter-6fdd55688-cfwgw 1/1 Running 0 3m22s
glassflow-ui-d9b777bcf-lszfz 2/2 Running 0 3m22sPort forward the UI service
Port forward the UI service to your local machine to access the web interface:
kubectl port-forward service/glassflow-ui 8080:8080 -n glassflowThe GlassFlow UI service runs on port 8080. The command above forwards it to your local machine on the same port. If you’d prefer a different local port, simply adjust the command accordingly.
Access the API
To access the API, you can port forward the API service to your local machine:
kubectl port-forward service/glassflow-api 8081:8081 -n glassflowThe GlassFlow API service runs on port 8081. The command above forwards it to port 8081 on your machine. You can modify this port if needed.
Go to GlassFlow UI
Open http://localhost:8080 in your browser to access the GlassFlow UI. You can now start creating pipelines. For help with your first pipeline, see the Usage Guide.
Exposing GlassFlow externally
By default, GlassFlow is only accessible within your Kubernetes cluster. To expose it externally, you need to configure ingress.
For complete ingress setup instructions including NGINX ingress controller installation, TLS configuration, and troubleshooting, see the comprehensive Ingress Setup Guide.
Quick Ingress Configuration
For a basic ingress setup using Helm values, create a values.yaml file:
ingress:
enabled: true
ingressClassName: "nginx" # Requires NGINX ingress controller
hosts:
- host: "glassflow.example.com" # Replace with your domain
paths:
- path: "/"
pathType: Prefix
serviceName: "glassflow-ui"
servicePort: 8080
- path: "/api/v1"
pathType: Prefix
serviceName: "glassflow-api"
servicePort: 8081Apply the configuration:
helm upgrade glassflow glassflow/glassflow-etl -f values.yaml --namespace glassflowThis basic configuration provides HTTP access only. For production deployments with HTTPS, automatic certificate management, and advanced configurations, follow the Ingress Setup Guide.
Getting Help
If you encounter any issues during installation: