Continuous Delivery for DC/OS with Spinnaker Will Gorman - - PowerPoint PPT Presentation

continuous delivery for dc os with spinnaker
SMART_READER_LITE
LIVE PREVIEW

Continuous Delivery for DC/OS with Spinnaker Will Gorman - - PowerPoint PPT Presentation

Continuous Delivery for DC/OS with Spinnaker Will Gorman @willgorman Deploying software is challenging Why continuous delivery? Decrease risks of deployment Decrease cost of deployment Decrease delay between feature development


slide-1
SLIDE 1

Continuous Delivery for DC/OS with Spinnaker

Will Gorman @willgorman

slide-2
SLIDE 2

Deploying software is challenging

slide-3
SLIDE 3

Why continuous delivery?

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

development and availability

slide-4
SLIDE 4

Deployments should be:

  • Safe
  • Automated
  • Flexible
slide-5
SLIDE 5
slide-6
SLIDE 6

Safety features

  • Unit tests
  • Sandbox deployments
  • Smoke tests
  • Zero downtime deployments
  • Rolling/canary deployments
slide-7
SLIDE 7

Automation

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

that aren’t often performed

  • Deploy smaller changes more frequently
slide-8
SLIDE 8

Deployment Strategies

slide-9
SLIDE 9

Flexible

  • Many teams with similar needs, but some

variation

  • Engineers naturally want to automate
  • Make it easy to share and reuse
slide-10
SLIDE 10

How?

slide-11
SLIDE 11

Introducing Spinnaker

The open-source, multi-cloud, continuous delivery tool

slide-12
SLIDE 12

Continuous Delivery Features

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

Multi-cloud

slide-14
SLIDE 14

Multi-cloud

  • Spinnaker is multi-cloud but not a pure

abstraction

slide-15
SLIDE 15

Spinnaker Concepts

Applications, Clusters, Server Groups, and Instances

slide-16
SLIDE 16

Applications and Clusters

Application Clusters
slide-17
SLIDE 17

Server Groups and Instances

slide-18
SLIDE 18

Marathon applications and tasks

slide-19
SLIDE 19

Create New Server Group

slide-20
SLIDE 20

Create New Server Group

slide-21
SLIDE 21

Multi-Region Deployments

slide-22
SLIDE 22

Pipelines

slide-23
SLIDE 23

Triggers

slide-24
SLIDE 24

Docker Registry Trigger

slide-25
SLIDE 25

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
slide-26
SLIDE 26

Deploy

slide-27
SLIDE 27

Destroy Server Group

slide-28
SLIDE 28

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
slide-29
SLIDE 29

Pipeline Expressions

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

pipelines at run-time

  • Evaluate to test for pipeline

branching conditions

slide-30
SLIDE 30

Pipeline Expressions

slide-31
SLIDE 31

Deployment Safeguards

slide-32
SLIDE 32

Execution Windows

slide-33
SLIDE 33

Execution Windows

slide-34
SLIDE 34

Traffic Guards

slide-35
SLIDE 35

Chaos Monkey

slide-36
SLIDE 36

Spinnaker Patterns for DC/OS

slide-37
SLIDE 37

Deployment timeouts

slide-38
SLIDE 38
slide-39
SLIDE 39
slide-40
SLIDE 40
slide-41
SLIDE 41

Incremental Automation

  • Problem: Not everything in our release process is

completely automated yet

slide-42
SLIDE 42

Manual Judgment to Rollback

slide-43
SLIDE 43

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

slide-44
SLIDE 44

Configuration Change Triggers

slide-45
SLIDE 45

Load Balancer

  • Problem: Marathon-LB doesn’t

support Spinnaker load balancer

  • perations
slide-46
SLIDE 46 marathon-lb HAPROXY_0_VHOST: foo.example.com /demo/foo-v000 HAPROXY_0_VHOST: foo.example.com /demo/foo-v002

X

marathon-lb HAPROXY_0_VHOST: foo.example.com /demo/foo-v000 HAPROXY_0_VHOST: foo.example.com /demo/foo-v002

Load Balancer

marathon-lb HAPROXY_0_VHOST: foo.example.com /demo/foo-v000 HAPROXY_0_VHOST: foo.example.com /demo/foo-v002
slide-47
SLIDE 47

Traefik

Source: https://traefik.io/
slide-48
SLIDE 48

Traefik

Traefik HAPROXY_0_VHOST: foo.example.com traefik.backend: foo /demo/foo-v000 HAPROXY_0_VHOST: foo.example.com traefik.backend: foo /demo/foo-v001
slide-49
SLIDE 49

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)

slide-50
SLIDE 50
slide-51
SLIDE 51

Enterprise and Open Source DC/OS

  • Only supports DC/OS Enterprise authentication

methods currently

  • DC/OS Open Source works with authentication

disabled

slide-52
SLIDE 52

Thanks!

  • https://www.spinnaker.io/
  • Slack: https://join.spinnaker.io
  • http://careers.cerner.com
  • http://engineering.cerner.com