Skaffold — Fast Kubernetes Development Workflow from Google
Skaffold handles the inner-loop build-push-deploy cycle for Kubernetes apps. Edit code, and Skaffold rebuilds images, updates manifests, and redeploys to a cluster in seconds — ideal for local dev and CI/CD.
What it is
Skaffold is a command-line tool from Google that automates the inner development loop for Kubernetes applications. When you edit code, Skaffold detects the change, rebuilds the container image, pushes it (or sideloads it to a local cluster), updates Kubernetes manifests, and redeploys — all in seconds.
It targets developers building microservices on Kubernetes who are tired of manually running docker build, docker push, and kubectl apply after every code change.
How it saves time or tokens
Skaffold eliminates the manual build-push-deploy cycle that typically takes minutes per iteration. Its file sync feature can copy changed files directly into running pods without rebuilding the entire image. Combined with smart caching and incremental builds, Skaffold reduces the feedback loop from minutes to seconds.
How to use
- Install Skaffold via Homebrew or the official binary release.
- Run
skaffold initin a project directory that has a Dockerfile and Kubernetes manifests. This generates askaffold.yamlconfiguration. - Run
skaffold devto start the continuous development loop. Skaffold watches files, rebuilds on change, redeploys, and streams logs.
Example
# skaffold.yaml
apiVersion: skaffold/v4beta11
kind: Config
build:
artifacts:
- image: myapp
docker:
dockerfile: Dockerfile
deploy:
kubectl:
manifests:
- k8s/*.yaml
# Start continuous dev loop
skaffold dev
# Or one-shot deploy
skaffold run
Related on TokRepo
- DevOps tools — CI/CD and infrastructure automation
- Automation tools — workflow automation for developers
Common pitfalls
- Skaffold works with any builder (Docker, Buildpacks, Jib, Kaniko) but the default is Docker. If your cluster cannot pull from a local registry, configure Skaffold to use a remote registry or sideload images directly.
- File sync only works for interpreted languages (Python, Node.js) where restarting the process picks up changes. Compiled languages (Go, Java) still require a full rebuild.
- Skaffold profiles let you configure different behaviors for dev vs. staging vs. production, but mixing profiles with Helm values files can create confusing override chains.
Frequently Asked Questions
Yes. Skaffold supports kubectl, Helm, and Kustomize as deployers. You configure the deployer in skaffold.yaml and Skaffold handles rendering manifests and applying them to the cluster. You can even chain multiple deployers in a single config.
Yes. Skaffold works with any Kubernetes cluster your kubeconfig points to, including GKE, EKS, AKS, and self-managed clusters. For remote clusters, configure a container registry that the cluster can pull from.
Both automate Kubernetes inner-loop development. Skaffold uses a declarative YAML config and runs as a CLI. Tilt uses a Starlark-based Tiltfile and provides a web dashboard. Skaffold is more CI/CD-friendly; Tilt offers richer real-time UI feedback.
File sync copies changed files directly into a running pod without rebuilding the container image. This is useful for interpreted languages where a file change plus process restart is sufficient. It reduces iteration time from tens of seconds to under a second.
Skaffold is maintained by Google Cloud and is part of the GoogleContainerTools organization. It receives regular releases and is used internally at Google for Kubernetes development workflows.
Citations (3)
- Skaffold GitHub— Skaffold automates the build-push-deploy cycle for Kubernetes
- Skaffold Documentation— Skaffold supports Docker, Buildpacks, Jib, Bazel, and Kaniko builders
- Skaffold File Sync Docs— File sync copies changed files into running pods without image rebuild
Related on TokRepo
Discussion
Related Assets
NAPI-RS — Build Node.js Native Addons in Rust
Write high-performance Node.js native modules in Rust with automatic TypeScript type generation and cross-platform prebuilt binaries.
Mamba — Fast Cross-Platform Package Manager
A drop-in conda replacement written in C++ that resolves environments in seconds instead of minutes.
Plasmo — The Browser Extension Framework
Build, test, and publish browser extensions for Chrome, Firefox, and Edge using React or Vue with hot-reload and automatic manifest generation.