Skip to content
Easy and Repeatable Kubernetes Development
Branch: master
Clone or download
Latest commit fe31429 May 23, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github fixing codeowners + the changelog for v0.28.0 (#2034) Apr 26, 2019
cmd/skaffold fix nits and add comments May 22, 2019
deploy Fix image release process: master -> edge, tag -> latest (#2099) May 9, 2019
docs Merge pull request #2141 from briandealwis/npm May 23, 2019
examples cut v0.30.0 May 23, 2019
hack code review comments and added documentation Apr 30, 2019
installers/brew brew: remove version from formula Jun 28, 2018
integration Merge pull request #2141 from briandealwis/npm May 23, 2019
logo logo: add files Jun 29, 2018
pkg Merge pull request #2141 from briandealwis/npm May 23, 2019
testutil Test helper to override value for tests May 17, 2019
vendor Update gopkg.in/src-d/go-git Apr 25, 2019
webhook adding more logs for webhook Mar 12, 2019
.gcloudignore cloudbuild: fix docs generation + adds testing for GCB triggers (#661) Jun 14, 2018
.gitignore update build.sh to reflect change from IMAGE_NAME to IMAGES Apr 29, 2019
.travis.yml Trying simpler Travis config May 17, 2019
CHANGELOG.md cut v0.30.0 May 23, 2019
CODE_OF_CONDUCT.md Improve manual installation instruction for windows (#1883) Mar 27, 2019
CONTRIBUTING.md Add DEVELOPMENT.md (#901) Aug 17, 2018
DEVELOPMENT.md Add contributing docs for making a config change Apr 18, 2019
Gopkg.lock Update gopkg.in/src-d/go-git Apr 25, 2019
Gopkg.toml Update gopkg.in/src-d/go-git Apr 25, 2019
LICENSE Fixing the licence Jun 8, 2018
MAINTAINERS update codeowners and maintainers Apr 18, 2019
Makefile Fix image release process: master -> edge, tag -> latest (#2099) May 9, 2019
README.md Minor fix on Markdown May 1, 2019
appveyor.yml Use Go 1.11 on AppVeyor and Kokoro too Mar 14, 2019
deprecation-policy.md fix Markdown rendering deprecation-policy.md (#1845) Mar 20, 2019
test.sh Improve test coverage (#1840) Mar 20, 2019

README.md


Build Status Code Coverage Go Report Card 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.

Features

  • Fast local Kubernetes Development
    • optimized source-to-k8s - Skaffold detects changes in your source code and handles the pipeline to build, push, and deploy your application automatically with policy based image tagging and highly optimized, fast local workflows
    • continuous feedback - Skaffold automatically manages logging and port-forwarding
  • Skaffold projects work everywhere
    • 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 just part of skaffold stages from build to deployment in your CI/CD system
  • skaffold.yaml - a single 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 allow for different implementations of the stages
  • Lightweight
    • client-side only - Skaffold does not require maintaining a cluster-side component, so there is no overhead or maintenance burden to your cluster.
    • minimal pipeline - Skaffold provides an opinionated, minimal pipeline to keep things simple

Install

Installation methods can be found in the Getting Started Guide.

See Github Releases for more information.

Demo

Demo

A Glance at Skaffold Workflow and Architecture

Skaffold simplifies your development workflow by organizing common development stages into one simple command. Every time you run skaffold dev, the system

  1. Collects and watches your source code for changes
  2. Syncs files directly to pods if user marks them as syncable
  3. Builds artifacts from the source code
  4. Tests the built artifacts using container-structure-tests
  5. Tags the artifacts
  6. Pushes the artifacts
  7. Deploys the artifacts
  8. Monitors the deployed artifacts
  9. Cleans up deployed artifacts on exit (Ctrl+C)

What's more, the pluggable architecture is central to Skaffold's design, allowing you to use the tool you prefer in each stage. Also, Skaffold's profiles feature grants you the freedom to switch tools as you see fit depending on the context.

For example, if you are coding on a local machine, you can configure Skaffold to build artifacts with local Docker daemon and deploy them to minikube using kubectl, the Kubernetes command-line interface and when you finalize your design, you can switch to the production profile and start building with Google Cloud Build and deploy with Helm.

Skaffold supports the following tools:

  • Build
    • Dockerfile locally
    • Dockerfile in-cluster (kaniko)
    • Dockerfile on cloud (Google Cloud Build)
    • Bazel locally
    • Jib Maven/Gradle locally
  • Test
    • with container-structure-test
  • Deploy
    • Kubernetes Command-Line Interface (kubectl)
    • Helm
    • kustomize
  • Tag
    • tag by git commit
    • tag by current date&time
    • tag by environment variables based template
    • tag by checksum of the source code
  • Push
    • don't push - keep the image on the local daemon
    • push to registry

architecture

Besides the above steps, skaffold also automatically manages the following utilities for you:

  • forwards container ports to your local machine using kubectl port-forward
  • aggregates all the logs from the deployed pods

Documentation

Documentation for latest release: https://skaffold.dev

Documentation for latest build: https://skaffold-latest.firebaseapp.com

More examples

Check out our examples page

Community

There is a bi-weekly Skaffold users meeting at 9:30am-10am PST hosted on hangouts under "skaffold". Everyone is welcome to add suggestions to the agenda and attend. Join the skaffold-users mailing list to get the calendar invite directly on your calendar.

You can’t perform that action at this time.