Spinnaker Architecture Overview
Spinnaker microservices
Spinnaker is composed of a number of independent microservices:
Deck is the browser-based UI.
Gate is the API gateway.
The Spinnaker UI and all api callers communicate with Spinnaker via Gate.
Orca is the orchestration engine. It handles all ad-hoc operations and pipelines. Read more on the Orca Service Overview .
Clouddriver is responsible for all mutating calls to the cloud providers and for indexing/caching all deployed resources.
Front50 is used to persist the metadata of applications, pipelines, projects and notifications.
Rosco is the bakery. It produces immutable VM images (or image templates) for various cloud providers.
It is used to produce machine images (for example GCE images , AWS AMIs , Azure VM images ). It currently wraps packer , but will be expanded to support additional mechanisms for producing images.
Igor is used to trigger pipelines via continuous integration jobs in systems like Jenkins and Travis CI, and it allows Jenkins/Travis stages to be used in pipelines.
Echo is Spinnaker’s eventing bus.
It supports sending notifications (e.g. Slack, email, SMS), and acts on incoming webhooks from services like Github.
Fiat is Spinnaker’s authorization service.
It is used to query a user’s access permissions for accounts, applications and service accounts.
Kayenta provides automated canary analysis for Spinnaker.
Keel powers Managed Delivery .
Halyard is Spinnaker’s configuration service.
Halyard manages the lifecycle of each of the above services. It only interacts with these services during Spinnaker startup, updates, and rollbacks.
System dependencies
This diagram shows which microservices depend on each other. The green boxes represent “external” components, including the Deck UI, a single-page JavaScript application that runs in your browser. The gold boxes represent Halyard components which are only ran when configuring Spinnaker.
In the table below, A filled cell indicates that the system listed in the heading of that column has a dependency on the system listed in the heading of that row. As all Spinnaker services can be run in their own server group, it is typical for services to resolve their dependencies via load balancers or discovery systems (for example Eureka or Consul ).
Port mappings
By default Spinnaker binds ports according to the following table
Service | Port |
---|---|
Clouddriver | 7002 |
Deck | 9000 |
Echo | 8089 |
Fiat | 7003 |
Front50 | 8080 |
Gate | 8084 |
Halyard | 8064 |
Igor | 8088 |
Kayenta | 8090 |
Orca | 8083 |
Rosco | 8087 |
Keel | 7010 |