46
CONTINUOUS DELIVERY WITH JENKINS, DOCKER AND MARATHON/MESOS Julia Mateo @juliamateodc @duchessswiss http://jduchess.ch/ Monday, June 29, 15

Continuous delivery with Jenkins, Docker and Mesos/Marathon - jbcnconf

Embed Size (px)

Citation preview

Page 1: Continuous delivery with Jenkins, Docker and Mesos/Marathon - jbcnconf

CONTINUOUS DELIVERY WITH JENKINS, DOCKER

AND MARATHON/MESOSJulia Mateo

@juliamateodc@duchessswiss http://jduchess.ch/

Monday, June 29, 15

Page 2: Continuous delivery with Jenkins, Docker and Mesos/Marathon - jbcnconf

GOAL

Monday, June 29, 15

Page 3: Continuous delivery with Jenkins, Docker and Mesos/Marathon - jbcnconf

CONTINUOUS DEPLOYMENT VS CONTINUOUS DELIVERY

• Continuous delivery : series of practices designed to ensure that code can be rapidly and safely deployed to production

• Continuous deployment is the next step of continuous delivery: Every change that passes the automated tests is deployed to production automatically

Monday, June 29, 15

Page 4: Continuous delivery with Jenkins, Docker and Mesos/Marathon - jbcnconf

CONTINUOUS DELIVERY

Source : http://xebia.github.io/cd-with-docker/#/

Monday, June 29, 15

Page 5: Continuous delivery with Jenkins, Docker and Mesos/Marathon - jbcnconf

From https://www.docker.com/whatisdocker/

Using Docker for Continuous Delivery

• Docker is an open platform for developers and sysadmins to build, ship, and run distributed applications.

Monday, June 29, 15

Page 6: Continuous delivery with Jenkins, Docker and Mesos/Marathon - jbcnconf

DOCKER VS VMS

Server

Host OS

Hypervisor

GuestOS

Guest OS

Guest OS

Guest OS

Libs/Bins

Libs/Bins

Libs/Bins

App 1 App 2 App 3 App 4

Libs/Bins

Server

Host OS

Docker Engine

Libs/Bins Libs/Bins

App 1 App 2 App 3 App 4

c1 c2 c3 c4

VM1 VM2 VM3 VM4

Monday, June 29, 15

Page 7: Continuous delivery with Jenkins, Docker and Mesos/Marathon - jbcnconf

CONTAINERS AND IMAGES

DockerImages Docker

Images

libcontainer, Union FilesystemCentos Ubuntu

Jettyadd App.warContainer 1

OracleDBContainer 2

Read only

WritableWritable

Read only

Monday, June 29, 15

Page 8: Continuous delivery with Jenkins, Docker and Mesos/Marathon - jbcnconf

TO SUM UP :

• Simple : container as deployment unit

• Fast : Only need to build/upload the ∆ image

• Robust : less scope of error than custom deployment scripts

• Other advantages : docker facilitates fast rollback

Monday, June 29, 15

Page 9: Continuous delivery with Jenkins, Docker and Mesos/Marathon - jbcnconf

FIRST STEP : DEPLOY TO ONE NODE

Monday, June 29, 15

Page 10: Continuous delivery with Jenkins, Docker and Mesos/Marathon - jbcnconf

THE WEB APP TO DEPLOY

Monday, June 29, 15

Page 11: Continuous delivery with Jenkins, Docker and Mesos/Marathon - jbcnconf

DEPLOY WITH DOCKER : TEST ENVIRONMENT

Localhost

Monday, June 29, 15

Page 12: Continuous delivery with Jenkins, Docker and Mesos/Marathon - jbcnconf

DEPLOY WITH DOCKER : TEST ENVIRONMENT

Localhost

Monday, June 29, 15

Page 13: Continuous delivery with Jenkins, Docker and Mesos/Marathon - jbcnconf

DEPLOY WITH DOCKER : TEST ENVIRONMENT

Localhost

Monday, June 29, 15

