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-envConfigMap 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-configConfigMap 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]
- Kubernetes accounts are configured to manage deployments within specific namespaces (e.g.,
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]
- 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]
- 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]
- Deployment: The pipeline uses the Clouddriver component to deploy the Docker image to the Kubernetes cluster, managing resources like
Deployments,Services, andIngress.^[400-devops-06-kubernetes-k8s-paas-08spinaker.md]
Sources¶
- 400-devops-06-kubernetes-k8s-paas-08spinaker.md