Search code examples
google-cloud-platformcontinuous-deliveryspinnakerskaffold

Skaffold vs Spinnaker


I've read about two approaches (there are probably more) for implementing continuous delivery pipelines in GCP:

  • Skaffold
  • Spinnaker + Container Builder

I've worked with both a little bit in Quiklabs. If someone has real experience with both, could you please share their pros and cons compared to each other? Why did you choose one over another?

Pipeline using Skaffold (from the docs https://skaffold.dev/docs/pipeline-stages/):

  • Detect source code changes
  • Build artifacts
  • Test artifacts
  • Tag artifacts
  • Render manifests
  • Deploy manifests
  • Tail logs & Forward ports
  • Cleanup images and resources

Pipeline using Spinnaker + Cloud Builder:

  • Developer:
    • Change code
    • Create a git tag and push to repo
  • Container Builder:
    • Detect new git tag
    • Build Docker image
    • Run unit tests
    • Push Docker image
  • Spinnaker (from the docs https://www.spinnaker.io/concepts/):
    • Detect new image
    • Deploy Canary
    • Cutover manual approval
    • Deploy PROD (blue/green)
    • Tear down Canary
    • Destroy old PROD

Solution

  • I have worked on both and as per my experience, skaffold is good only for local development testing however if we want to scale to production, pre-production usecases it is better to use a spinnaker pipeline. It(spinnaker) provides cutting edge advantages over skaffold as

    • Sophisticated/Complex deployment strategies: You can define deployment strategies like deployment of service 1 before service 2 etc.
    • Multi-Cluster deployments: Easy UI based deployment can be configured to multiple clusters
    • Visualization:It provides a rich UI that shows the status of any deployment or pod across clusters, regions, namespace and cloud providers.