pdf continuous delivery for dc:os with spinnaker · why continuous delivery? •decrease risks of...

52
Continuous Delivery for DC/OS with Spinnaker Will Gorman @willgorman

Upload: others

Post on 25-Jun-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: PDF Continuous Delivery for DC:OS with Spinnaker · Why continuous delivery? •Decrease risks of deployment •Decrease cost of deployment •Decrease delay between feature development

Continuous Delivery for DC/OSwith SpinnakerWill Gorman @willgorman

Page 2: PDF Continuous Delivery for DC:OS with Spinnaker · Why continuous delivery? •Decrease risks of deployment •Decrease cost of deployment •Decrease delay between feature development

Deploying software is challenging

Page 3: PDF Continuous Delivery for DC:OS with Spinnaker · Why continuous delivery? •Decrease risks of deployment •Decrease cost of deployment •Decrease delay between feature development

Why continuous delivery?

• Decrease risks of deployment• Decrease cost of deployment• Decrease delay between feature

development and availability

Page 4: PDF Continuous Delivery for DC:OS with Spinnaker · Why continuous delivery? •Decrease risks of deployment •Decrease cost of deployment •Decrease delay between feature development

Deployments should be:

•Safe•Automated•Flexible

Page 5: PDF Continuous Delivery for DC:OS with Spinnaker · Why continuous delivery? •Decrease risks of deployment •Decrease cost of deployment •Decrease delay between feature development
Page 6: PDF Continuous Delivery for DC:OS with Spinnaker · Why continuous delivery? •Decrease risks of deployment •Decrease cost of deployment •Decrease delay between feature development

Safety features

• Unit tests• Sandbox deployments• Smoke tests• Zero downtime deployments• Rolling/canary deployments

Page 7: PDF Continuous Delivery for DC:OS with Spinnaker · Why continuous delivery? •Decrease risks of deployment •Decrease cost of deployment •Decrease delay between feature development

Automation

• Automation is an enabler of safety• Define and test the parts of deployments

that aren’t often performed• Deploy smaller changes more frequently

Page 8: PDF Continuous Delivery for DC:OS with Spinnaker · Why continuous delivery? •Decrease risks of deployment •Decrease cost of deployment •Decrease delay between feature development

Deployment Strategies

Page 9: PDF Continuous Delivery for DC:OS with Spinnaker · Why continuous delivery? •Decrease risks of deployment •Decrease cost of deployment •Decrease delay between feature development

Flexible

• Many teams with similar needs, but some variation

• Engineers naturally want to automate• Make it easy to share and reuse

Page 10: PDF Continuous Delivery for DC:OS with Spinnaker · Why continuous delivery? •Decrease risks of deployment •Decrease cost of deployment •Decrease delay between feature development

How?

Page 11: PDF Continuous Delivery for DC:OS with Spinnaker · Why continuous delivery? •Decrease risks of deployment •Decrease cost of deployment •Decrease delay between feature development

Introducing SpinnakerThe open-source, multi-cloud, continuous delivery tool

Page 12: PDF Continuous Delivery for DC:OS with Spinnaker · Why continuous delivery? •Decrease risks of deployment •Decrease cost of deployment •Decrease delay between feature development

Continuous Delivery Features

• Pipelines from commit to production• CI builds• Image baking• Deployment strategies• Validation• Promotion across environments

Page 13: PDF Continuous Delivery for DC:OS with Spinnaker · Why continuous delivery? •Decrease risks of deployment •Decrease cost of deployment •Decrease delay between feature development

Multi-cloud

Page 14: PDF Continuous Delivery for DC:OS with Spinnaker · Why continuous delivery? •Decrease risks of deployment •Decrease cost of deployment •Decrease delay between feature development

Multi-cloud

• Spinnaker is multi-cloud but not a pure abstraction

Page 15: PDF Continuous Delivery for DC:OS with Spinnaker · Why continuous delivery? •Decrease risks of deployment •Decrease cost of deployment •Decrease delay between feature development

Spinnaker ConceptsApplications, Clusters, Server Groups, and Instances

Page 16: PDF Continuous Delivery for DC:OS with Spinnaker · Why continuous delivery? •Decrease risks of deployment •Decrease cost of deployment •Decrease delay between feature development

Applications and Clusters

Application

Clusters

Page 17: PDF Continuous Delivery for DC:OS with Spinnaker · Why continuous delivery? •Decrease risks of deployment •Decrease cost of deployment •Decrease delay between feature development

Server Groups and Instances

