Local clusters (k3d · kind · minikube)
Try the Helm chart on a throwaway local Kubernetes cluster with bundled Postgres + Garage.
No cloud? Stand up a throwaway local cluster and install the chart with bundled Postgres + Garage on a NodePort. (Or just run Docker Compose - simpler for a single node.)
Bundled Postgres/Garage are evaluation only - for real data, use external, backed-up datastores and real secrets.
k3d
k3d can map a host port onto a NodePort, so localhost:8080 works directly:
k3d cluster create eddytor -p "8080:30080@server:0"
kubectl create namespace eddytor
kubectl -n eddytor create secret generic eddytor-secrets \
--from-literal=EDDYTOR_DATABASE_URL="postgres://eddytor:eddytor@eddytor-postgres:5432/eddytor" \
--from-literal=EDDYTOR_ENCRYPTION_KEY="$(openssl rand -base64 32)" \
--from-literal=EDDYTOR_API_KEY_SECRET="$(openssl rand -base64 32)"
helm install eddytor oci://ghcr.io/nordalf/charts/eddytor -n eddytor \
--set secrets.existingSecret=eddytor-secrets \
--set postgres.bundled=true --set garage.bundled=true \
--set server.service.type=NodePort --set server.service.nodePort=30080
# server reachable at http://localhost:8080The -p "8080:30080@server:0" flag is a k3d feature - it's what maps the
host's localhost:8080 onto the NodePort.
minikube
minikube does not surface NodePorts on localhost, so use port-forward
(the only path on the default docker driver). Reuse the same secret + bundled
flags as k3d, then:
helm install eddytor oci://ghcr.io/nordalf/charts/eddytor -n eddytor \
--set secrets.existingSecret=eddytor-secrets \
--set postgres.bundled=true --set garage.bundled=true --set ui.enabled=true
kubectl -n eddytor port-forward svc/eddytor-server 8080:8080 &
kubectl -n eddytor port-forward svc/eddytor-ui 3000:3000 & # if ui.enabled
# server → http://localhost:8080, UI → http://localhost:3000Heads up
docker driver (default on macOS/Windows),
minikube ip is an address inside the Docker VM that your browser can't route
to - so NodePort URLs won't work and kubectl port-forward is the reliable path.
Option 2 (pointing config at $(minikube ip) NodePorts) only fits Linux
docker/none or VM drivers whose node IP the host can reach.kind / Docker Desktop
Same pattern - install with bundled Postgres + Garage, then kubectl port-forward svc/eddytor-server 8080:8080. Set config.publicUrl to the
address your browser actually hits.
Bulk queries (Flight SQL)
eddytor query uses Flight SQL on server port 8082, which stays ClusterIP -
port-forward it and point the CLI at it:
kubectl -n eddytor port-forward svc/eddytor-server 8082:8082 &
eddytor config set-flight-url http://localhost:8082Verify + first admin
Same as any cluster - see
Install the chart (verify, first
admin). helm install … --set garage.bundled=true prints these commands in its
NOTES.