Orchestrating VM & Container Deployments

24
Orchestrating VM & Container Deployments

Transcript of Orchestrating VM & Container Deployments

Page 1: Orchestrating VM & Container Deployments

Orchestrating VM & Container Deployments

Page 2: Orchestrating VM & Container Deployments

Google's Motivations

● Tooling has always been a priority at Google

● 2B lines of code

● 50% of code changes monthly

● 30k submits / day

● 6000 builds / hour

● 9000 releases / day

Page 3: Orchestrating VM & Container Deployments

Google's Motivations

● Netflix and Spinnaker’s core tenets align with Google’s

● Take advantage of massive elastic infrastructure

● Immutable infrastructure

● Continuous delivery

● Self-service tools

Page 4: Orchestrating VM & Container Deployments

Google's Motivations

● Our internal platform and tooling is container oriented

● Develop out the Google Cloud Platform toolset for VMs, containers and PaaS

● Spinnaker is a great starting point for VM oriented tooling

Page 5: Orchestrating VM & Container Deployments

● Contribute to OSS that aligns with our culture and goals

● Kubernetes, Bazel

● Working towards an open cloud - choices, transition, flexibility

● Long term commitment to the Spinnaker project

● Dedicated engineering team

● Several internal (and external!) teams are using Spinnaker

Google's (OSS) Motivations

Page 6: Orchestrating VM & Container Deployments

Quick Spinnaker Project History● Started by Netflix in 2014

○ An evolution of earlier Netflix projects (incl. Asgard)

● Google involved since early on

● Many additional companies and individuals are involved now○ Target, Veritas, Microsoft, Schibsted, Pivotal, Kenzan, Armory, ...

● Support for many cloud platforms, and growing

● Open sourced in November 2015

Page 7: Orchestrating VM & Container Deployments

Terminology & Cluster Management

Page 8: Orchestrating VM & Container Deployments

Spinnaker promotes model of:Build candidate → Test in running system → Push to production

Similar process used internally at Google

Bake Deploy Disable orDestroy

Trigger

OSPKG (.deb)

WebhookBuild/TestPush

Commit

Your favorite CI system

Deployment Strategy

New AutoScaling Group

Old AutoScaling Group

AWS/EC2images

Old ManagedInstance Group

New ManagedInstance Group

images

Deployment Strategy

GCE

Page 9: Orchestrating VM & Container Deployments

Bake & Deploy VM Demo

Page 10: Orchestrating VM & Container Deployments

Bake Deploy Disable orDestroy

Trigger

Old ManagedInstance Group

New ManagedInstance Group

images

Deployment Strategy

GCE

Deployment Strategy

New Replica Set

Old Replica Setdocker

images

OSPKG (.deb)

WebhookBuild/TestPush

Commit

Kubernetes

Trigger

Same operations for containers!

DockerRegistry

Page 11: Orchestrating VM & Container Deployments

Kubernetes Deployments API

Great for limiting resource utilization.

Ensures deployments are rolled out slowly.

Puts little pressure on downstream dependencies.

Page 12: Orchestrating VM & Container Deployments

Kubernetes Deployments API

Can’t be paused deterministically for validation.

High rollback cost.

Rollouts are always linear.

Page 13: Orchestrating VM & Container Deployments

Rolling Red Black

Rollout user-defined target percentages. (1% → 2% → 10% → 50% → 100%)

Validation at every stage.

Puts little pressure on downstream dependencies.

Fast rollbacks.

Page 14: Orchestrating VM & Container Deployments

Rolling Red Black

Overprovisioning comes at the cost of rollback speed.

Page 15: Orchestrating VM & Container Deployments

(Fake) Rolling Red Black Demo

Target Percentages = 1% → 2% → 10% → 50% → 100%

Over Provisioning = 10%

Page 16: Orchestrating VM & Container Deployments

Rolling Red BlackOld Server Group New Server Group

Enabled: 100Running: 100

Enabled: 0Running: 0

Page 17: Orchestrating VM & Container Deployments

Rolling Red BlackOld Server Group New Server Group

Enabled: 99Running: 100

Enabled: 1Running: 1

Page 18: Orchestrating VM & Container Deployments

Rolling Red BlackOld Server Group New Server Group

Enabled: 98Running: 100

Enabled: 2Running: 2

Page 19: Orchestrating VM & Container Deployments

Rolling Red BlackOld Server Group New Server Group

Enabled: 90Running: 100

Enabled: 10Running: 10

Page 20: Orchestrating VM & Container Deployments

Rolling Red BlackOld Server Group New Server Group

Enabled: 50Running: 60

Enabled: 50Running: 50

Page 21: Orchestrating VM & Container Deployments

Rolling Red BlackOld Server Group New Server Group

Enabled: 0Running: 10

Enabled: 100Running: 100

Page 22: Orchestrating VM & Container Deployments

Future Spinnaker Plans● Native canary support

● Template language for Pipelines

● Easier configuration using Halyard○ Support for target platforms contributed by multiple companies

● “1.0” release in April

Page 23: Orchestrating VM & Container Deployments

Key Takeaways● Google is committed to the Spinnaker project

● There’s more to Continuous Delivery than updating a server group

● Spinnaker makes it easy for developers to confidently rollout to production

● Spinnaker provides orchestration not possible with your cloud alone

Page 24: Orchestrating VM & Container Deployments

Thank you● Provision Spinnaker with Helm:

https://github.com/kubernetes/charts/tree/master/stable/spinnaker

● Questions?

spinnaker.io