55
Project Blueshift Deepak Giridharagopal CTO & Chief Architect @ Puppet PuppetConf 2016

PuppetConf 2016: Docker, Mesos, Kubernetes and...Puppet? Don't Panic! – Deepak Giridharagopal, Puppet

  • Upload
    puppet

  • View
    188

  • Download
    3

Embed Size (px)

Citation preview

Page 1: PuppetConf 2016:  Docker, Mesos, Kubernetes and...Puppet? Don't Panic! – Deepak Giridharagopal, Puppet

Project Blueshift Deepak Giridharagopal

CTO & Chief Architect @ Puppet PuppetConf 2016

Page 2: PuppetConf 2016:  Docker, Mesos, Kubernetes and...Puppet? Don't Panic! – Deepak Giridharagopal, Puppet

@ grim_radical

Page 3: PuppetConf 2016:  Docker, Mesos, Kubernetes and...Puppet? Don't Panic! – Deepak Giridharagopal, Puppet

The way we build systems today will not be the way we build systems tomorrow.

deepak / @grim_radical / #puppetconf 2016

Page 4: PuppetConf 2016:  Docker, Mesos, Kubernetes and...Puppet? Don't Panic! – Deepak Giridharagopal, Puppet

Now is a great time for those who build & manage systems!

deepak / @grim_radical / #puppetconf 2016

Page 5: PuppetConf 2016:  Docker, Mesos, Kubernetes and...Puppet? Don't Panic! – Deepak Giridharagopal, Puppet

Bare metal, virtual machines, containers, job schedulers, infrastructure APIs, service discovery, dynamic configuration, cloud functions, unikernels…

deepak / @grim_radical / #puppetconf 2016

Page 6: PuppetConf 2016:  Docker, Mesos, Kubernetes and...Puppet? Don't Panic! – Deepak Giridharagopal, Puppet

What can the systems of the past & present teach us about how to manage stuff in the future?

deepak / @grim_radical / #puppetconf 2016

Page 7: PuppetConf 2016:  Docker, Mesos, Kubernetes and...Puppet? Don't Panic! – Deepak Giridharagopal, Puppet

What is configuration management?

No, seriously, what is it?

deepak / @grim_radical / #puppetconf 2016

Page 8: PuppetConf 2016:  Docker, Mesos, Kubernetes and...Puppet? Don't Panic! – Deepak Giridharagopal, Puppet
Page 9: PuppetConf 2016:  Docker, Mesos, Kubernetes and...Puppet? Don't Panic! – Deepak Giridharagopal, Puppet

deepak / @grim_radical / #puppetconf 2016

Page 10: PuppetConf 2016:  Docker, Mesos, Kubernetes and...Puppet? Don't Panic! – Deepak Giridharagopal, Puppet

Identification Control Status accounting Verification and audit

deepak / @grim_radical / #puppetconf 2016

thanks @garethr!

Page 11: PuppetConf 2016:  Docker, Mesos, Kubernetes and...Puppet? Don't Panic! – Deepak Giridharagopal, Puppet

To properly manage a system, you must understand & control the inputs to that system, over time.

deepak / @grim_radical / #puppetconf 2016

I mean "system" in the abstract sense. stay with me, people!

Page 12: PuppetConf 2016:  Docker, Mesos, Kubernetes and...Puppet? Don't Panic! – Deepak Giridharagopal, Puppet

Example:

Files vs. Packages

deepak / @grim_radical / #puppetconf 2016

Page 13: PuppetConf 2016:  Docker, Mesos, Kubernetes and...Puppet? Don't Panic! – Deepak Giridharagopal, Puppet

Example:

AWS autoscaling group

deepak / @grim_radical / #puppetconf 2016

Page 14: PuppetConf 2016:  Docker, Mesos, Kubernetes and...Puppet? Don't Panic! – Deepak Giridharagopal, Puppet

Example:

etcd key/value pairs

deepak / @grim_radical / #puppetconf 2016

Page 15: PuppetConf 2016:  Docker, Mesos, Kubernetes and...Puppet? Don't Panic! – Deepak Giridharagopal, Puppet

The nature of your systems’ inputs may change along with your tech, but they’re still there and they’re your problem.

deepak / @grim_radical / #puppetconf 2016

Page 16: PuppetConf 2016:  Docker, Mesos, Kubernetes and...Puppet? Don't Panic! – Deepak Giridharagopal, Puppet

There’s more to running a farm than the dilemma of pets vs. cattle.

(n.b. I hate this analogy)

deepak / @grim_radical / #puppetconf 2016

Page 17: PuppetConf 2016:  Docker, Mesos, Kubernetes and...Puppet? Don't Panic! – Deepak Giridharagopal, Puppet

There’s more to running The Empire than the dilemma of Jango Fett vs. clone troopers

(thanks @brianb!)

deepak / @grim_radical / #puppetconf 2016

Page 18: PuppetConf 2016:  Docker, Mesos, Kubernetes and...Puppet? Don't Panic! – Deepak Giridharagopal, Puppet

New technology eliminates some management problems, but creates some new ones.

Just like all software, ever.

deepak / @grim_radical / #puppetconf 2016

