Convert Figma logo to code with AI

GoogleContainerTools logoskaffold

Easy and Repeatable Kubernetes Development

14,923
1,618
14,923
809

Top Related Projects

29,143

Run Kubernetes locally

7,557

Define your dev environment as code. For microservice apps on Kubernetes.

3,235

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.

3,325

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

33,537

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:

  1. Install Skaffold:

    curl -Lo skaffold https://storage.googleapis.com/skaffold/releases/latest/skaffold-linux-amd64 && \
    sudo install skaffold /usr/local/bin/
    
  2. 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
    
  3. Run Skaffold:

    skaffold dev
    

This will start the Skaffold development loop, building and deploying your application to your Kubernetes cluster.

Competitor Comparisons

29,143

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.

7,557

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.

3,235

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.

3,325

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.

33,537

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 Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README


Code Coverage LICENSE Releases

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.

Demo

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 and skaffold 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.
  • 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:

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!

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.