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

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