Page 14: Continuous delivery with Jenkins, Docker and Mesos/Marathon - jbcnconf

DEPLOY WITH DOCKER : TEST ENVIRONMENT

Localhost

Monday, June 29, 15

Page 15: Continuous delivery with Jenkins, Docker and Mesos/Marathon - jbcnconf

DEPLOY WITH DOCKER : TEST ENVIRONMENT

Localhost

Monday, June 29, 15

Page 16: Continuous delivery with Jenkins, Docker and Mesos/Marathon - jbcnconf

DEPLOY WITH DOCKER : TEST ENVIRONMENT

Localhost

docker publish plugin

Monday, June 29, 15

Page 17: Continuous delivery with Jenkins, Docker and Mesos/Marathon - jbcnconf

DEPLOY WITH DOCKER : TEST ENVIRONMENT

Localhost

docker publish plugin

ssh jenkins plugin

Monday, June 29, 15

Page 18: Continuous delivery with Jenkins, Docker and Mesos/Marathon - jbcnconf

DEPLOY WITH DOCKER : TEST ENVIRONMENT

Localhost

docker publish plugin

ssh jenkins plugin

Monday, June 29, 15

Page 19: Continuous delivery with Jenkins, Docker and Mesos/Marathon - jbcnconf

DOCKER PUBLISH PLUGIN

Monday, June 29, 15

Page 20: Continuous delivery with Jenkins, Docker and Mesos/Marathon - jbcnconf

USING DOCKER INTO DOCKER

Monday, June 29, 15

Page 21: Continuous delivery with Jenkins, Docker and Mesos/Marathon - jbcnconf

DEPLOY WITH DOCKER : TEST ENVIRONMENT

Localhost

docker publish plugin

ssh jenkins plugin

Monday, June 29, 15

Page 22: Continuous delivery with Jenkins, Docker and Mesos/Marathon - jbcnconf

DEPLOY WITH DOCKER : TEST ENVIRONMENT

Localhost

docker publish plugin

ssh jenkins plugin

Monday, June 29, 15

Page 23: Continuous delivery with Jenkins, Docker and Mesos/Marathon - jbcnconf

DOCKER PRIVATE REPOSITORY

• Add the registry’s location to the repository name : my.registry.address:port/repositoryname

Monday, June 29, 15

Page 24: Continuous delivery with Jenkins, Docker and Mesos/Marathon - jbcnconf

DEPLOY WITH DOCKER : TEST ENVIRONMENT

Localhost

docker publish plugin

ssh jenkins plugin

Monday, June 29, 15

Page 25: Continuous delivery with Jenkins, Docker and Mesos/Marathon - jbcnconf

DEPLOY WITH DOCKER : TEST ENVIRONMENT

Localhost

docker publish plugin

ssh jenkins plugin

Monday, June 29, 15

Page 26: Continuous delivery with Jenkins, Docker and Mesos/Marathon - jbcnconf

JENKINS SSH PLUGIN

Monday, June 29, 15

Page 27: Continuous delivery with Jenkins, Docker and Mesos/Marathon - jbcnconf

DEPLOY WITH DOCKER : TEST ENVIRONMENT

Localhost

docker publish plugin

ssh jenkins plugin

Node 1

Node 2

Monday, June 29, 15

Page 28: Continuous delivery with Jenkins, Docker and Mesos/Marathon - jbcnconf

DEPLOY WITH DOCKER : TEST ENVIRONMENT

Localhost

docker publish plugin

ssh jenkins plugin

Node 1

Node 2

Container 1

Container 2

Container 3

Container 4

Container 5

Monday, June 29, 15

Page 29: Continuous delivery with Jenkins, Docker and Mesos/Marathon - jbcnconf

PROBLEMS

• Scalability

• Fault tolerance

Monday, June 29, 15

Page 30: Continuous delivery with Jenkins, Docker and Mesos/Marathon - jbcnconf

NEXT STEP : DEPLOY TO A MESOS

CLUSTER

