Introduction to Spinnaker

In this blog post we will introduce a tool developed by Netflix called Spinnaker. We will discuss what it is, overview of its key components and use case. At the end of this post, you should have a good understanding of what Spinnaker is all about.

Continuous delivery and deployment

To understand what spinnaker is used for, it is worth going over two concepts: Continuous Delivery and Continuous Deployment. Continuous Delivery is a practice by which a software can be deployed to production in a fast, safe and automated manner. The idea here is that new functionality can be built and if all things check out, it can be deployed to production. This is a manual approval to prod.

Continuous Deployment takes this farther. It automatically pushes any change to production as long as it passes any test defined.

Notice how Continuous Delivery can and Continuous Deployment will deploy. As you can see, both of these processes heavily depends on automation and repeatable process for fast release and higher frequency.

What is Spinnaker?

Spinnaker is a tool used for Application Management and Application Deployment, targeted towards cloud services.

Spinnaker can be used for both continuous delivery and continuous deployment. It is important to note, however, that Spinnaker is not a build tool nor  a continuous integration tool like Jenkins. Instead, you can integrate Jenkins with Spinnaker for a full CI/CD stack.

Spinnaker Components

Spinnaker is made up of 11 microservices working together to give us the features that we get out of the box. Let’s go over each service.

Spinnaker use case

A simple use case is building a pipeline that grabs an artifact from a Jenkins build job, bake an AMI from that artifact, run some test, then deploy to AWS EC2 instance or deploy to a Kubernetes cluster. We can even throw in a manual approval stage before the deployment stage in case we want to notify a group of devs to approve the deployment. This is just a simplified pipeline to help understand the flow.

Spinnaker, in this case, will be triggered to run a pipeline after a successful Jenkins build. You can also have spinnaker go trigger a Jenkins build job, then wait for that job to complete before moving on in the stages. It can also simply just grab the artifact from the last build in Jenkins. There are other stages like slacking a dev team that there is an approval waiting, kicking off another pipeline run in a stage or sending off a webhook, just to name a few.

Installing Spinnaker

Installing spinnaker can be done two ways:

Spinnaker is a powerful tool that can help streamline application deployment in an automated repeatable fashion with the ability to build best practice into the pipeline. For more on this topic, see Using Spinnaker with Kubernetes for Continuous Delivery.