1 of 33

Deploying DC/OS On Prem

(With a little help from your friends)

2 of 33

Who’s the guy at the front?

Tom Barber

  • NASA JPL Devops and Data Developer
  • Spicule & Meteorite BI
  • Data guy and open source hacker… erm developer.

3 of 33

A bit of history…...

4 of 33

Caveat

We want to run our services on hardware supplied by

We also want to retain control of the underlying hardware to control costs, networking and scalability.

5 of 33

Our Goal

6 of 33

We also want to be able to run our services in different data centres for resilience and data locality purposes.

7 of 33

So how can we achieve our goals?

8 of 33

Container Management Systems

  • Docker Swarm
  • Kubernetes
  • Apache Mesos
  • CoreOS
  • DC/OS
  • Deployed to fixed hosts

9 of 33

I’m a sucker for a nice looking dashboard

10 of 33

The next question we asked was:

“We have a bunch of Bigstep bare metal servers, what's the most flexible way to manage them?”

11 of 33

Introducing Metal As A Service!

  • Deploy workloads onto bare metal servers
  • Integration with Juju to manage the services
  • DNS & IP management
  • Internal fabric networking
  • Operating system agnostic

12 of 33

13 of 33

14 of 33

We already manage a lot of our services using Juju… so could we make DC/OS work with Juju?

15 of 33

Application modeling with Juju

16 of 33

Juju Key Concepts

  • Bootstrap
  • Deploy
  • Relate
  • Scale
  • Repeat!

17 of 33

Bootstrap

  • Pick a cloud
    • AWS
    • Azure
    • CloudSigma
    • Google
    • Joyent
    • Rackspace
    • LXD Local
    • Manual
    • MAAS!

18 of 33

Deploy

juju deploy dcos-master

juju deploy dcos-agent

19 of 33

Relate

juju add-relation dcos-master dcos-agent

20 of 33

Scale

juju add-unit -n 10 dcos-agent

21 of 33

Repeat! (Anywhere)

Export my model to a YAML file

Import into a new cloud or MAAS service

Deploys in the same manner

22 of 33

Crowdsourcing Ops

  • Majority of users get Charms from the Juju Charm Store. Similar to PuppetForge et al
  • Charms written by a user or company and then added to and extended by others
  • Charms that have been validated and have a test suite are often promulgated to the top level recommended charms to try and ensure users have a good experience

23 of 33

Development flow to enhance charms

24 of 33

Monitoring DC/OS

juju deploy nagios

juju deploy nrpe

juju add-relation nagios:monitors nrpe:monitors

juju add-relation dcos-master:local-monitors nrpe:local-monitors

25 of 33

Logging DC/OS

juju add-relation logstash dcos-master

26 of 33

(Finally) Deploying Containers to DC/OS

juju deploy dcos-nginx

juju add-relation dcos-nginx dcos-master

27 of 33

Enriching your deployment with Metadata

You can make use of non dockerized or Mesos-ized services from other charms

Passing around metadata allows you to configure applications dynamically even within and across DC/OS core systems

28 of 33

Current State of Play

DCOS Master Nodes (Scalable)

DCOS Client Nodes (Scalable)

Monitoring connectivity

Ability to deploy docker containers

Actions to do various admin tasks

29 of 33

Roadmap

Implement disk mounts for NFS and Loopback devices.

Add more actions.

Implement Monitoring.

Improve Security.

Expose running app ports automatically.

Simplify the upgrade process.

ELK to Beats?

Custom Cluster Name

Private Docker Reg

Marathon Load Balancer

30 of 33

Support and Testing

31 of 33

But it doesn’t end there…..

32 of 33

DC/OS is hard to configure once installed

You can’t easily change from public to private units

You can’t enable or disable OAuth logins

You can’t enable or disable telemetry

33 of 33

Layered Mesos

Mesos master and slaves

Marathon support for Docker deployment

Utilise the Zookeeper charm

SSL Communication

HA support

SDN support