github.com/GoogleContainerTools/skaffold/v2@v2.13.2/docs-v1/content/en/docs/_index.md (about)

     1  ---
     2  title: "Skaffold Documentation"
     3  linkTitle: "Documentation"
     4  weight: 20
     5  menu:
     6    main:
     7      weight: 20
     8  no_list: true
     9  ---
    10  
    11  Skaffold is a command line tool that facilitates continuous development for
    12  Kubernetes-native applications. Skaffold handles the workflow for building,
    13  pushing, and deploying your application, and provides building blocks for
    14  creating CI/CD pipelines. This enables you to focus on iterating on your
    15  application locally while Skaffold continuously deploys to your local or remote
    16  Kubernetes cluster.
    17  
    18  ## Features
    19  
    20  * Fast local Kubernetes Development
    21    * **optimized "Source to Kubernetes"** - Skaffold detects changes in your source code and handles the pipeline to
    22    **build**, **push**, **test** and **deploy** your application automatically with **policy-based image tagging** and **highly optimized, fast local workflows**
    23    * **continuous feedback** - Skaffold automatically manages deployment logging and resource port-forwarding
    24  * Skaffold projects work everywhere
    25    * **share with other developers** - Skaffold is the easiest way to **share your project** with the world: `git clone` and `skaffold run`
    26    * **context aware** - use Skaffold profiles, local user config, environment variables, and flags to easily incorporate differences across environments
    27    * **CI/CD building blocks** - use `skaffold build`, `skaffold test` and `skaffold deploy` as part of your CI/CD pipeline, or simply `skaffold run` end-to-end
    28    * **GitOps integration** - use `skaffold render` to build your images and render templated Kubernetes manifests for use in GitOps workflows
    29  * skaffold.yaml - a single pluggable, declarative configuration for your project
    30    * **skaffold init** - Skaffold can discover your build and deployment configuration and generate a Skaffold config
    31    * **multi-component apps** - Skaffold supports applications with many components, making it great for microservice-based applications
    32    * **bring your own tools** - Skaffold has a pluggable architecture, allowing for different implementations of the build and deploy stages
    33  * Lightweight
    34    * **client-side only** - Skaffold has no cluster-side component, so there's no overhead or maintenance burden to
    35    your cluster
    36    * **minimal pipeline** - Skaffold provides an opinionated, minimal pipeline to keep things simple
    37  
    38  ## Demo
    39  
    40  ![architecture](/images/intro.gif)
    41  
    42  ## Skaffold Workflow and Architecture
    43  
    44  Skaffold simplifies your development workflow by organizing common development
    45  stages into one simple command. Every time you run `skaffold dev`, the system
    46  
    47  1. Collects and watches your source code for changes
    48  1. Syncs files directly to pods if user marks them as syncable
    49  1. Builds artifacts from the source code
    50  1. Tests the built artifacts using [container-structure-tests](https://github.com/GoogleContainerTools/container-structure-test) or custom scripts
    51  1. Tags the artifacts
    52  1. Pushes the artifacts
    53  1. Deploys the artifacts
    54  1. Monitors the deployed artifacts
    55  1. Cleans up deployed artifacts on exit (Ctrl+C)
    56  
    57  {{< alert title="Note" >}}
    58  Any of these stages can be skipped.
    59  {{< /alert >}}
    60  
    61  The pluggable architecture is central to Skaffold's design, allowing you to use
    62  your preferred tool or technology in each stage. Also, Skaffold's `profiles` feature
    63  grants you the freedom to switch tools on the fly with a simple flag.
    64  
    65  For example, if you are coding on a local machine, you can configure Skaffold to build artifacts
    66  with your local Docker daemon and deploy them to minikube using `kubectl`.
    67  When you finalize your design, you can switch to your production profile and start building with
    68  Google Cloud Build and deploy with Helm.
    69  
    70  Skaffold supports the following tools:
    71  
    72  {{% tabs %}}
    73  {{% tab "IMAGE BUILDERS" %}}
    74  * [Dockerfile](https://docs.docker.com/engine/reference/builder/)
    75    - locally with Docker
    76    - in-cluster with [Kaniko](https://github.com/GoogleContainerTools/kaniko)
    77    - on cloud with [Google Cloud Build](https://cloud.google.com/cloud-build/docs/)
    78  * [Jib](https://github.com/GoogleContainerTools/jib) Maven and Gradle
    79    - locally
    80    - on cloud with [Google Cloud Build](https://cloud.google.com/cloud-build/docs/)
    81  * [Bazel](https://bazel.build/) locally
    82  * [Cloud Native Buildpacks](https://buildpacks.io/)
    83    - locally with Docker
    84    - on cloud with [Google Cloud Build](https://cloud.google.com/cloud-build/docs/)
    85  * Custom script
    86    - locally
    87    - in-cluster
    88  {{% /tab %}}
    89  
    90  {{% tab "TESTERS" %}}
    91  * [container-structure-test](https://github.com/GoogleContainerTools/container-structure-test)
    92  * custom script
    93  {{% /tab %}}
    94  
    95  {{% tab "DEPLOYERS" %}}
    96  * Kubernetes Command-Line Interface (`kubectl`)
    97  * Helm
    98  * kustomize
    99  {{% /tab %}}
   100  
   101  {{% tab "TAG POLICIES" %}}
   102  * tag by git commit
   103  * tag by current date & time
   104  * tag by environment variables based template
   105  * tag by digest of the Docker image
   106  {{% /tab %}}
   107  
   108  {{% tab "PUSH STRATEGIES" %}}
   109  * don't push - keep the image on the local daemon
   110  * push to registry
   111  {{% /tab %}}
   112  {{% /tabs %}}
   113  
   114  
   115  ![architecture](/images/architecture.png)
   116  
   117  
   118  Besides the above steps, Skaffold also automatically manages the following utilities for you:
   119  
   120  * port-forwarding of deployed resources to your local machine using `kubectl port-forward`
   121  * log aggregation from the deployed pods