Skip to content

Armory Spinnaker

Armory Spinnaker is an enterprise-grade, continuous delivery platform that provides flexible and configurable pipelines for automated software deployment^[400-devops__06-Kubernetes__k8s-paas__08.spinaker部署与应用.md]. It offers a global view of application statuses across all environments and is designed to be easy to configure, maintain, and extend^[400-devops__06-Kubernetes__k8s-paas__08.spinaker部署与应用.md]. As a distribution of Spinnaker, Armory is often deployed to provide a PaaS (Platform as a Service) layer on top of Kubernetes (IaaS), managing cloud resources and coordinating deployment workflows^[400-devops__06-Kubernetes__k8s-paas__08.spinaker部署与应用.md].

Architecture

Armory Spinnaker operates as a suite of microservices, each handling a specific aspect of the delivery pipeline^[400-devops__06-Kubernetes__k8s-paas__08.spinaker部署与应用.md].

  • Deck: The web UI (the "click-click-click" page) where users interact with the system^[400-devops__06-Kubernetes__k8s-paas__08.spinaker部署与应用.md].
  • Gate: The API gateway that serves as the entry point for API requests^[400-devops__06-Kubernetes__k8s-paas__08.spinaker部署与应用.md].
  • Igor: Integrates with build servers like Jenkins to trigger builds and fetch artifacts^[400-devops__06-Kubernetes__k8s-paas__08.spinaker部署与应用.md].
  • Clouddriver: Manages interactions with the underlying cloud infrastructure (e.g., Kubernetes)^[400-devops__06-Kubernetes__k8s-paas__08.spinaker部署与应用.md].
  • Orca: The task orchestration engine that executes the logic defined in pipelines^[400-devops__06-Kubernetes__k8s-paas__08.spinaker部署与应用.md].
  • Echo: Handles internal messaging and events^[400-devops__06-Kubernetes__k8s-paas__08.spinaker部署与应用.md].
  • Front50: Manages persistent data, such as pipeline configurations and application settings^[400-devops__06-Kubernetes__k8s-paas__08.spinaker部署与应用.md].

The system relies on backend services like Redis for caching and Minio (S3-compatible storage) for persisting data^[400-devops__06-Kubernetes__k8s-paas__08.spinaker部署与应用.md].

Deployment Workflow

A typical Armory deployment follows a specific startup sequence to ensure dependencies are met^[400-devops__06-Kubernetes__k8s-paas__08.spinaker部署与应用.md]:

  1. Infrastructure: Deploy Minio (storage) and Redis.
  2. Core Services: Deploy Clouddriver and Front50.
  3. Orchestration: Deploy Orca (orchestration), Echo (messaging), and Igor (integration).
  4. API and UI: Deploy Gate and Deck.
  5. Ingress: Deploy Nginx as a reverse proxy to expose the service^[400-devops__06-Kubernetes__k8s-paas__08.spinaker部署与应用.md].

In a Kubernetes environment, these components are deployed within a dedicated namespace (e.g., armory) using manifests for Deployments, Services, and Ingress^[400-devops__06-Kubernetes__k8s-paas__08.spinaker部署与应用.md].

CI/CD Integration

Armory Spinnaker connects directly with Continuous Integration tools to automate the journey from code commit to deployment^[400-devops__06-Kubernetes__k8s-paas__08.spinaker部署与应用.md].

Image Building with Jenkins

Spinnaker can trigger jobs in Jenkins to build Docker images^[400-devops__06-Kubernetes__k8s-paas__08.spinaker部署与应用.md]. This process typically involves passing parameters such as the image name, Git branch, and commit ID to the Jenkins job^[400-devops__06-Kubernetes__k8s-paas__08.spinaker部署与应用.md]. Once the build is complete, Jenkins pushes the new image tag to a container registry like Harbor^[400-devops__06-Kubernetes__k8s-paas__08.spinaker部署与应用.md].

Kubernetes Deployment

Spinnaker manages the deployment of these images into Kubernetes clusters^[400-devops__06-Kubernetes__k8s-paas__08.spinaker部署与应用.md]. It uses a "Load Balancer" (Service) and "Server Group" (Deployment) model to manage applications^[400-devops__06-Kubernetes__k8s-paas__08.spinaker部署与应用.md].

  • Deployment Strategy: It supports strategies like Rolling Update, ensuring zero downtime by gradually replacing old pods with new ones^[400-devops__06-Kubernetes__k8s-paas__08.spinaker部署与应用.md].
  • Manifest Configuration: Instead of writing raw YAML, users configure deployments via the UI, defining container images, environment variables, resource limits, and Health Check probes (e.g., TCP port checks for Dubbo services)^[400-devops__06-Kubernetes__k8s-paas__08.spinaker部署与应用.md].
  • Sidecar Support: Spinnaker facilitates complex Pod setups, such as adding a Filebeat sidecar container to application pods for log collection to ELK^[400-devops__06-Kubernetes__k8s-paas__08.spinaker部署与应用.md].

Pipelines and Promotion

The core workflow involves creating Pipelines that string together these stages^[400-devops__06-Kubernetes__k8s-paas__08.spinaker部署与应用.md].

  1. Build Stage: Triggers Jenkins to build a Docker image.
  2. Deploy to Test: Deploys the new image to a test namespace.
  3. Verification: Users verify the application (e.g., checking logs or Kibana).
  4. Deploy to Prod: Once verified, the pipeline can promote the exact same image version (using the same image tag) to the prod namespace^[400-devops__06-Kubernetes__k8s-paas__08.spinaker部署与应用.md].

This promotion mechanism ensures that the code running in production is identical to the code tested in staging, with the entire process manageable through a simple manual approval ("click-click") in the Spinnaker UI^[400-devops__06-Kubernetes__k8s-paas__08.spinaker部署与应用.md].

Sources

  • 400-devops__06-Kubernetes__k8s-paas__08.spinaker部署与应用.md