Top Related Projects
Run Kubernetes locally
Define your dev environment as code. For microservice apps on Kubernetes.
Develop your applications directly in your Kubernetes Cluster
DevSpace - The Fastest Developer Tool for Kubernetes ⚡ Automate your deployment workflow with DevSpace and develop software directly inside Kubernetes.
Automation for Kubernetes development and testing. Spin up production-like environments for development, testing, and CI on demand. Use the same configuration and workflows at every step of the process. Speed up your builds and test runs via shared result caching
Define and run multi-container applications with Docker
Quick Overview
Skaffold is an open-source tool developed by Google that facilitates continuous development for Kubernetes applications. It handles the workflow for building, pushing, and deploying applications, allowing developers to focus on writing code without worrying about the complexities of deploying to Kubernetes.
Pros
- Streamlines the development workflow for Kubernetes applications
- Supports multiple programming languages and deployment tools
- Provides real-time feedback and automatic rebuilds/redeploys
- Integrates well with existing CI/CD pipelines
Cons
- Learning curve for developers new to Kubernetes
- May introduce additional complexity for simple projects
- Limited support for non-container-based applications
- Requires careful configuration for optimal performance in large projects
Getting Started
To get started with Skaffold:
-
Install Skaffold:
curl -Lo skaffold https://storage.googleapis.com/skaffold/releases/latest/skaffold-linux-amd64 && \ sudo install skaffold /usr/local/bin/
-
Create a
skaffold.yaml
file in your project root:apiVersion: skaffold/v2beta28 kind: Config build: artifacts: - image: my-app context: . deploy: kubectl: manifests: - k8s-*.yaml
-
Run Skaffold:
skaffold dev
This will start the Skaffold development loop, building and deploying your application to your Kubernetes cluster.
Competitor Comparisons
Run Kubernetes locally
Pros of Minikube
- Provides a full-fledged local Kubernetes environment, including cluster management
- Supports multiple hypervisors and container runtimes
- Offers a dashboard for easy cluster visualization and management
Cons of Minikube
- Heavier resource consumption compared to Skaffold
- Slower startup time and more complex setup process
- Limited to local development and testing, not suitable for production deployments
Code Comparison
Minikube startup:
minikube start
kubectl apply -f deployment.yaml
Skaffold usage:
skaffold init
skaffold dev
Minikube focuses on creating a local Kubernetes cluster, while Skaffold streamlines the development workflow for containerized applications. Minikube is better suited for testing Kubernetes features and configurations, whereas Skaffold excels in rapid iteration and continuous development of applications within a Kubernetes environment.
Skaffold offers faster build and deploy cycles, making it more efficient for day-to-day development tasks. However, Minikube provides a more comprehensive Kubernetes experience, including cluster management features that Skaffold doesn't offer.
Choose Minikube for a complete local Kubernetes environment or when testing cluster-specific features. Opt for Skaffold when prioritizing fast development cycles and seamless integration with existing Kubernetes clusters.
Define your dev environment as code. For microservice apps on Kubernetes.
Pros of Tilt
- More intuitive UI with a web-based dashboard for monitoring and managing resources
- Supports live updates, allowing for faster development cycles without full rebuilds
- Offers a more flexible configuration language (Starlark) for complex setups
Cons of Tilt
- Steeper learning curve due to its unique configuration language
- Less mature ecosystem compared to Skaffold's extensive integrations
- May be overkill for simpler projects or smaller teams
Code Comparison
Tilt configuration (Tiltfile):
docker_build('myapp', '.')
k8s_yaml('k8s/deployment.yaml')
k8s_resource('myapp', port_forwards='8080:8080')
Skaffold configuration (skaffold.yaml):
apiVersion: skaffold/v2beta26
kind: Config
build:
artifacts:
- image: myapp
deploy:
kubectl:
manifests:
- k8s/deployment.yaml
Both tools aim to streamline Kubernetes development workflows, but Tilt focuses more on real-time feedback and interactive development, while Skaffold emphasizes simplicity and integration with existing tools. Tilt's configuration is more expressive, allowing for complex setups, while Skaffold's YAML-based config is more straightforward for simple use cases.
Develop your applications directly in your Kubernetes Cluster
Pros of Okteto
- Provides a complete development environment in Kubernetes, including remote development capabilities
- Offers a more user-friendly interface for developers, with a focus on ease of use
- Includes built-in collaboration features for team development
Cons of Okteto
- Less flexible than Skaffold for custom build and deployment pipelines
- May have a steeper learning curve for users not familiar with Kubernetes concepts
- Limited to Kubernetes environments, while Skaffold supports multiple deployment targets
Code Comparison
Okteto configuration (okteto.yml):
name: myapp
image: okteto/node:14
command: bash
sync:
- .:/usr/src/app
Skaffold configuration (skaffold.yaml):
apiVersion: skaffold/v2beta26
kind: Config
build:
artifacts:
- image: myapp
deploy:
kubectl:
manifests:
- k8s-*
Both tools aim to simplify Kubernetes development, but Okteto focuses on providing a complete development environment, while Skaffold emphasizes flexibility in build and deployment processes. Okteto's configuration is more concise and centered around development, whereas Skaffold's configuration allows for more detailed control over the entire pipeline.
DevSpace - The Fastest Developer Tool for Kubernetes ⚡ Automate your deployment workflow with DevSpace and develop software directly inside Kubernetes.
Pros of DevSpace
- More comprehensive development workflow, including built-in hot reloading and remote development capabilities
- Offers a user-friendly UI for managing Kubernetes deployments and debugging
- Provides advanced image building strategies, including kaniko for in-cluster builds
Cons of DevSpace
- Steeper learning curve due to more complex configuration options
- Less widespread adoption compared to Skaffold, potentially leading to a smaller community and fewer resources
Code Comparison
DevSpace configuration example:
images:
backend:
image: myregistry.com/backend
build:
dockerfile: ./Dockerfile
deployments:
- name: backend
helm:
chart:
name: ./charts/backend
Skaffold configuration example:
build:
artifacts:
- image: myregistry.com/backend
docker:
dockerfile: Dockerfile
deploy:
helm:
releases:
- name: backend
chartPath: ./charts/backend
Both tools use YAML for configuration, but DevSpace offers more granular control over image building and deployment processes. Skaffold's configuration is generally simpler and more straightforward, which can be beneficial for smaller projects or teams new to Kubernetes development workflows.
Automation for Kubernetes development and testing. Spin up production-like environments for development, testing, and CI on demand. Use the same configuration and workflows at every step of the process. Speed up your builds and test runs via shared result caching
Pros of Garden
- More comprehensive project management, including dependency resolution and multi-service orchestration
- Supports multiple environments and provides a unified workflow across dev, staging, and production
- Offers a plugin system for extending functionality and integrating with various tools
Cons of Garden
- Steeper learning curve due to its more complex configuration and concepts
- Less widespread adoption compared to Skaffold, potentially leading to a smaller community and fewer resources
Code Comparison
Garden configuration (garden.yml):
kind: Project
name: my-project
environments:
- name: dev
- name: prod
providers:
- name: kubernetes
environments: [dev, prod]
Skaffold configuration (skaffold.yaml):
apiVersion: skaffold/v2beta28
kind: Config
build:
artifacts:
- image: my-image
deploy:
kubectl:
manifests:
- k8s-*
Garden focuses on a more holistic approach to project configuration, including environments and providers, while Skaffold's configuration is primarily centered around build and deploy processes for Kubernetes.
Define and run multi-container applications with Docker
Pros of Compose
- Simpler setup and configuration for local development environments
- Better suited for multi-container applications without Kubernetes
- More widespread adoption and community support
Cons of Compose
- Limited to Docker-based deployments
- Lacks built-in CI/CD pipeline integration
- Not optimized for cloud-native Kubernetes deployments
Code Comparison
Compose (docker-compose.yml):
version: '3'
services:
web:
build: .
ports:
- "5000:5000"
Skaffold (skaffold.yaml):
apiVersion: skaffold/v2beta26
kind: Config
build:
artifacts:
- image: my-app
deploy:
kubectl:
manifests:
- k8s-*
Compose focuses on defining multi-container applications for local development, while Skaffold is designed for Kubernetes-centric workflows with built-in CI/CD capabilities. Compose uses a declarative YAML format to describe services, networks, and volumes, whereas Skaffold configures the build, push, and deploy steps for Kubernetes applications.
Skaffold offers more advanced features for cloud-native development, such as hot reloading, continuous deployment, and integration with various build tools and CI/CD platforms. However, Compose remains popular for its simplicity and ease of use in local development scenarios, especially for projects not targeting Kubernetes deployments.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
Skaffold is a command line tool that facilitates continuous development for Kubernetes applications. You can iterate on your application source code locally then deploy to local or remote Kubernetes clusters. Skaffold handles the workflow for building, pushing and deploying your application. It also provides building blocks and describe customizations for a CI/CD pipeline.
Install Skaffold
Or, check out our Github Releases page for release info or to install a specific version.
Features
- Blazing fast local development
- optimized source-to-deploy - Skaffold detects changes in your source code and handles the pipeline to build, push, and deploy your application automatically with policy based image tagging
- continuous feedback - Skaffold automatically aggregates logs from deployed resources and forwards container ports to your local machine
- Project portability
- share with other developers - Skaffold is the easiest way to share your project with the world:
git clone
andskaffold run
- context aware - use Skaffold profiles, user level config, environment variables and flags to describe differences in environments
- CI/CD building blocks - use
skaffold run
end-to-end, or use individual Skaffold phases to build up your CI/CD pipeline.skaffold render
outputs hydrated Kubernetes manifests that can be used in GitOps workflows.
- share with other developers - Skaffold is the easiest way to share your project with the world:
- Pluggable, declarative configuration for your project
- skaffold init - Skaffold discovers your files and generates its own config file
- multi-component apps - Skaffold supports applications consisting of multiple components
- bring your own tools - Skaffold has a pluggable architecture to integrate with any build or deploy tool
- Lightweight
- client-side only - Skaffold has no cluster-side component, so there is no overhead or maintenance burden
- minimal pipeline - Skaffold provides an opinionated, minimal pipeline to keep things simple
Check out our examples page for more complex workflows!
IDE integrations
For a managed experience of Skaffold you can install the Google Cloud Code
extensions:
- for Visual Studio Code
- for JetBrains IDEs.
It can manage and keep Skaffold up-to-date while providing a more guided startup experience, along with providing and managing other common dependencies, and works with any kubernetes cluster.
Contributing to Skaffold
We welcome any contributions from the community with open arms - Skaffold wouldn't be where it is today without contributions from the community! Have a look at our contribution guide for more information on how to get started on sending your first PR.
Community
Come hang out with us!
- We're always around on #skaffold on Kubernetes Slack
- skaffold-users mailing list
- Have something you want us to hear? Give us feedback!
Office Hours
We hold open office hours on the last Wednesday of the month at 9:30 AM Pacific Time. This is an open forum for anyone to show up and bring ideas, concerns, or just in general come hang out with the team! This is also a great time to get direct feedback on contributions, or give us feedback on ways you think we can improve the project. Come show us how you're using Skaffold!
Join the skaffold-users mailing list to get the calendar invite directly on your calendar. You can access the hangouts invite directly from this calendar invite.
Survey
Your feedback is very valuable to us! We have an anonymous user feedback survey - please help us by spending a quick 5 minutes to tell us how satisfied you are with Skaffold, and what improvements we should make! You can also run skaffold survey
from your terminal to open the survey directly in your default browser.
Survey Link - https://forms.gle/BMTbGQXLWSdn7vEs6
Support
Skaffold is generally available and considered production ready. Detailed feature maturity information and how we deprecate features are described in our Deprecation Policy.
Security Disclosures
Please see our security disclosure process. All security advisories are managed on Github.
Top Related Projects
Run Kubernetes locally
Define your dev environment as code. For microservice apps on Kubernetes.
Develop your applications directly in your Kubernetes Cluster
DevSpace - The Fastest Developer Tool for Kubernetes ⚡ Automate your deployment workflow with DevSpace and develop software directly inside Kubernetes.
Automation for Kubernetes development and testing. Spin up production-like environments for development, testing, and CI on demand. Use the same configuration and workflows at every step of the process. Speed up your builds and test runs via shared result caching
Define and run multi-container applications with Docker
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot