CONTINUOUS DELIVERY WITH MESOS, DC/OS AND JENKINS
Transcript of CONTINUOUS DELIVERY WITH MESOS, DC/OS AND JENKINS
![Page 1: CONTINUOUS DELIVERY WITH MESOS, DC/OS AND JENKINS](https://reader033.fdocuments.us/reader033/viewer/2022052419/586b9a841a28abca518b9f66/html5/thumbnails/1.jpg)
© 2016 Mesosphere, Inc. All Rights Reserved.
APACHE MESOS NYC MEETUP | SEPTEMBER 22, 2016
CONTINUOUS DELIVERY WITH MESOS, DC/OS AND JENKINS
![Page 2: CONTINUOUS DELIVERY WITH MESOS, DC/OS AND JENKINS](https://reader033.fdocuments.us/reader033/viewer/2022052419/586b9a841a28abca518b9f66/html5/thumbnails/2.jpg)
© 2016 Mesosphere, Inc. All Rights Reserved.
SUNIL SHAHProduct Manager at Mesosphere
@ssk2
ROGER IGNAZIOTech Lead at Mesosphere
@rogerignazio
WHO WE ARE
![Page 3: CONTINUOUS DELIVERY WITH MESOS, DC/OS AND JENKINS](https://reader033.fdocuments.us/reader033/viewer/2022052419/586b9a841a28abca518b9f66/html5/thumbnails/3.jpg)
© 2016 Mesosphere, Inc. All Rights Reserved.
mesosinaction.comUse the code vecymes for 42% off!
BUY MY BOOK!
![Page 4: CONTINUOUS DELIVERY WITH MESOS, DC/OS AND JENKINS](https://reader033.fdocuments.us/reader033/viewer/2022052419/586b9a841a28abca518b9f66/html5/thumbnails/4.jpg)
© 2016 Mesosphere, Inc. All Rights Reserved.
AGENDABackground● Introduction to Apache Mesos and DC/OS● Components that make up modern infra.● Running Jenkins as a service on DC/OS
Demo● Installing and configuring Jenkins● Installing and configuring a load balancer● Creating a new CI/CD pipeline● Continuously deploying applications to DC/OS
![Page 5: CONTINUOUS DELIVERY WITH MESOS, DC/OS AND JENKINS](https://reader033.fdocuments.us/reader033/viewer/2022052419/586b9a841a28abca518b9f66/html5/thumbnails/5.jpg)
© 2016 Mesosphere, Inc. All Rights Reserved.
INTRO TO APACHE MESOS AND DC/OS
![Page 6: CONTINUOUS DELIVERY WITH MESOS, DC/OS AND JENKINS](https://reader033.fdocuments.us/reader033/viewer/2022052419/586b9a841a28abca518b9f66/html5/thumbnails/6.jpg)
© 2016 Mesosphere, Inc. All Rights Reserved.
A QUICK PRIMER ON CONTAINERS
Physical Server
Virtual Machine–BasedApplication Deployment
Container–BasedApplication Deployment
Hypervisor
OS
VM VM
OS
App App
Physical Server
Hypervisor
OS
VM VM
OS
App App
Physical Server
Operating System
App App
Physical Server
Operating System
App App
Mesos
Isolate apps by running multiple VMs per physical server; still need to manage each guest OS!
Isolate apps using features of the host OS, such as Linux cgroups.
![Page 7: CONTINUOUS DELIVERY WITH MESOS, DC/OS AND JENKINS](https://reader033.fdocuments.us/reader033/viewer/2022052419/586b9a841a28abca518b9f66/html5/thumbnails/7.jpg)
© 2016 Mesosphere, Inc. All Rights Reserved.
A QUICK PRIMER ON CONTAINERS
Linux cgroup
Dependencies
Linux Host OS
Application
Docker Container
Dependencies
Host OS
Application
Linux cgroupsDocker Containers
VM
Dependencies
Hypervisor
Application
Virtual Machines
Guest OS
Docker Engine
![Page 8: CONTINUOUS DELIVERY WITH MESOS, DC/OS AND JENKINS](https://reader033.fdocuments.us/reader033/viewer/2022052419/586b9a841a28abca518b9f66/html5/thumbnails/8.jpg)
© 2016 Mesosphere, Inc. All Rights Reserved.
A BIT OF CLARIFICATION
https://mesos.apache.org https://dcos.io
![Page 9: CONTINUOUS DELIVERY WITH MESOS, DC/OS AND JENKINS](https://reader033.fdocuments.us/reader033/viewer/2022052419/586b9a841a28abca518b9f66/html5/thumbnails/9.jpg)
© 2016 Mesosphere, Inc. All Rights Reserved.
● General purpose cluster resource manager● Represents many machines as a single entity● Advertises resources directly to frameworks● Works at scale: Apple, Twitter, Airbnb, Netflix, …
WHAT IS MESOS?
![Page 10: CONTINUOUS DELIVERY WITH MESOS, DC/OS AND JENKINS](https://reader033.fdocuments.us/reader033/viewer/2022052419/586b9a841a28abca518b9f66/html5/thumbnails/10.jpg)
© 2016 Mesosphere, Inc. All Rights Reserved.
● Two-tier scheduling across resource types● cpus, mem, disk, and ports by default
● Masters are highly available, agents are fault tolerant● Checkpointing, agent recovery
● Resource isolation between processes● Linux cgroups, Docker, …
● Language bindings: C++, Java, Python, Go, …
WHAT IS MESOS? (CONTINUED)
![Page 11: CONTINUOUS DELIVERY WITH MESOS, DC/OS AND JENKINS](https://reader033.fdocuments.us/reader033/viewer/2022052419/586b9a841a28abca518b9f66/html5/thumbnails/11.jpg)
© 2016 Mesosphere, Inc. All Rights Reserved.
MESOS ARCHITECTURE
Launch task(s)
Mesos Master Quorum
Mesos Master(Standby)
ZK
Mesos Master(Standby)
ZK
Mesos Master(Leader)
ZK
Framework B Scheduler
Agent 1
Framework A Executor
Task(s)
Agent n
Framework A Executor
Task(s)
Framework B Executor
Task(s)
Resource offer
Resource offer
Framework A Scheduler
Launch task(s)
![Page 12: CONTINUOUS DELIVERY WITH MESOS, DC/OS AND JENKINS](https://reader033.fdocuments.us/reader033/viewer/2022052419/586b9a841a28abca518b9f66/html5/thumbnails/12.jpg)
© 2016 Mesosphere, Inc. All Rights Reserved.
ANATOMY OF A RESOURCE OFFER (TWO-TIER SCHEDULING)
Mesos Master(s)
Mesos Agent
16 CPUs128 GB RAM
1 TB disk
Mesos Agent
16 CPUs128 GB RAM
1 TB disk
Mesos Agent
16 CPUs128 GB RAM
1 TB disk
Master offers resources to scheduler
SchedulerExecutor
Available compute resources
Resource offer accepted, launch executors/tasks
Tasks
Executor
Tasks
Executor
Tasks
Scheduler accepts or declines an offer
![Page 13: CONTINUOUS DELIVERY WITH MESOS, DC/OS AND JENKINS](https://reader033.fdocuments.us/reader033/viewer/2022052419/586b9a841a28abca518b9f66/html5/thumbnails/13.jpg)
© 2016 Mesosphere, Inc. All Rights Reserved.
● Service discovery and load balancing● BIND, Mesos-DNS, Consul-Mesos, Marathon-LB
NEW (OLD) PROBLEMS
![Page 14: CONTINUOUS DELIVERY WITH MESOS, DC/OS AND JENKINS](https://reader033.fdocuments.us/reader033/viewer/2022052419/586b9a841a28abca518b9f66/html5/thumbnails/14.jpg)
© 2016 Mesosphere, Inc. All Rights Reserved.
● Service discovery and load balancing● BIND, Mesos-DNS, Consul-Mesos, Marathon-LB
● Monitoring and metrics collection● Collectd, Nagios, Prometheus, Snap
NEW (OLD) PROBLEMS
![Page 15: CONTINUOUS DELIVERY WITH MESOS, DC/OS AND JENKINS](https://reader033.fdocuments.us/reader033/viewer/2022052419/586b9a841a28abca518b9f66/html5/thumbnails/15.jpg)
© 2016 Mesosphere, Inc. All Rights Reserved.
● Service discovery and load balancing● BIND, Mesos-DNS, Consul-Mesos, Marathon-LB
● Monitoring and metrics collection● Collectd, Nagios, Prometheus, Snap
● Persistent storage (filesystems, databases, etc)● Ceph, HDFS, Amazon EBS / EFS / S3, NFS, Cassandra
NEW (OLD) PROBLEMS
![Page 16: CONTINUOUS DELIVERY WITH MESOS, DC/OS AND JENKINS](https://reader033.fdocuments.us/reader033/viewer/2022052419/586b9a841a28abca518b9f66/html5/thumbnails/16.jpg)
© 2016 Mesosphere, Inc. All Rights Reserved.
● Service discovery and load balancing● BIND, Mesos-DNS, Consul-Mesos, Marathon-LB
● Monitoring and metrics collection● Collectd, Nagios, Prometheus, Snap
● Persistent storage (filesystems, databases, etc)● Ceph, HDFS, Amazon EBS / EFS / S3, NFS, Cassandra
● Administration: named URIs vs. ports, IPAM● Nginx, HAProxy, Mesos-DNS, dhcpd, Minuteman
NEW (OLD) PROBLEMS
![Page 17: CONTINUOUS DELIVERY WITH MESOS, DC/OS AND JENKINS](https://reader033.fdocuments.us/reader033/viewer/2022052419/586b9a841a28abca518b9f66/html5/thumbnails/17.jpg)
© 2016 Mesosphere, Inc. All Rights Reserved.
https://dcos.io
https://github.com/dcos
DC/OS:BUILT ON MESOS
![Page 18: CONTINUOUS DELIVERY WITH MESOS, DC/OS AND JENKINS](https://reader033.fdocuments.us/reader033/viewer/2022052419/586b9a841a28abca518b9f66/html5/thumbnails/18.jpg)
© 2016 Mesosphere, Inc. All Rights Reserved.
DC/OS:BUILT ON MESOS
![Page 19: CONTINUOUS DELIVERY WITH MESOS, DC/OS AND JENKINS](https://reader033.fdocuments.us/reader033/viewer/2022052419/586b9a841a28abca518b9f66/html5/thumbnails/19.jpg)
© 2016 Mesosphere, Inc. All Rights Reserved.
JENKINS ON DC/OS
![Page 20: CONTINUOUS DELIVERY WITH MESOS, DC/OS AND JENKINS](https://reader033.fdocuments.us/reader033/viewer/2022052419/586b9a841a28abca518b9f66/html5/thumbnails/20.jpg)
© 2016 Mesosphere, Inc. All Rights Reserved.
MULTIPLE JENKINS MASTERS
Team A Jenkins
. . .Jenkins Agent 1
Jenkins Agent 2
. . .
Jenkins Agent N
Team B Jenkins
Jenkins Agent 1
Jenkins Agent 2
. . .
Jenkins Agent N
Team X Jenkins
Jenkins Agent 1
Jenkins Agent 2
. . .
Jenkins Agent N
![Page 21: CONTINUOUS DELIVERY WITH MESOS, DC/OS AND JENKINS](https://reader033.fdocuments.us/reader033/viewer/2022052419/586b9a841a28abca518b9f66/html5/thumbnails/21.jpg)
© 2016 Mesosphere, Inc. All Rights Reserved.
MULTIPLE JENKINS MASTERS → STATIC PARTITIONING
Team A Jenkins
. . .Jenkins Agent 1
Jenkins Agent 2
. . .
Jenkins Agent N
Team B Jenkins
Jenkins Agent 1
Jenkins Agent 2
. . .
Jenkins Agent N
Team X Jenkins
Jenkins Agent 1
Jenkins Agent 2
. . .
Jenkins Agent N
90% Utilized(Normal)
140% Utilized(40 builds in queue)
0% Utilized(Idle)
![Page 22: CONTINUOUS DELIVERY WITH MESOS, DC/OS AND JENKINS](https://reader033.fdocuments.us/reader033/viewer/2022052419/586b9a841a28abca518b9f66/html5/thumbnails/22.jpg)
© 2016 Mesosphere, Inc. All Rights Reserved.
RUNNING JENKINS ON DC/OS → FAIR SHARING
Team A Jenkins . . .
DC/OS Agent 1
DC/OS Agent 4
DC/OS Agent N
Team B Jenkins
DC/OS Agent 2
DC/OS Agent 5
Team X Jenkins
DC/OS Agent 3
DC/OS Agent 6
. . .
DC/OS
![Page 23: CONTINUOUS DELIVERY WITH MESOS, DC/OS AND JENKINS](https://reader033.fdocuments.us/reader033/viewer/2022052419/586b9a841a28abca518b9f66/html5/thumbnails/23.jpg)
© 2016 Mesosphere, Inc. All Rights Reserved.
CONTINUOUSLY DEPLOYING APPLICATIONS TO DC/OS
![Page 24: CONTINUOUS DELIVERY WITH MESOS, DC/OS AND JENKINS](https://reader033.fdocuments.us/reader033/viewer/2022052419/586b9a841a28abca518b9f66/html5/thumbnails/24.jpg)
© 2016 Mesosphere, Inc. All Rights Reserved.
● Scheduling — advertising available compute resources● Deployments — getting an application onto a node● Health checks — ensuring the app/service is healthy● Service discovery — connecting to dependent services● Persistence — running stateful services in containers
DEPLOYING APPLICATIONS: BASIC REQUIREMENTS
![Page 25: CONTINUOUS DELIVERY WITH MESOS, DC/OS AND JENKINS](https://reader033.fdocuments.us/reader033/viewer/2022052419/586b9a841a28abca518b9f66/html5/thumbnails/25.jpg)
© 2016 Mesosphere, Inc. All Rights Reserved.
A sysadmin provisions one or more physical/virtual servers to host the app
Mesos resource offers (two-tier scheduling) offers available resources directly to frameworks
DEPLOYING APPLICATIONS: SCHEDULING
Before DC/OS With DC/OS
![Page 26: CONTINUOUS DELIVERY WITH MESOS, DC/OS AND JENKINS](https://reader033.fdocuments.us/reader033/viewer/2022052419/586b9a841a28abca518b9f66/html5/thumbnails/26.jpg)
© 2016 Mesosphere, Inc. All Rights Reserved.
By hand or using Puppet / Chef / Ansible
Jenkins SSHing to the machine and running a shell script
Note: all dependencies must also be present!
Marathon deploys containers, ideally using a CI/CD tool to create/update app definitions
Docker containers packages app and dependencies
DEPLOYING APPLICATIONS: DEPLOYMENTS
Before DC/OS With DC/OS
![Page 27: CONTINUOUS DELIVERY WITH MESOS, DC/OS AND JENKINS](https://reader033.fdocuments.us/reader033/viewer/2022052419/586b9a841a28abca518b9f66/html5/thumbnails/27.jpg)
© 2016 Mesosphere, Inc. All Rights Reserved.
Nagios pages a sysadmin Marathon performs health checks, restarts unhealthy/failed instances
DEPLOYING APPLICATIONS: HEALTH CHECKS
Before DC/OS With DC/OS
![Page 28: CONTINUOUS DELIVERY WITH MESOS, DC/OS AND JENKINS](https://reader033.fdocuments.us/reader033/viewer/2022052419/586b9a841a28abca518b9f66/html5/thumbnails/28.jpg)
© 2016 Mesosphere, Inc. All Rights Reserved.
Static hostnames / IP addresses in a spreadsheet or config management
A sysadmin configures a load balancer manually or with Puppet / Chef / Ansible
Mesos-DNS provides DNS resolution for running services (hostname / IP address, ports, etc)
Load balancer configs built dynamically using cluster state
DEPLOYING APPLICATIONS: SERVICE DISCOVERY
Before DC/OS With DC/OS
![Page 29: CONTINUOUS DELIVERY WITH MESOS, DC/OS AND JENKINS](https://reader033.fdocuments.us/reader033/viewer/2022052419/586b9a841a28abca518b9f66/html5/thumbnails/29.jpg)
© 2016 Mesosphere, Inc. All Rights Reserved.
Individual servers with RAID 1/5/6/10, expensive SANs, NFS, etc.
Dedicated, statically partitioned Ceph or Gluster storage clusters
Mesos external/persistent volumes (REX-Ray), HDFS, etc.
Self-healing Ceph or Gluster on Mesos / DC/OS
DEPLOYING APPLICATIONS: PERSISTENCE
Before DC/OS With DC/OS
![Page 30: CONTINUOUS DELIVERY WITH MESOS, DC/OS AND JENKINS](https://reader033.fdocuments.us/reader033/viewer/2022052419/586b9a841a28abca518b9f66/html5/thumbnails/30.jpg)
© 2016 Mesosphere, Inc. All Rights Reserved.
Q: Given that we are all engineers,which tools would we like to work with?
![Page 31: CONTINUOUS DELIVERY WITH MESOS, DC/OS AND JENKINS](https://reader033.fdocuments.us/reader033/viewer/2022052419/586b9a841a28abca518b9f66/html5/thumbnails/31.jpg)
© 2016 Mesosphere, Inc. All Rights Reserved.
DEMOS
![Page 32: CONTINUOUS DELIVERY WITH MESOS, DC/OS AND JENKINS](https://reader033.fdocuments.us/reader033/viewer/2022052419/586b9a841a28abca518b9f66/html5/thumbnails/32.jpg)
© 2016 Mesosphere, Inc. All Rights Reserved. 32
PIPELINE COMPONENTS
Continuous Integration
Container Registry
Container Orchestrator
Version Control System Load BalancerProduction
Environment
Continuous Delivery Pipeline
git push
DC/OS
![Page 33: CONTINUOUS DELIVERY WITH MESOS, DC/OS AND JENKINS](https://reader033.fdocuments.us/reader033/viewer/2022052419/586b9a841a28abca518b9f66/html5/thumbnails/33.jpg)
© 2016 Mesosphere, Inc. All Rights Reserved. 33
PIPELINE COMPONENTS
Jenkins
DockerHub
MarathonGitHub Marathon-lbMesos
Continuous Delivery Pipeline
git push
DC/OS
![Page 34: CONTINUOUS DELIVERY WITH MESOS, DC/OS AND JENKINS](https://reader033.fdocuments.us/reader033/viewer/2022052419/586b9a841a28abca518b9f66/html5/thumbnails/34.jpg)
© 2016 Mesosphere, Inc. All Rights Reserved. 34
PIPELINE CONFIGURATION
Jenkinsfile
Dockerfile
marathon.json
Continuous Delivery Pipeline
git push
DC/OS
![Page 35: CONTINUOUS DELIVERY WITH MESOS, DC/OS AND JENKINS](https://reader033.fdocuments.us/reader033/viewer/2022052419/586b9a841a28abca518b9f66/html5/thumbnails/35.jpg)
© 2016 Mesosphere, Inc. All Rights Reserved.
DEMOTIME
![Page 36: CONTINUOUS DELIVERY WITH MESOS, DC/OS AND JENKINS](https://reader033.fdocuments.us/reader033/viewer/2022052419/586b9a841a28abca518b9f66/html5/thumbnails/36.jpg)
© 2016 Mesosphere, Inc. All Rights Reserved.
Roger [email protected]
@rogerignazio
Sunil [email protected]
@ssk2
THANK YOU!
Learn more by visiting DCOS.io and Mesosphere.com