Spinnaker Chadev

Post on 23-Jan-2018

220 views 0 download

Transcript of Spinnaker Chadev

Deploy with Confidence

Spinnaker & Continuous Deployment

Ethan Rogers

Build & Release Engineer

Skuid

About Me• Build & Release @ Skuid

• Spinnaker Contributor

• CI/CD Enthusiast

• @e_frogers (Twitter)

• @ethanfrogers (Slack/Github)

A Quick Survey

Overview• What is Spinnaker?

• Concepts

• Deploying with Spinnaker (Demo!)

• Conclusion

What about a Canary?

What about Rollbacks?

Why Spinnaker?• Safe, repeatable deployments

• Clear picture of what’s running

• Easy scaling and rollbacks

• Multiple deployment strategies OOB

• Consolidated best practices

What is Spinnaker?

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/Cron Triggers

• Rocso - Image Bakery via Packer

• Halyard - Configuration/Installation

Bells & Whistles

Instances & Server Groups• Instance is a single VM or Container

• Server Group is group of Instances

Instance

Server Group

chadev-test-v000

Naming Convention• Netflix Frigga

• Used to identify resources

• application-stack-detail-version

chadev-test-integration-v001

application stack detail version

Server Group Actions• 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

Demo Time!!

• 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

Case Studies

https://goo.gl/tXJoKV https://goo.gl/QcLwhE

Reference• blog.spinnaker.io

• spinnaker.io

• github.com/spinnaker/spinnaker

• http://join.spinnaker.io/

We’re hiring!

https://www.skuid.com/careers/