How googlecontainertools/skaffold works
Skaffold is a client-side Kubernetes development and deployment CLI. Its principal workflow loads project configuration, watches source changes, builds and tags images, pushes them when needed, renders manifests, and deploys to a cluster; dev mode adds logs and port forwarding for feedback. The map also captures documented init, render, verification, and diagnostic capabilities. README documents the workflow, while sampled implementation excerpts are limited, so some subsystem connections are shown only where the workflow is explicit.
Main entry points: runner.go Workflow runner · commands.go Skaffold CLI · loader.go Config loader · config.go Config parser
Components 24
CLI and configuration
- Skaffold CLI
cmd/skaffold/app/cmd/commands.go - Config loader
pkg/skaffold/loader/loader.go - Config parser
pkg/skaffold/parser/config.go - Config schemas
pkg/skaffold/schema/latest/config.go
Development workflow
- Workflow runner
pkg/skaffold/runner/runner.go - Source watcher
pkg/skaffold/filemon/monitor.go - Image building
pkg/skaffold/runner/build.go - Image tagging
pkg/skaffold/tag/tag.go - Manifest rendering
pkg/skaffold/runner/render.go - Render backends
pkg/skaffold/render/renderer/render_mux.go
Cluster runtime
- Deployment
pkg/skaffold/runner/deploy.go - Deploy backends
pkg/skaffold/deploy/deploy_mux.go - Resource status
pkg/skaffold/kubernetes/status/status_check.go - Log streaming
pkg/skaffold/log/stream/stream.go - Port forwarding
pkg/skaffold/kubernetes/portforward/forwarder_manager.go - Debug transforms
pkg/skaffold/debug/debug.go
Project tools
- Project initializer
pkg/skaffold/initializer/init.go - Verification
pkg/skaffold/runner/verify.go - Diagnostics
pkg/skaffold/diagnose/diagnose.go - Configuration lint
pkg/skaffold/lint/lint.go - Config inspection
pkg/skaffold/inspect/helper.go
Other components
- Developer
- Image registry
- Kubernetes cluster
Connections 23
- Developer → Skaffold CLI: runs commands
- Skaffold CLI → Config loader: loads config
- Config loader → Config parser: parses files
- Config parser → Config schemas: validates against
- Skaffold CLI → Workflow runner: starts workflow
- Workflow runner → Source watcher: watches source
- Workflow runner → Image building: builds images
- Workflow runner → Image tagging: tags images
- Workflow runner → Image registry: pushes images
- Workflow runner → Manifest rendering: renders manifests
- Manifest rendering → Render backends: selects backend
- Workflow runner → Deployment: deploys resources
- Deployment → Deploy backends: selects backend
- Deploy backends → Kubernetes cluster: applies resources
- Workflow runner → Resource status: checks resources
- Workflow runner → Log streaming: streams logs
- Workflow runner → Port forwarding: starts forwarding
- Workflow runner → Debug transforms: configures debugging
- Skaffold CLI → Project initializer: initializes project
- Skaffold CLI → Verification: runs verification
- Skaffold CLI → Diagnostics: runs diagnostics
- Skaffold CLI → Configuration lint: lints configuration
- Skaffold CLI → Config inspection: inspects configuration