Page 19: PuppetConf 2016:  Docker, Mesos, Kubernetes and...Puppet? Don't Panic! – Deepak Giridharagopal, Puppet

There is no future with fewer servers.

deepak / @grim_radical / #puppetconf 2016

note: I mean server in the SRE sense

Page 20: PuppetConf 2016:  Docker, Mesos, Kubernetes and...Puppet? Don't Panic! – Deepak Giridharagopal, Puppet

If you’re going to put all your eggs in one basket, you need to take expert care of that basket.

deepak / @grim_radical / #puppetconf 2016

Page 21: PuppetConf 2016:  Docker, Mesos, Kubernetes and...Puppet? Don't Panic! – Deepak Giridharagopal, Puppet

The future is not evenly distributed.

deepak / @grim_radical / #puppetconf 2016

Page 22: PuppetConf 2016:  Docker, Mesos, Kubernetes and...Puppet? Don't Panic! – Deepak Giridharagopal, Puppet

Unified tooling across physical, virtual, containerized, cloud, etc. infrastructure is a big deal!

deepak / @grim_radical / #puppetconf 2016

Page 23: PuppetConf 2016:  Docker, Mesos, Kubernetes and...Puppet? Don't Panic! – Deepak Giridharagopal, Puppet

Puppet is a bridge to the future.

Page 24: PuppetConf 2016:  Docker, Mesos, Kubernetes and...Puppet? Don't Panic! – Deepak Giridharagopal, Puppet

Project Blueshift:

Use Puppet to provide and manage next generation software in a simple, reliable, and consistent way.

deepak / @grim_radical / #puppetconf 2016

Page 25: PuppetConf 2016:  Docker, Mesos, Kubernetes and...Puppet? Don't Panic! – Deepak Giridharagopal, Puppet

(without introducing more risk)

Docker module

Page 26: PuppetConf 2016:  Docker, Mesos, Kubernetes and...Puppet? Don't Panic! – Deepak Giridharagopal, Puppet

(without introducing more risk)

Configure Docker

class { 'docker': tcp_bind => 'tcp://127.0.0.1:4243', socket_bind => 'unix:///var/run/docker.sock',

version => '1.11', dns => '8.8.8.8', }

Page 27: PuppetConf 2016:  Docker, Mesos, Kubernetes and...Puppet? Don't Panic! – Deepak Giridharagopal, Puppet

(without introducing more risk)

Run Docker containers

docker::run { 'helloworld': image => 'ubuntu:precise',

command => '/bin/sh -c "while true; do echo hello world; sleep 1; done"', }

Page 28: PuppetConf 2016:  Docker, Mesos, Kubernetes and...Puppet? Don't Panic! – Deepak Giridharagopal, Puppet

(without introducing more risk)

Manage networks

docker_network { 'my-net': ensure => present, driver => 'overlay', subnet => '192.168.1.0/24', gateway => '192.168.1.1', ip_range => '192.168.1.4/32', }

Page 29: PuppetConf 2016:  Docker, Mesos, Kubernetes and...Puppet? Don't Panic! – Deepak Giridharagopal, Puppet

(without introducing more risk)

Setup UCPclass { 'docker_ucp': controller => true, version => '1.0.0', tracking => false, swarm_scheduler => 'binpack', preserve_certs => true, docker_socket_path => '/var/run/docker.sock', license_file => '/etc/docker/subscription.lic', }

Page 30: PuppetConf 2016:  Docker, Mesos, Kubernetes and...Puppet? Don't Panic! – Deepak Giridharagopal, Puppet

(without introducing more risk)

Real world case studies

Page 31: PuppetConf 2016:  Docker, Mesos, Kubernetes and...Puppet? Don't Panic! – Deepak Giridharagopal, Puppet

(without introducing more risk)

Read the book

Page 32: PuppetConf 2016:  Docker, Mesos, Kubernetes and...Puppet? Don't Panic! – Deepak Giridharagopal, Puppet

(without introducing more risk)

puppet-in-docker

Page 33: PuppetConf 2016:  Docker, Mesos, Kubernetes and...Puppet? Don't Panic! – Deepak Giridharagopal, Puppet

(without introducing more risk)

Docker Hub

Page 34: PuppetConf 2016:  Docker, Mesos, Kubernetes and...Puppet? Don't Panic! – Deepak Giridharagopal, Puppet

(without introducing more risk)

Run Puppet in Docker

$ docker run --net puppet \ --name puppet \ --hostname puppet \ puppet/puppetserver

Page 35: PuppetConf 2016:  Docker, Mesos, Kubernetes and...Puppet? Don't Panic! – Deepak Giridharagopal, Puppet

(without introducing more risk)

Develop on Windows

Page 36: PuppetConf 2016:  Docker, Mesos, Kubernetes and...Puppet? Don't Panic! – Deepak Giridharagopal, Puppet

(without introducing more risk)

Launch with Composeversion: '2'

services: puppet: container_name: puppet hostname: puppet image: puppet/puppetserver ports:

- 8140 volumes:

- ./code:/etc/puppetlabs/code/

