Skip to content

DevPod + Hetzner Contributor Workspace

Use this guide when you contribute to Floe and need a remote workspace for heavyweight E2E, integration, demo, or release-validation runs.

This is not the primary Floe product deployment model. Platform Engineers deploy Floe to Kubernetes using manifests, Helm, and their chosen cluster provider.

  • DevPod CLI installed locally.
  • Hetzner provider configured with make devpod-setup.
  • A reachable DevPod workspace from make devpod-up.
  • kubectl installed locally.

The lifecycle is explicit: make devpod-up creates or starts the workspace, make devpod-sync copies and rewrites kubeconfig for local access, make devpod-status reports workspace/tunnel/cluster health, make devpod-stop stops the workspace while preserving its disk, and make devpod-delete removes the workspace when you want billing to stop.

Terminal window
make devpod-setup
make devpod-up
make devpod-sync
make devpod-status

Verify kubeconfig after sync:

Terminal window
export KUBECONFIG="${DEVPOD_KUBECONFIG:-$HOME/.kube/devpod-${DEVPOD_WORKSPACE:-floe}.config}"
kubectl cluster-info
kubectl get pods -n floe-dev
CheckHealthy patternIf unhealthy
Workspacedevpod status reports the workspace as runningRun make devpod-up and check source resolution errors
Kubeconfigmake devpod-sync writes ~/.kube/devpod-floe.config or DEVPOD_KUBECONFIGConfirm workspace is running and inspect ~/.kube/devpod-ssh.log
Clusterkubectl cluster-info succeeds with the synced kubeconfigRe-run make devpod-sync; check tunnel port 26443
Manual tunnelsmake devpod-tunnels reports forwarded localhost portsStop conflicting forwards or use make demo-stop

make devpod-status prints three sections:

=== Workspace Status ===
=== Tunnel Status ===
=== Cluster Health ===

make demo owns the automated Customer 360 demo port-forwards while the demo runs and records them in .demo-pids. Use make demo-stop to stop those forwards.

Use make devpod-tunnels only for manual UI inspection outside the automated demo flow. Do not run it at the same time as make demo unless you intentionally want to reuse or inspect already-open local ports.

Manual tunnel commands:

Terminal window
make devpod-tunnels
make devpod-status
  • Workspace unreachable: run make devpod-status, then make devpod-up if the workspace is stopped.
  • Wrong cluster: export the kubeconfig shown by make devpod-sync and retry kubectl cluster-info.
  • Port in use: run make demo-stop, then make devpod-status; if needed, stop manual tunnels with scripts/devpod-tunnels.sh --kill.

Stop the workspace but keep its disk:

Terminal window
make devpod-stop

Delete the workspace and stop workspace billing:

Terminal window
make devpod-delete