continuous delivery for dc os with spinnaker
play

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


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

  2. Deploying software is challenging

  3. Why continuous delivery? • Decrease risks of deployment • Decrease cost of deployment • Decrease delay between feature development and availability

  4. Deployments should be: • Safe • Automated • Flexible

  5. Safety features • Unit tests • Sandbox deployments • Smoke tests • Zero downtime deployments • Rolling/canary deployments

  6. Automation • Automation is an enabler of safety • Define and test the parts of deployments that aren’t often performed • Deploy smaller changes more frequently

  7. Deployment Strategies

  8. Flexible • Many teams with similar needs, but some variation • Engineers naturally want to automate • Make it easy to share and reuse

  9. How?

  10. Introducing Spinnaker The open-source, multi-cloud, continuous delivery tool

  11. Continuous Delivery Features • Pipelines from commit to production • CI builds • Image baking • Deployment strategies • Validation • Promotion across environments

  12. Multi-cloud

  13. Multi-cloud • Spinnaker is multi-cloud but not a pure abstraction

  14. Spinnaker Concepts Applications, Clusters, Server Groups, and Instances

  15. Applications and Clusters Application Clusters

  16. Server Groups and Instances

  17. Marathon applications and tasks

  18. Create New Server Group

  19. Create New Server Group

  20. Multi-Region Deployments

  21. Pipelines

  22. Triggers

  23. Docker Registry Trigger

  24. DC/OS Stages Supported Pipeline Stages • Server Groups • Check preconditions • Create • Deploy • Resize • Destroy Server Group • Clone • Disable Cluster • Destroy • Find Image from Cluster • Jenkins, Manual Judgement, Pipeline, • Resize Server Group, Run Job, Scale Down Cluster, Script, Shrink Cluster, Wait

  25. Deploy

  26. Destroy Server Group

  27. 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

  28. Pipeline Expressions • Spring Expression Language • Works almost anywhere • Generate attributes of pipelines at run-time • Evaluate to test for pipeline branching conditions

  29. Pipeline Expressions

  30. Deployment Safeguards

  31. Execution Windows

  32. Execution Windows

  33. Traffic Guards

  34. Chaos Monkey

  35. Spinnaker Patterns for DC/OS

  36. Deployment timeouts

  37. Incremental Automation • Problem: Not everything in our release process is completely automated yet

  38. Manual Judgment to Rollback

  39. 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

  40. Configuration Change Triggers

  41. Load Balancer • Problem: Marathon-LB doesn’t support Spinnaker load balancer operations

  42. Load Balancer marathon-lb marathon-lb marathon-lb X /demo/foo-v000 /demo/foo-v000 /demo/foo-v000 /demo/foo-v002 /demo/foo-v002 /demo/foo-v002 HAPROXY_0_VHOST: HAPROXY_0_VHOST: HAPROXY_0_VHOST: HAPROXY_0_VHOST: HAPROXY_0_VHOST: HAPROXY_0_VHOST: foo.example.com foo.example.com foo.example.com foo.example.com foo.example.com foo.example.com

  43. Traefik Source: https://traefik.io/

  44. Traefik Traefik /demo/foo-v000 /demo/foo-v001 HAPROXY_0_VHOST: HAPROXY_0_VHOST: foo.example.com foo.example.com traefik.backend: traefik.backend: foo foo

  45. 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)

  46. Enterprise and Open Source DC/OS • Only supports DC/OS Enterprise authentication methods currently • DC/OS Open Source works with authentication disabled

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

Recommend


More recommend