• Deck:

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.
  • 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.
graph TB

deck(Deck) --> gate;
api(Custom Script/API Caller) --> gate(Gate);
gate --> kayenta(Kayenta);
gate --> orca(Orca);
gate --> clouddriver(Clouddriver);
orca --> clouddriver;
gate --> rosco(Rosco);
orca --> front50;
orca --> rosco;
gate --> front50(Front50);
gate --> fiat(Fiat);
orca --> kayenta;
clouddriver --> fiat;
orca --> fiat;
front50 --> fiat;
echo(Echo) --> orca;
echo --> front50;
gate --> echo;
gate --> igor(Igor);
igor(Igor) --> echo;

 keel(Keel) --> clouddriver;
 keel --> orca;
 keel --> front50;
 keel --> fiat;
 keel --> echo;
 keel --> igor;
 gate --> keel;

hal(Halyard CLI) --> halyard(Halyard Daemon);

classDef default fill:#d8e8ec,stroke:#39546a;
linkStyle default stroke:#39546a,stroke-width:1px,fill:none;

classDef halStyle fill:#eebb3c,stroke:#39546a;
class halyard,hal halStyle;

classDef external fill:#c0d89d,stroke:#39546a;
class deck,api external;