Monday, June 29, 15

Page 31: Continuous delivery with Jenkins, Docker and Mesos/Marathon - jbcnconf

DEPLOY WITH DOCKER : TEST ENVIRONMENT

Localhost

docker publish pluginnode1Container 1

Container 3

Container 4Container 5

Container 2

Http request plugin

Master

Executor

Marathon

Executor

Monday, June 29, 15

Page 32: Continuous delivery with Jenkins, Docker and Mesos/Marathon - jbcnconf

• Abstraction of cluster resources

• Share resources across multiple frameworks (versions of the same fwk)

• Resource fair sharing : alternative to static partitioning

•Data locality

What is Mesos ?

Monday, June 29, 15

Page 33: Continuous delivery with Jenkins, Docker and Mesos/Marathon - jbcnconf

MESOS

ZKMaster Master

Executor Executor Executor

Executor ExecutorExecutor

Executor Executor Executor

Slaves

Monday, June 29, 15

Page 34: Continuous delivery with Jenkins, Docker and Mesos/Marathon - jbcnconf

HOW DOES IT WORK ?

http://mesos.apache.org/documentation/latest/mesos-architecture/

Monday, June 29, 15

Page 35: Continuous delivery with Jenkins, Docker and Mesos/Marathon - jbcnconf

USING MARATHON WITH MESOS

•Marathon is a Mesos framework written in Scala

• Provides easy deployment of Docker containers

•Manages of long running apps

• Rest API for developers

Monday, June 29, 15

Page 36: Continuous delivery with Jenkins, Docker and Mesos/Marathon - jbcnconf

MARATHON

ZKMaster Master

Executor Executor Executor

Executor ExecutorExecutor

Executor Executor Executor

Slaves

Monday, June 29, 15

Page 37: Continuous delivery with Jenkins, Docker and Mesos/Marathon - jbcnconf

MARATHON

ZKMaster Master

Executor Executor Executor

Executor ExecutorExecutor

Executor Executor Executor

Slaves

Marathon

Monday, June 29, 15

Page 38: Continuous delivery with Jenkins, Docker and Mesos/Marathon - jbcnconf

DEPLOY WITH DOCKER : TEST ENVIRONMENT

Localhost

docker publish plugin

Http request plugin

Master

Executor

Marathon

Executor

Monday, June 29, 15

Page 39: Continuous delivery with Jenkins, Docker and Mesos/Marathon - jbcnconf

JENKINS : HTTP REQUEST PLUGIN

Monday, June 29, 15

Page 40: Continuous delivery with Jenkins, Docker and Mesos/Marathon - jbcnconf

DEMO

Monday, June 29, 15

Page 41: Continuous delivery with Jenkins, Docker and Mesos/Marathon - jbcnconf

USING HAPROXY FOR LOAD BALANCING

Monday, June 29, 15

Page 42: Continuous delivery with Jenkins, Docker and Mesos/Marathon - jbcnconf

DEPLOYING TO PRODUCTION

• Canary releasing

• Blue Green deployment

Monday, June 29, 15

Page 43: Continuous delivery with Jenkins, Docker and Mesos/Marathon - jbcnconf

FEEDBACK FROM DEVELOPER PERSPECTIVE

•Many technologies in a short time : ansible, docker, mesos, marathon..

• All of them are quite recent technologies

Monday, June 29, 15

Page 44: Continuous delivery with Jenkins, Docker and Mesos/Marathon - jbcnconf

FEEDBACK FROM DEVELOPER PERSPECTIVE

•Docker, Mesos/Marathon : developer friendly

• Big and growing community

Monday, June 29, 15

Page 45: Continuous delivery with Jenkins, Docker and Mesos/Marathon - jbcnconf

NEXT IMPROVEMENTS

• Fine grained proxy configuration, service discovery...

Monday, June 29, 15

Page 46: Continuous delivery with Jenkins, Docker and Mesos/Marathon - jbcnconf

THANK YOU !

QUESTIONS

?Monday, June 29, 15