Skip to content

Armory Spinnaker distribution

Armory Spinnaker is a distribution of the open-source Spinnaker continuous delivery platform, often deployed on Kubernetes to provide automated deployment capabilities.^[400-devops-06-kubernetes-k8s-paas-08spinaker.md]

Architecture

Armory Spinnaker is architected as a collection of microservices that handle different aspects of the Continuous Delivery (CD) process.^[400-devops-06-kubernetes-k8s-paas-08spinaker.md]

Core components include:

  • Deck: The web UI ("点点点页面") used for user interaction.^[400-devops-06-kubernetes-k8s-paas-08spinaker.md]
  • Gate: The API gateway that serves as the entry point for API requests.^[400-devops-06-kubernetes-k8s-paas-08spinaker.md]
  • Igor: The component responsible for integrating with Jenkins to trigger builds and fetch artifacts.^[400-devops-06-kubernetes-k8s-paas-08spinaker.md]
  • Clouddriver: The component responsible for interacting with cloud providers (e.g., Kubernetes) to manage infrastructure resources.^[400-devops-06-kubernetes-k8s-paas-08spinaker.md]
  • Orca: The task orchestration engine that manages the execution of pipelines and stages.^[400-devops-06-kubernetes-k8s-paas-08spinaker.md]
  • Echo: The messaging component responsible for communications and events.^[400-devops-06-kubernetes-k8s-paas-08spinaker.md]
  • Front50: The persistence layer that manages stored data, such as pipeline configurations and application settings.^[400-devops-06-kubernetes-k8s-paas-08spinaker.md]

Deployment on Kubernetes

Deploying the Armory distribution typically involves setting up these services within a Kubernetes cluster, often in a dedicated namespace (e.g., armory).^[400-devops-06-kubernetes-k8s-paas-08spinaker.md]

A typical deployment sequence follows a dependency order: Minio (storage) -> Redis -> Clouddriver -> Front50 -> Orca -> Echo -> Igor -> Gate -> Deck -> Nginx.^[400-devops-06-kubernetes-k8s-paas-08spinaker.md]

Key Infrastructure Dependencies

  • Minio: Used as the backend storage for Spinnaker's persistent data (replacing S3 in on-premise setups).^[400-devops-06-kubernetes-k8s-paas-08spinaker.md]
  • Redis: Used for caching and intermediate data storage.^[400-devops-06-kubernetes-k8s-paas-08spinaker.md]
  • Nginx: Deployed as a static web proxy and Ingress point to route traffic to the Deck UI and Gate API.^[400-devops-06-kubernetes-k8s-paas-08spinaker.md]

Configuration

Configuration is managed primarily through ConfigMaps mounted into the containers.^[400-devops-06-kubernetes-k8s-paas-08spinaker.md]

  • Global Configuration: An init-env ConfigMap typically defines environment variables like API hosts, platform architecture, and storage endpoints (e.g., ARMORYSPINNAKER_S3_ENABLED).^[400-devops-06-kubernetes-k8s-paas-08spinaker.md]
  • Service Configuration: A custom-config ConfigMap defines specific settings for individual services, such as Kubernetes account credentials, Docker Registry details, and Jenkins integration.^[400-devops-06-kubernetes-k8s-paas-08spinaker.md]
    • Kubernetes accounts are configured to manage deployments within specific namespaces (e.g., test, prod).^[400-devops-06-kubernetes-k8s-paas-08spinaker.md]
    • Jenkins integration is configured to allow pipelines to trigger builds.^[400-devops-06-kubernetes-k8s-paas-08spinaker.md]

CI/CD Integration

Spinnaker functions as the deployment (CD) layer, integrating with a CI system like Jenkins to form a complete PaaS workflow.^[400-devops-06-kubernetes-k8s-paas-08spinaker.md]

  1. Image Building: Jenkins pipelines are used to build application images and push them to a registry (like Harbor).^[400-devops-06-kubernetes-k8s-paas-08spinaker.md]
  2. Pipeline Configuration: In Spinnaker (via the Deck UI), users create pipelines that define the deployment flow, often parameterized with image tags and build IDs.^[400-devops-06-kubernetes-k8s-paas-08spinaker.md]
  3. Deployment: The pipeline uses the Clouddriver component to deploy the Docker image to the Kubernetes cluster, managing resources like Deployments, Services, and Ingress.^[400-devops-06-kubernetes-k8s-paas-08spinaker.md]

Sources

  • 400-devops-06-kubernetes-k8s-paas-08spinaker.md