Page 18: PDF Continuous Delivery for DC:OS with Spinnaker · Why continuous delivery? •Decrease risks of deployment •Decrease cost of deployment •Decrease delay between feature development

Marathon applications and tasks

Page 19: PDF Continuous Delivery for DC:OS with Spinnaker · Why continuous delivery? •Decrease risks of deployment •Decrease cost of deployment •Decrease delay between feature development

Create New Server Group

Page 20: PDF Continuous Delivery for DC:OS with Spinnaker · Why continuous delivery? •Decrease risks of deployment •Decrease cost of deployment •Decrease delay between feature development

Create New Server Group

Page 21: PDF Continuous Delivery for DC:OS with Spinnaker · Why continuous delivery? •Decrease risks of deployment •Decrease cost of deployment •Decrease delay between feature development

Multi-Region Deployments

Page 22: PDF Continuous Delivery for DC:OS with Spinnaker · Why continuous delivery? •Decrease risks of deployment •Decrease cost of deployment •Decrease delay between feature development

Pipelines

Page 23: PDF Continuous Delivery for DC:OS with Spinnaker · Why continuous delivery? •Decrease risks of deployment •Decrease cost of deployment •Decrease delay between feature development

Triggers

Page 24: PDF Continuous Delivery for DC:OS with Spinnaker · Why continuous delivery? •Decrease risks of deployment •Decrease cost of deployment •Decrease delay between feature development

Docker Registry Trigger

Page 25: PDF Continuous Delivery for DC:OS with Spinnaker · Why continuous delivery? •Decrease risks of deployment •Decrease cost of deployment •Decrease delay between feature development

DC/OS Stages Supported

• Server Groups• Create

• Resize

• Clone

• Destroy

• Pipeline Stages• Check preconditions

• Deploy

• Destroy Server Group

• Disable Cluster

• Find Image from Cluster

• Jenkins, Manual Judgement, Pipeline, Resize Server Group, Run Job, Scale Down Cluster, Script, Shrink Cluster, Wait

Page 26: PDF Continuous Delivery for DC:OS with Spinnaker · Why continuous delivery? •Decrease risks of deployment •Decrease cost of deployment •Decrease delay between feature development

Deploy

Page 27: PDF Continuous Delivery for DC:OS with Spinnaker · Why continuous delivery? •Decrease risks of deployment •Decrease cost of deployment •Decrease delay between feature development

Destroy Server Group

Page 28: PDF Continuous Delivery for DC:OS with Spinnaker · Why continuous delivery? •Decrease risks of deployment •Decrease cost of deployment •Decrease delay between feature development

Run Job

Execute a Metronome job as a step in a pipeline.

Write JSON or property file output to the Mesos sandbox to create context for later steps

Page 29: PDF Continuous Delivery for DC:OS with Spinnaker · Why continuous delivery? •Decrease risks of deployment •Decrease cost of deployment •Decrease delay between feature development

Pipeline Expressions

• Spring Expression Language• Works almost anywhere• Generate attributes of

pipelines at run-time• Evaluate to test for pipeline

branching conditions

Page 30: PDF Continuous Delivery for DC:OS with Spinnaker · Why continuous delivery? •Decrease risks of deployment •Decrease cost of deployment •Decrease delay between feature development

Pipeline Expressions

Page 31: PDF Continuous Delivery for DC:OS with Spinnaker · Why continuous delivery? •Decrease risks of deployment •Decrease cost of deployment •Decrease delay between feature development

Deployment Safeguards

Page 32: PDF Continuous Delivery for DC:OS with Spinnaker · Why continuous delivery? •Decrease risks of deployment •Decrease cost of deployment •Decrease delay between feature development

Execution Windows

Page 33: PDF Continuous Delivery for DC:OS with Spinnaker · Why continuous delivery? •Decrease risks of deployment •Decrease cost of deployment •Decrease delay between feature development

Execution Windows

Page 34: PDF Continuous Delivery for DC:OS with Spinnaker · Why continuous delivery? •Decrease risks of deployment •Decrease cost of deployment •Decrease delay between feature development

Traffic Guards

Page 35: PDF Continuous Delivery for DC:OS with Spinnaker · Why continuous delivery? •Decrease risks of deployment •Decrease cost of deployment •Decrease delay between feature development

Chaos Monkey

Page 36: PDF Continuous Delivery for DC:OS with Spinnaker · Why continuous delivery? •Decrease risks of deployment •Decrease cost of deployment •Decrease delay between feature development

Spinnaker Patterns for DC/OS

Page 37: PDF Continuous Delivery for DC:OS with Spinnaker · Why continuous delivery? •Decrease risks of deployment •Decrease cost of deployment •Decrease delay between feature development

