Funnel on Kubernetes is in active development and may involve frequent updates 🚧
Quick Start
1. Deploying with Helm ⚡️
helm repo add ohsu https://ohsu-comp-bio.github.io/helm-charts
helm repo update
helm upgrade --install ohsu funnel
(Alternative) Deploying with kubectl
⚙️
1. Create a Service:
Deploy it:
kubectl apply -f funnel-service.yml
2. Create Funnel config files
Get the clusterIP:
export HOSTNAME=$(kubectl get services funnel --output=jsonpath='{.spec.clusterIP}')
sed -i "s|\${HOSTNAME}|${HOSTNAME}|g" funnel-worker.yaml
3. Create a ConfigMap
kubectl create configmap funnel-config --from-file=funnel-server.yaml --from-file=funnel-worker.yaml
4. Create a Service Account for Funnel
Define a Role and RoleBinding:
kubectl create serviceaccount funnel-sa --namespace default
kubectl apply -f role.yml
kubectl apply -f role_binding.yml
5. Create a Persistent Volume Claim
kubectl apply -f funnel-storage-pvc.yml
6. Create a Deployment
kubectl apply -f funnel-deployment.yml
2. Proxy the Service for local testing
kubectl port-forward service/funnel 8000:8000
Now the funnel server can be accessed as if it were running locally. This can be verified by listing all tasks, which will return an empty JSON list:
funnel task list
# {}
A task can then be submitted following the standard workflow:
funnel examples hello-world > hello-world.json
funnel task create hello-world.json
# <Task ID>
Storage Architecture
