Что такое Spinnaker?
Spinnaker — это open-source, multi-cloud платформа непрерывной доставки, разработанная Netflix. Она обеспечивает безопасные, надежные и быстрые развертывания приложений в различных облачных провайдерах и Kubernetes кластерах.
Основные возможности Spinnaker
- Multi-cloud deployment — поддержка AWS, GCP, Azure, Kubernetes
- Deployment strategies — blue/green, canary, rolling deployments
- Pipeline management — визуальные пайплайны развертывания
- Automated rollbacks — автоматический откат при проблемах
- Manual judgments — ручное подтверждение критических этапов
- Chaos engineering — встроенная интеграция с Chaos Monkey
- Compliance — аудит и контроль развертываний
Архитектура Spinnaker
- Deck — веб-интерфейс пользователя
- Gate — API gateway для всех запросов
- Orca — оркестрация пайплайнов и задач
- Clouddriver — взаимодействие с облачными провайдерами
- Front50 — хранение метаданных приложений и пайплайнов
- Rosco — сборка образов (AMI, Docker)
- Igor — интеграция с системами CI
Установка Spinnaker
1# Установка через Halyard (рекомендуемый способ)
2curl -O https://raw.githubusercontent.com/spinnaker/halyard/master/install/debian/InstallHalyard.sh
3sudo bash InstallHalyard.sh
4
5# Конфигурация облачного провайдера (AWS)
6hal config provider aws enable
7hal config provider aws account add my-aws-account \
8 --account-id 123456789012 \
9 --assume-role role/SpinnakerManagedRole
10
11# Конфигурация Kubernetes
12hal config provider kubernetes enable
13hal config provider kubernetes account add my-k8s-account \
14 --kubeconfig-file ~/.kube/config \
15 --context my-context
16
17# Конфигурация хранилища
18hal config storage s3 edit \
19 --access-key-id YOUR_ACCESS_KEY \
20 --secret-access-key YOUR_SECRET_KEY \
21 --region us-west-2 \
22 --bucket spinnaker-artifacts
23
24# Развертывание Spinnaker
25hal config version edit --version 1.30.0
26hal deploy apply
Создание Application и Pipeline
1// Создание приложения через API
2{
3 "name": "myapp",
4 "email": "team@company.com",
5 "description": "My application deployment",
6 "cloudProviders": ["aws", "kubernetes"],
7 "platformHealthOnly": false,
8 "platformHealthOnlyShowOverride": false
9}
10
11// Пример Pipeline конфигурации
12{
13 "name": "Deploy to Production",
14 "application": "myapp",
15 "stages": [
16 {
17 "type": "bake",
18 "name": "Bake AMI",
19 "baseOs": "ubuntu",
20 "baseLabel": "release",
21 "package": "myapp-${trigger.buildInfo.number}.deb",
22 "regions": ["us-west-2"]
23 },
24 {
25 "type": "deploy",
26 "name": "Deploy to Staging",
27 "clusters": [
28 {
29 "provider": "aws",
30 "cloudProvider": "aws",
31 "account": "my-aws-account",
32 "region": "us-west-2",
33 "strategy": "redblack",
34 "capacity": {
35 "min": 2,
36 "max": 4,
37 "desired": 2
38 }
39 }
40 ]
41 },
42 {
43 "type": "manualJudgment",
44 "name": "Manual Approval",
45 "instructions": "Please verify staging deployment",
46 "judgmentInputs": [
47 {"value": "continue"},
48 {"value": "rollback"}
49 ]
50 },
51 {
52 "type": "deploy",
53 "name": "Deploy to Production",
54 "clusters": [
55 {
56 "provider": "aws",
57 "strategy": "rollingredblack",
58 "maxRemainingAsgs": 2,
59 "delayBeforeDisableSec": 0,
60 "delayBeforeScaleDownSec": 900
61 }
62 ]
63 }
64 ],
65 "triggers": [
66 {
67 "type": "jenkins",
68 "master": "my-jenkins",
69 "job": "myapp-build",
70 "enabled": true
71 }
72 ]
73}
Deployment Strategies
1# Blue/Green Deployment
2strategy: redblack
3maxRemainingAsgs: 2
4delayBeforeDisableSec: 0
5delayBeforeScaleDownSec: 0
6scaleDown: true
7rollback:
8 onFailure: true
9
10# Canary Deployment
11strategy: canary
12canary:
13 canaryConfig:
14 metricsAccountName: my-prometheus
15 scopes:
16 - scopeName: default
17 controlScope: myapp-control
18 experimentScope: myapp-canary
19 judge:
20 name: NetflixACAJudge-v1.0
21analysis:
22 - name: success-rate
23 query: "avg(rate(http_requests_total{job='myapp',status=~'2..'}[1m]))"
24 threshold: 0.95
25
26# Rolling Deployment
27strategy: rollingredblack
28maxRemainingAsgs: 3
29delayBeforeDisableSec: 0
30delayBeforeScaleDownSec: 300
Интеграция с CI системами
1# Конфигурация Jenkins интеграции
2hal config ci jenkins enable
3hal config ci jenkins master add my-jenkins \
4 --address https://jenkins.company.com \
5 --username spinnaker \
6 --password-file /path/to/password
7
8# Конфигурация GitHub интеграции
9hal config artifact github enable
10hal config artifact github account add my-github \
11 --token-file /path/to/github-token
12
13# Конфигурация Docker Registry
14hal config provider docker-registry enable
15hal config provider docker-registry account add my-registry \
16 --address https://registry.company.com \
17 --username spinnaker \
18 --password-file /path/to/registry-password
Когда использовать Spinnaker
- Multi-cloud развертывания
- Сложные deployment strategies (canary, blue/green)
- Enterprise требования к безопасности и compliance
- Необходимость в automated rollbacks
- Команды, работающие с микросервисами
- Критически важные production системы
Преимущества Spinnaker
- Multi-cloud native — поддержка всех major облачных провайдеров
- Advanced deployment strategies — sophisticated подходы к развертыванию
- Battle-tested — проверен в Netflix и других крупных компаниях
- Visual pipelines — интуитивный графический интерфейс
- Automated rollbacks — автоматическое восстановление при сбоях
- Compliance ready — аудит и контроль развертываний
Недостатки Spinnaker
- Сложность установки и настройки
- Высокие требования к ресурсам
- Крутая кривая обучения
- Может быть избыточным для простых проектов
- Ограниченная поддержка on-premise
- Активное развитие может приводить к breaking changes
Альтернативы Spinnaker
- ArgoCD — для Kubernetes-focused развертываний
- Flux — GitOps подход
- Harness — коммерческая CD платформа
- GitLab CI/CD — интегрированное решение
- Azure Pipelines — для Microsoft экосистемы
Best Practices
- Начни с простых пайплайнов и постепенно усложняй
- Используй manual judgments для критических развертываний
- Настрой proper monitoring и alerting
- Регулярно делай бэкапы конфигурации
- Используй canary deployments для рискованных изменений
- Мониторь производительность Spinnaker компонентов
FAQ
Подходит ли Spinnaker для продакшена?
Да, Spinnaker используется в production крупными компаниями как Netflix, Google, Microsoft. Это зрелая платформа для enterprise развертываний.
Какие требования к инфраструктуре?
Spinnaker требует значительных ресурсов: минимум 8GB RAM и 4 CPU cores для всех компонентов. Рекомендуется Kubernetes кластер для развертывания.
Сложно ли мигрировать на Spinnaker?
Миграция может быть сложной из-за специфичной архитектуры. Рекомендуется постепенная миграция, начиная с менее критичных приложений.