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]:
- Infrastructure: Deploy Minio (storage) and Redis.
- Core Services: Deploy Clouddriver and Front50.
- Orchestration: Deploy Orca (orchestration), Echo (messaging), and Igor (integration).
- API and UI: Deploy Gate and Deck.
- 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].
- Build Stage: Triggers Jenkins to build a Docker image.
- Deploy to Test: Deploys the new image to a
testnamespace. - Verification: Users verify the application (e.g., checking logs or Kibana).
- Deploy to Prod: Once verified, the pipeline can promote the exact same image version (using the same image tag) to the
prodnamespace^[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].
Related Concepts¶
- Kubernetes
- Jenkins
- [[Docker]]
- [[PaaS]]
- [[Continuous Delivery]]
Sources¶
- 400-devops__06-Kubernetes__k8s-paas__08.spinaker部署与应用.md