Architecture and Design

Skaffold is designed with pluggability in mind:

architecture

The architecture allows you to use Skaffold with the tool you prefer. Skaffold provides built-in support for the following tools:

  • Build
    • Dockerfile locally, in-cluster with kaniko or on cloud using Google Cloud Build
    • Jib Maven and Jib Gradle locally or on cloud using Google Cloud Build
    • Bazel locally
    • Cloud Native Buildpacks locally or on cloud using Google Cloud Build
    • Custom script locally or in-cluster
  • Test
  • Tag
    • Git tagger
    • Sha256 tagger
    • Input Digest tagger
    • Env Template tagger
    • DateTime tagger
  • Deploy

You can combine the tools as you see fit in Skaffold. For experimental projects, you may want to use local Docker daemon for building artifacts, and deploy them to a Minikube local Kubernetes cluster with kubectl:

workflow_local

However, for production applications, you might find it more appropriate to build with Google Cloud Build and deploy using Helm:

workflow_gcb

Skaffold also supports development profiles. You can specify multiple different profiles in your configuration and use the one that best serves your needs without having to modify the configuration file. You can learn more about profiles here.