Page 37: PuppetConf 2016:  Docker, Mesos, Kubernetes and...Puppet? Don't Panic! – Deepak Giridharagopal, Puppet

(without introducing more risk)

puppetlabs-image_build

Page 38: PuppetConf 2016:  Docker, Mesos, Kubernetes and...Puppet? Don't Panic! – Deepak Giridharagopal, Puppet

Building Docker images with Puppet should be as simple as building them with docker build

Page 39: PuppetConf 2016:  Docker, Mesos, Kubernetes and...Puppet? Don't Panic! – Deepak Giridharagopal, Puppet

(without introducing more risk)

Building with Puppet

$ ls Puppetfile manifests $ puppet docker build \ --image-name garethr/someimage

Page 40: PuppetConf 2016:  Docker, Mesos, Kubernetes and...Puppet? Don't Panic! – Deepak Giridharagopal, Puppet

(without introducing more risk)

Kubernetes module

Page 41: PuppetConf 2016:  Docker, Mesos, Kubernetes and...Puppet? Don't Panic! – Deepak Giridharagopal, Puppet

(without introducing more risk)

Puppet has a long history of making software deployment easier and more reliable… I'm really excited to see Puppet enabling their customers to seamlessly adopt new technology like containers and Kubernetes while maintaining a consistent, familiar experience for production quality software deployment.Brendan Burns, cofounder, Kubernetes

Page 42: PuppetConf 2016:  Docker, Mesos, Kubernetes and...Puppet? Don't Panic! – Deepak Giridharagopal, Puppet

(without introducing more risk)

Model K8S resourceskubernetes_pod { 'sample-pod': ensure => present, metadata => { namespace => 'default', }, spec => { containers => [{ name => 'container-name', image => 'nginx', }], },}

Page 43: PuppetConf 2016:  Docker, Mesos, Kubernetes and...Puppet? Don't Panic! – Deepak Giridharagopal, Puppet

(without introducing more risk)

Create abstractions

controller_service_pair { 'frontend': app => 'guestbook', role => 'php-redis', tier => 'frontend', port => 80, image => 'gcr.io/google_samples/gb-frontend:v3', replicas => 3, service_type => 'LoadBalancer',}

Page 44: PuppetConf 2016:  Docker, Mesos, Kubernetes and...Puppet? Don't Panic! – Deepak Giridharagopal, Puppet

(without introducing more risk)

Official blog post

Page 45: PuppetConf 2016:  Docker, Mesos, Kubernetes and...Puppet? Don't Panic! – Deepak Giridharagopal, Puppet

(without introducing more risk)

Extending to OpenShift

Page 46: PuppetConf 2016:  Docker, Mesos, Kubernetes and...Puppet? Don't Panic! – Deepak Giridharagopal, Puppet

Minimal OS’s

Page 47: PuppetConf 2016:  Docker, Mesos, Kubernetes and...Puppet? Don't Panic! – Deepak Giridharagopal, Puppet

(without introducing more risk)(without introducing more risk)

VMware Photon OS

Page 48: PuppetConf 2016:  Docker, Mesos, Kubernetes and...Puppet? Don't Panic! – Deepak Giridharagopal, Puppet

(without introducing more risk)

CoreOS ecosystem

Page 49: PuppetConf 2016:  Docker, Mesos, Kubernetes and...Puppet? Don't Panic! – Deepak Giridharagopal, Puppet

(without introducing more risk)

Mesos support

Page 50: PuppetConf 2016:  Docker, Mesos, Kubernetes and...Puppet? Don't Panic! – Deepak Giridharagopal, Puppet

(without introducing more risk)

Consul integration

Page 51: PuppetConf 2016:  Docker, Mesos, Kubernetes and...Puppet? Don't Panic! – Deepak Giridharagopal, Puppet

(without introducing more risk)

Rancher

class { 'docker': }class { 'rancher::server': }class { 'rancher': registration_url => http://127.0.0.1:8080/v1/scripts/ agent_address => $::ipaddress_eth1,}

Page 52: PuppetConf 2016:  Docker, Mesos, Kubernetes and...Puppet? Don't Panic! – Deepak Giridharagopal, Puppet

(without introducing more risk)

$ puppet resource rkt_pod rkt_pod { 'c8ecd9ae': ensure => 'exited', app => 'hello', image_name => 'hello',}

Rkt

Page 53: PuppetConf 2016:  Docker, Mesos, Kubernetes and...Puppet? Don't Panic! – Deepak Giridharagopal, Puppet

(without introducing more risk)

Find out more about Puppet as the bridge to the future with Project Blueshift athttps://puppet.com/product/managed-technology/blueshift

Page 54: PuppetConf 2016:  Docker, Mesos, Kubernetes and...Puppet? Don't Panic! – Deepak Giridharagopal, Puppet

Modern infrastructure track

"The challenges with container configuration" —David Lutterkort, Thurs 2:30P

"Running puppet software in Docker containers" —Gareth Rushgrove, Fri 1:30P

deepak / @grim_radical / #puppetconf 2016

Page 55: PuppetConf 2016:  Docker, Mesos, Kubernetes and...Puppet? Don't Panic! – Deepak Giridharagopal, Puppet

(without introducing more risk)