Spinnaker
Spinnaker is a Continuous Deployment tool designed for Kubernetes. The thing that makes Spinnaker different than most deployment tools is that Spinnaker has multi cloud support. Multi cloud support on its own isn't that unique of a concept but Spinnaker takes a very interesting approach to how it handles multi cloud. With Spinnaker you configure and connect your environment(s) from a multitude of supported providers. From there Spinnaker will treat them equal and give you the ability to define automated pipelines to deploy to certain environments or spread out the load amongst multiple. For any additional documentation not described in this README you can consult the Spinnaker docs.
Spinnaker Architecture
Spinnaker is composed of a number of independent microservices. These microservices can found and explained better on the Spinnaker docs, but I am going to list some of the important ones to know:
- Deck
- Deck is the broswer-based UI of spinnaker.
- Gate
- Is the API Gateway for spinnaker; all API callers communicate with the Spinnaker Gate.
- Orca
- Orca is the orchestration engine of spinnaker. It handles all ad-hoc operations and pipelines. Here are the Orca docs.
- Clouddriver
- The clouddriver is responsible for calls to the cloud providers and for indexing and caching of all deployed resources
- Font50
- Is used to persist the metadata of applications, pipelines, projects, and notifications.
- Halyard
- In my opinion halyard is the single most important microservice in the Spinnaker collection. Halyard is the service you use to configure your spinnaker instance; think of it like kubectl for your spinnaker instance.
Spinnaker Terminology
- Hal
- Hal is short for Halyard, the command line tool used to manage, update, and configure your spinnaker instance. Think about it like kubectl for your spinnaker server or instance.
- Instance
- In the spinnaker world instance is used to describe a server or pod that is hosting our application. This can be an EC2 instance in AWS, a compute engine in GCP, a kubernetes pod in a cluster we manage, or any number of supported providers. These providers can be found here.
- Server Group
- In the spinnaker world a server group is a group of our spinnaker instances. This can be visualized similar to a kubernetes deployment but in this case it is just grouping of our spinnaker instances which could be any number of or combination of vms, servers, and pods.
Spinnaker Installation
Spinnaker Installation instructions can be found: here. Spinnaker can be installed on any of the supported providers, and it can also be installed locally on a linux machine or if you are interested in helping develop spinnaker you can install from the git repo with these: instructions.