3. Current Challenges
Developers creating Kubernetes-native applications spent a long time
building and managing container images across registries, manually updating
their Kubernetes manifests and redeploying their applications every time
they made even the smallest code changes
Working on building cloud-native application means one has to take care the
complexity in managing the platform.
Building a full-fledged CI/CD pipeline for local code testing is time-consuming
and takes manual effort.
Integrating custom modules/plugins to existing CI/CD workflow involves
significant changes in pipeline steps that doubles the effort.
Current local CI/CD management workflow doesn’t imitate experience close
to production setup.
4. Introducing Skaffold
Skaffold is an open-source Google Container tool, written in Golang (licensed under
Apache 2.0) that provides a toolkit for creating CI/CD pipelines. Alpha version – 8th
March,2018
Skaffold primarily simplifies the “build → deploy → refactor → repeat” cycle.
Monitors the changes in the source code, starts an automatic process of building code
into container images, pushes these images to the Docker registry and deploys them to
the Kubernetes cluster while synchronizing files in source dir.
Skaffold itself does not have cluster-side components, so you don’t need to configure
Kubernetes to use it.
Skaffold not only can run on local Kubernetes cluster (minikube,docker for desktop) but
can build/push images locally with docker and run them on the remote clusters (such as
GKE, EKS,etc).
Supports debugging applications written in Java, Node.js, Python, Go.
Currently in GA ( v1.0.0)
8. Why should we care for Skaffold !!
Advantages :
• Flexible workflows with testers/deployers/push strategies
• Can also tag and push Docker images with customizable tagging
• Built-in integrations with several builders/deployers
• Can deploy with Helm or Kustomize or native Kubectl
• Support for build profiles
• Extensible
• Overall improves developer productivity, separation of business
logic from management platform operations.
Disadvantages:
• Might be overkill for simple applications.
• Complex setup (limited to application complexity)