- Docker running
- Kind installed (
choco install kindor download from https://kind.sigs.k8s.io/) - kubectl installed
cd QueueFlow
kind create cluster --name queueflow-test --config kind-config.yaml# Build the image
docker build -t queueflow:latest .
# Load into Kind cluster
kind load docker-image queueflow:latest --name queueflow-testkubectl apply -f k8s/deployment.yaml -f k8s/service.yaml
# Wait for it to be ready
kubectl wait --for=condition=ready pod -l app=queueflow --timeout=60s# Port forward to access locally
kubectl port-forward svc/queueflow 3000:3000
# In another terminal:
curl http://localhost:3000/healthzInvoke-WebRequest -Method POST -Uri "http://localhost:3000/prioritize" `
-ContentType "application/json" `
-Body '{"pod":{"metadata":{"name":"test","labels":{"jobType":"short"}}},"nodes":{"items":[{"metadata":{"name":"node-1"},"status":{"allocatable":{"cpu":"500m"}}}]}}'curl http://localhost:3000/metrics | grep queueflowExpected output:
queueflow_requests_total{job_type="short"} 1
queueflow_nodes_scored_total 1
queueflow_node_score{job_type="short",node="node-1"} 95
kubectl apply -f k8s/prometheus.yaml -f k8s/grafana.yaml
kubectl wait --for=condition=ready pod -l app=prometheus --timeout=60s
kubectl wait --for=condition=ready pod -l app=grafana --timeout=60s# Terminal 1: Prometheus
kubectl port-forward svc/prometheus 9090:9090
# Terminal 2: Grafana
kubectl port-forward svc/grafana 3001:3001- Prometheus: http://localhost:9090
- Grafana: http://localhost:3001 (admin/admin)
- Go to Connections → Data Sources → Add Prometheus
- Set URL:
http://prometheus:9090 - Click Save & Test
kubectl logs -f deployment/queueflowkind delete cluster --name queueflow-testNote: Full scheduler extender integration requires patching the kube-scheduler config, which is complex in Kind. The steps above test that QueueFlow deploys and responds correctly.