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.
Prerequisites
Section titled “Prerequisites”- DevPod CLI installed locally.
- Hetzner provider configured with
make devpod-setup. - A reachable DevPod workspace from
make devpod-up. kubectlinstalled locally.
What This Does
Section titled “What This Does”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.
make devpod-setupmake devpod-upmake devpod-syncmake devpod-statusVerify kubeconfig after sync:
export KUBECONFIG="${DEVPOD_KUBECONFIG:-$HOME/.kube/devpod-${DEVPOD_WORKSPACE:-floe}.config}"kubectl cluster-infokubectl get pods -n floe-devExpected Output
Section titled “Expected Output”| Check | Healthy pattern | If unhealthy |
|---|---|---|
| Workspace | devpod status reports the workspace as running | Run make devpod-up and check source resolution errors |
| Kubeconfig | make devpod-sync writes ~/.kube/devpod-floe.config or DEVPOD_KUBECONFIG | Confirm workspace is running and inspect ~/.kube/devpod-ssh.log |
| Cluster | kubectl cluster-info succeeds with the synced kubeconfig | Re-run make devpod-sync; check tunnel port 26443 |
| Manual tunnels | make devpod-tunnels reports forwarded localhost ports | Stop conflicting forwards or use make demo-stop |
make devpod-status prints three sections:
=== Workspace Status ====== Tunnel Status ====== Cluster Health ===Port-Forward Ownership
Section titled “Port-Forward Ownership”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:
make devpod-tunnelsmake devpod-statusTroubleshooting
Section titled “Troubleshooting”- Workspace unreachable: run
make devpod-status, thenmake devpod-upif the workspace is stopped. - Wrong cluster: export the kubeconfig shown by
make devpod-syncand retrykubectl cluster-info. - Port in use: run
make demo-stop, thenmake devpod-status; if needed, stop manual tunnels withscripts/devpod-tunnels.sh --kill.
Cleanup
Section titled “Cleanup”Stop the workspace but keep its disk:
make devpod-stopDelete the workspace and stop workspace billing:
make devpod-delete