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.)
Heads up
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, or OAuth redirects and cookies break.
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.