Tooling

Kubernetes Dev Loop

Tilt, Skaffold, Devspace — making "save → see it on the cluster" fast.

The inner loop for working on k8s apps. Without these, you're rebuilding images and kubectl applying manually. Slow.

The candidates

  • TiltTiltfile (Starlark) describes services + watches; live-update for fast iteration; great UI. Default for serious dev workflows.
  • Skaffold (Google) — same niche; YAML-driven; works well with Helm / Kustomize.
  • Devspace — competitor; nice DX; sync + port-forward + run-in-pod.
  • Garden — focused on monorepos / microservices; commercial extras.
  • Okteto — cloud dev environments; pricier but very polished.
  • Telepresence / mirrord — proxy a single local service into a remote cluster; useful as a complement, not replacement.

What they actually do

  1. Watch source files.
  2. Rebuild image (or do kubectl cp for live-update).
  3. Push to a local registry / load into kind / k3d.
  4. Apply manifests / Helm / Kustomize.
  5. Port-forward / log-tail.
  6. Show a UI of what's running and where.

A typical workflow:

  • Save a file.
  • Tilt rebuilds image (or syncs file directly into pod for fast paths).
  • Pod restarts.
  • Logs stream.
  • Hot loop: 5–15 seconds for most apps, sub-second for live-update paths.

Live update vs. image rebuild

  • Image rebuild — full Docker build; clean but slow.
  • Live updatekubectl cp + restart process inside the pod; very fast for interpreted languages (Node / Python).
  • Use live-update for dev loops; switch to image rebuild for staging / CI.

Local cluster + this combo

  • kind / k3d / minikube — see Local Kubernetes.
  • Tilt + kind + a local registry is the canonical combo.

Patterns to adopt

  • Local cluster + dev loop tool, not "deploy to dev k8s in the cloud." Faster, cheaper, no waiting for builds.
  • Local registrylocalhost:5000 or k3d's built-in registry.
  • Tilt extensions for common needs (port-forward, restart on crash, etc.).
  • Profiles — different configs for "just frontend" vs. "full stack."
  • Don't run prod manifests locally as-is. Use overlays / dev values.

Telepresence / mirrord patterns

  • Sometimes you want to debug against real cluster state. Run your one service locally, route its calls into the remote cluster, get real DB / dependencies.
  • mirrord is the modern, simpler choice; Telepresence is more capable.

Pick this if…

  • Default new dev loop: Tilt.
  • Already on Skaffold: stay; it works.
  • Want cloud dev environments managed: Okteto.
  • Local + remote-dependency debugging: mirrord.
  • Monorepo with many services: Garden or Tilt with multi-repo support.

On this page