Deploywith
Confidence
Spinnaker & Continuous
Deployment
Ethan Rogers
Build & Release Engineer
Skuid
AboutMe
• Build & Release @ Skuid
• Spinnaker Contributor
• CI/CD Enthusiast
• @e_frogers (Twitter)
• @ethanfrogers (Slack/Github)
AQuickSurvey
Overview
• What is Spinnaker?
• Concepts
• Deploying with Spinnaker (Demo!)
• Conclusion
WhataboutaCanary?
WhataboutRollbacks?
WhySpinnaker?
• Safe, repeatable deployments
• Clear picture of what’s running
• Easy scaling and rollbacks
• Multiple deployment strategies OOB
• Consolidated best practices
WhatisSpinnaker?
Spinnaker is an open source, multi-cloud continuous
delivery platform for releasing software changes with
high velocity and confidence.
- spinnaker.io
History
• Developed at Netflix for AWS - 2014
• Open sourced in November 2015
• Lead by Netflix, Google and others
Stats
• Netflix runs over 100,000 AWS instances
• Spinnaker deploys 95% of them
• Runs OSS Spinnaker with additional features layered
on top
• 150k pipeline executions (8mil tasks) - Netflix
https://goo.gl/phqX8z
Features
• Setup/Admin CLI
• Deployment Strategies
• Email/Chat Notifications
• VM Bakery
• CI Integration
• Chaos Monkey
Concepts
• Components
• Server Groups & Clusters
• Pipelines
Architecture
• Made up of 9 microservices
• Minimum viable install - 5 services + Redis + S3
• Written in Java/Groovy/Kotlin (Spring)
• github.com/spinnaker/spinnaker
• Deck - UI
• Gate - API Gateway
• Clouddriver - Multi-cloud integrator
• Orca -Task orchestrator
• Front50 - Persistent Storage (S3/GCS/Redis)
‣Please don’t use Redis.
Minimum Installation
• Igor - Jenkins/Travis integration
• Fiat - Authorization
• Echo - Notifications/CronTriggers
• Rocso - Image Bakery via Packer
• Halyard - Configuration/Installation
Bells &Whistles
Instances&ServerGroups
• Instance is a singleVM or Container
• Server Group is group of Instances
Instance
ServerGroup
chadev-test-v000
NamingConvention
• Netflix Frigga
• Used to identify resources
• application-stack-detail-version
chadev-test-integration-v001
application stack detail version
ServerGroupActions
• Deploy (Create)
• Resize
• Enable/Disable - remove from service
• Clone
• Destroy
• Rollback
Clusters
• Logical grouping of Server Groups (enabled/disabled)
• Based on application-stack-detail
• demoapp-staging & demoapp-production
chadev-test-v000 chadev-staging-v000
Clusters
Applications
• Logical grouping of Clusters
• Based on application-stack-detail
• demoapp
• Multiple environments/regions
Applications
chadev-staging-v000 chadev-production-v000chadev-testing-v000
Pipelines
• Declarative Deployments
• Multiple trigger sources
• Serial/Parallel stages
DemoTime!!
• Create a Load Balancer to expose traffic
• Deploy an API service to Kubernetes
• Build a canary pipeline
• Deploy a new version automatically
Drawbacks
• Missing good“infra as code”solution
‣ Versioned S3 buckets
‣ https://github.com/spinnaker/dcd-spec
• Can only deploy to cloud based stacks with Docker/VM
• Programatic API access is…difficult
• Built in auditing mechanism
CaseStudies
https://goo.gl/tXJoKV https://goo.gl/QcLwhE
Reference
• blog.spinnaker.io
• spinnaker.io
• github.com/spinnaker/spinnaker
• http://join.spinnaker.io/
We’rehiring!
https://www.skuid.com/careers/

Spinnaker Chadev