3. @dhilipsiva
Tech Lead, Full-Stack & DevOps - @Appknox
I code for Web, Mobile, Embedded & IoT. Open-
Source Fanatic. Big Data & Machine Learning
Enthusiast. Dad. Atheist
So primarily a Developer + little bit of this & that
Jack of all trades & Master of none
4. I have no idea what I am
talking about
If you think that I got something wrong, then I
probably am. So please feel free to correct me
After all, it is the mistakes and the lessons we
learn from it - are the very things that de ne us
Constructive criticism is more than welcomed!
6. Orchestration (computing)
Orchestration is the automated arrangement,
coordination, and management of computer systems,
middleware, and services (From Wikipedia)
Process Discovery
Scheduling
Cluster Management
Uni ed way of installing backing services
Easy way to Update / rollback applications
Etc,.
7. Orchestration Tools
Container - Speci c tools
Kubernetes, Marathon, Chef Ironfan, Rancher,
Helios, Ansible Container, Swarm & SwarmKit,
Shipper, Azk, maestro-ng, Maestro,
Others
Ansible, OpenStack Heat, Python Fabric, Chef,
Puppet, Serf, Archipel, governor, Gru, Circuit, Rex
8. Kubernetes
There is a detailed Hands-On sessions on
Kubernetes this Afternoon
Docker Basics is an absolute requirement.
If you are not comfortable with Basics of Docker,
please attend Anand Gothe's Docker by example
Session
9. Marathon
Apache Mesos (Or on Mesoshpere's DCOS)
Apache Zookeeper
Install Marathon on the Cluster
Create marathon-demo.json le
run
curl -X POST http://marthon-master:PORT/v2/apps -d
@marathon-demo.json -H "Content-type:
application/json"
13. Rancher
Mostly GUI Based
You can experiment with it yourself by pulling the
Docker Image & running it:
docker run -d --restart=always -p 8080:8080
rancher/server
14. Helios
Installation
# install helios-solo on Debian/Ubuntu
$ curl -sSL https://spotify.github.io/helios-apt/go | sudo sh -
$ sudo apt-get install helios-solo
# install helios-solo on OS X
$ brew tap spotify/public && brew install helios-solo
# launch a helios cluster in a Docker container
$ helios-up
# check if it worked and the solo agent is registered
$ helios-solo hosts
15. # Create an nginx job using the nginx container image,
# exposing it on the host on port 8080
$ helios create nginx:v1 nginx:1.7.1 -p http=80:8080
# Check that the job is listed
$ helios jobs
# List helios hosts
$ helios hosts
# Deploy the nginx job on one of the hosts
$ helios deploy nginx:v1 <host>
# Check the job status
$ helios status
# Curl the nginx container when it's started running
$ curl <host>:8080
# Undeploy the nginx job
$ helios undeploy -a nginx:v1
# Remove the nginx job
$ helios remove nginx:v1
17. Swarm & SwarmKit
Both are very similar
Swarm is stand-alone
SwarmKit comes with Docker 1.12 (Swarm Mode)
# Creating a service
$ swarmctl service create --name redis --image redis:3.0.5
$ swarmctl service ls
$ swarmctl service inspect redis
$ swarmctl service update redis --replicas 6
$ swarmctl service update redis --image redis:3.0.6
# Rolling update
$ swarmctl service update redis --image redis:3.0.7 --update
18. Shipper
shipper is a fabric for docker - tool for orchestrating
docker containers. Supports parallel execution and
can generate command line interface
from shipper import Shipper, run, command
@command
def build(tag, path):
s = Shipper()
s.build(tag=tag, path=path)
@command
def ps(all=False, running=True):
s = Shipper(["host-a", "host-b"])
print s.containers(pretty=True, all=all, running=running)
21. Maestro provides the ability to easily launch,
orchestrate and manage mulitple Docker containers
as single unit.
maestro build
maestro start [node_name]
maestro stop [node_name]
maestro run template [commandline]
maestro ps
maestro destroy
22. Azk
Use azk and easily orchestrate development
environments on your own machine and then just
code.
$ brew install azukiapp/azk/azk
$ azk agent start
$ azk init
$ azk start -vv
$ azk status
# Access http://azkdemo.dev.azk.io
23. /**
* Documentation: http://docs.azk.io/Azkfile.js
*/
// Adds the systems that shape your system
systems({
azkdemo: {
// Dependent systems
depends: [],
// More images: http://images.azk.io
image: {"docker": "azukiapp/node:0.12"},
// Steps to execute before running instances
provision: [
"npm install",
],
workdir: "/azk/#{manifest.dir}",
shell: "/bin/bash",
command: ["npm", "start"],
wait: {"retry": 20, "timeout": 1000},
mounts: {
'/azk/#{manifest.dir}': path("."),
'/azk/#{manifest.dir}/node_modules': persistent("node-modu
24. Other things that you might
be interested in
Dokku, Deis, Flynn, Fabric8, Tsuru, Empire, PAZ,
Paasta, Cocaine, AWSbox