0
votes

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
3

3 Answers

1
votes

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.
1
votes

I'm not a real power user of both, but my understanding is that

  • Skaffold is great for dev environment, for developers (build, test, deploy, debug, loop).
  • Spinnaker is more oriented continuous development for automated platforms (CI/CD), that's why you can perform canary and blue/green deployment and stuff like this, useless for development phase.

Skaffold is also oriented Kubernetes environment, compare to Spinnaker which is more agnostic and can deploy elsewhere.

1
votes

Skaffold is for fast Local Kubernetes Development.Skaffold handles the workflow for building, pushing and deploying your application This makes it different from spinnaker which is more oriented towards CI/CD with full production environments