Armory Enterprise and Spinnaker Architecture

Architecture Diagram

Armory Enterprise microservices

  • Clouddriver is a core component of Armory Enterprise and facilitates the interaction between a given cloud provider such as AWS, GCP or Kubernetes. There is a common interface that is used so that additional cloud providers can be added

  • Deck is the UI for interactive and visualizing the state of cloud resources. It depends on Gate to interact with the cloud providers

  • Echo is the service for Spinnaker which manages notifications, alerts and scheduled pipelines (Cron). It can also propagate these events out to other REST endpoints such as an Elastic Search, Splunk’s HTTP Event Collector or a custom event collector/processor

  • Fiat is the microservice responsible for authorization (authz) for the other microservices. By default, it is not enabled, so users are able to perform any action in Armory Enterprise

  • Front50 is the persistent datastore for Spinnaker. Most notabily pipelines, configurations, and jobs

  • Gate is the front-end API that is exposed to the users of your Spinnaker instance. It also manages authentication and authorization for sub-service APIs and resources with Spinnaker. All communication between the UI and the back-end services happen through Gate. You can find a list of the endpoints available through Swagger: http://${GATE_HOST}:8084/swagger-ui.html

  • Igor is a wrapper API which communicates with Jenkins. It is responsible for kicking-off jobs and reporting the state of running or completing jobs

  • Kayenta is Spinnaker’s canary analysis service, integrating with 3rd party monitoring services such as Datadog or Prometheus

  • Orca is responsible for the orchestration of pipelines, stages, and tasks within Armory Enterprise. Orca acts as the “traffic cop” within Armory Enterprise making sure that sub-services, their executions and states are passed along correctly. The smallest atomic unit within Orca is a task - stages are composed of tasks and pipelines are composed of stages

  • Rosco is the “bakery” service. It is a wrapper around Hashicorp’s Packer command line tool which bakes images for AWS, GCP, Docker, Azure, and other builders.

Armory Enterprise proprietary microservices

  • Armory Agent for Kubernetes is a lightweight, scalable service that monitors your Kubernetes infrastructure and streams changes back to the Clouddriver service

  • Dinghy is the microservice used to manage Pipelines as Code. It supports two main capabilities:

    • Automatically synchronizing pipeline definitions from an external Github or BitBucket repository to Armory
    • Creating a library of pipeline modules (components) that can be templatized and used in Dinghy-managed pipeline definitions
  • Armory Policy Engine is designed to allow enterprises more complete control of their software delivery process by providing them with the hooks necessary to perform more extensive verification of their pipelines and processes in Spinnaker. This policy engine is backed by Open Policy Agent(OPA) and uses input style documents to perform validation of pipelines during save time and runtime

  • Terraformer is the microservice behind Armory’s Terraform Integration. It allows Armory to natively use your infrastructure-as-code Terraform scripts as part of a deployment pipeline.

Installation and management

  • Armory Operator is a Kubernetes Operator that makes it easy to install, deploy, and upgrade Armory Enterprise

  • Armory-extended Halyard is a versatile command line interface (CLI) to configure and deploy Armory Enterprise in Kubernetes or any cloud environment.

You can find out more about Armory and Spinnaker architecture in the Armory documentation.