Deployment timeouts

Page 38: PDF Continuous Delivery for DC:OS with Spinnaker · Why continuous delivery? •Decrease risks of deployment •Decrease cost of deployment •Decrease delay between feature development
Page 39: PDF Continuous Delivery for DC:OS with Spinnaker · Why continuous delivery? •Decrease risks of deployment •Decrease cost of deployment •Decrease delay between feature development
Page 40: PDF Continuous Delivery for DC:OS with Spinnaker · Why continuous delivery? •Decrease risks of deployment •Decrease cost of deployment •Decrease delay between feature development
Page 41: PDF Continuous Delivery for DC:OS with Spinnaker · Why continuous delivery? •Decrease risks of deployment •Decrease cost of deployment •Decrease delay between feature development

Incremental Automation

• Problem: Not everything in our release process is completely automated yet

Page 42: PDF Continuous Delivery for DC:OS with Spinnaker · Why continuous delivery? •Decrease risks of deployment •Decrease cost of deployment •Decrease delay between feature development

Manual Judgment to Rollback

Page 43: PDF Continuous Delivery for DC:OS with Spinnaker · Why continuous delivery? •Decrease risks of deployment •Decrease cost of deployment •Decrease delay between feature development

Configuration Change Triggers

� Problem: Spinnaker pipeline configuration isn’t the primary source for our application configuration

� Prefer configuration to be stored in version control or generated to reduce duplication across applications

Page 44: PDF Continuous Delivery for DC:OS with Spinnaker · Why continuous delivery? •Decrease risks of deployment •Decrease cost of deployment •Decrease delay between feature development

Configuration Change Triggers

Page 45: PDF Continuous Delivery for DC:OS with Spinnaker · Why continuous delivery? •Decrease risks of deployment •Decrease cost of deployment •Decrease delay between feature development

Load Balancer

• Problem: Marathon-LB doesn’t support Spinnaker load balancer operations

Page 46: PDF Continuous Delivery for DC:OS with Spinnaker · Why continuous delivery? •Decrease risks of deployment •Decrease cost of deployment •Decrease delay between feature development

marathon-lb

HAPROXY_0_VHOST:foo.example.com

/demo/foo-v000HAPROXY_0_VHOST:foo.example.com

/demo/foo-v002

Xmarathon-lb

HAPROXY_0_VHOST:foo.example.com

/demo/foo-v000HAPROXY_0_VHOST:foo.example.com

/demo/foo-v002

Load Balancer

marathon-lb

HAPROXY_0_VHOST:foo.example.com

/demo/foo-v000HAPROXY_0_VHOST:foo.example.com

/demo/foo-v002

Page 47: PDF Continuous Delivery for DC:OS with Spinnaker · Why continuous delivery? •Decrease risks of deployment •Decrease cost of deployment •Decrease delay between feature development

Traefik

Source: https://traefik.io/

Page 48: PDF Continuous Delivery for DC:OS with Spinnaker · Why continuous delivery? •Decrease risks of deployment •Decrease cost of deployment •Decrease delay between feature development

Traefik

Traefik

HAPROXY_0_VHOST:foo.example.comtraefik.backend:

foo

/demo/foo-v000

HAPROXY_0_VHOST:foo.example.comtraefik.backend:

foo

/demo/foo-v001

Page 49: PDF Continuous Delivery for DC:OS with Spinnaker · Why continuous delivery? •Decrease risks of deployment •Decrease cost of deployment •Decrease delay between feature development

Load Balancer

• Problem: Traefik still discovers routing rules through labels, which can’t change after an instance is started• Solution – DC/OS 1.10 programmable Edge-LB

package (beta)

Page 50: PDF Continuous Delivery for DC:OS with Spinnaker · Why continuous delivery? •Decrease risks of deployment •Decrease cost of deployment •Decrease delay between feature development
Page 51: PDF Continuous Delivery for DC:OS with Spinnaker · Why continuous delivery? •Decrease risks of deployment •Decrease cost of deployment •Decrease delay between feature development

Enterprise and Open Source DC/OS

• Only supports DC/OS Enterprise authentication methods currently

• DC/OS Open Source works with authentication disabled

Page 52: PDF Continuous Delivery for DC:OS with Spinnaker · Why continuous delivery? •Decrease risks of deployment •Decrease cost of deployment •Decrease delay between feature development

Thanks!

• https://www.spinnaker.io/• Slack: https://join.spinnaker.io

• http://careers.cerner.com• http://engineering.cerner.com