33
@turlinux How to create a Docker Cloud with Brooklyn, jclouds and Clocker.io Andrea Turli

How to create a Docker Cloud with Brooklyn, jclouds and Clocker.io

Embed Size (px)

Citation preview

Page 1: How to create a Docker Cloud with Brooklyn, jclouds and Clocker.io

@turlinux

How to create a Docker Cloud with Brooklyn, jclouds and Clocker.ioAndrea Turli

Page 2: How to create a Docker Cloud with Brooklyn, jclouds and Clocker.io

@turlinux

Andrea TurliSoftware EngineerOpen Source passionate github.com/andreaturli

Open Source Application Management Specialists

About me

Page 3: How to create a Docker Cloud with Brooklyn, jclouds and Clocker.io

@turlinux

AgendaClocker IntroductionWhat is a Docker Cloud?DemosAdvanced features

Page 4: How to create a Docker Cloud with Brooklyn, jclouds and Clocker.io

What’s Clocker.io?

Page 5: How to create a Docker Cloud with Brooklyn, jclouds and Clocker.io

@turlinux

What does it do? Clocker supports single-click deployment and runtime management of multi-node applications that run on Docker containers that can be distributed across multiple Docker engines

Page 6: How to create a Docker Cloud with Brooklyn, jclouds and Clocker.io

@turlinux

Open Source Apache 2.0 Licensed

javahttp://clocker.io @clockercentral

Status Started by @grkvlt and @turlinux

~500 total commits~10 contributors+37 forks on GitHub

Page 7: How to create a Docker Cloud with Brooklyn, jclouds and Clocker.io

@turlinux

On the shoulder of the giants

Page 8: How to create a Docker Cloud with Brooklyn, jclouds and Clocker.io

@turlinux

Clocker and Apache Brooklyn

Brooklyn Blueprint Brooklyn Location

Page 9: How to create a Docker Cloud with Brooklyn, jclouds and Clocker.io

Demo: Building a Docker Cloud

Page 10: How to create a Docker Cloud with Brooklyn, jclouds and Clocker.io

@turlinux

On the shoulder of the giants

Page 11: How to create a Docker Cloud with Brooklyn, jclouds and Clocker.io

@turlinux

Application Management Platform Apache 2.0 Licensed

Donated to ASF - Incubator Projecthttp://brooklyn.io @brooklyncentral

Status Founded by Alex Heneveld and Aled Sage

~11K total commits~40 contributors+50 forks on GitHub

Page 12: How to create a Docker Cloud with Brooklyn, jclouds and Clocker.io

@turlinux

Hierarchical autonomic management MAPE-K control loop for self-adaptive systems

Deploy, Manage and Monitor autonomic Blueprints

Page 13: How to create a Docker Cloud with Brooklyn, jclouds and Clocker.io

@turlinux

Blueprint Capture an application’s initial topology plus policies

Topology Component wiring, groupings and management hierarchy

Policy Governs an app’s behavior (Cluster Mgmt, Failover …)

Location Target environment for blueprint instantiation

Page 14: How to create a Docker Cloud with Brooklyn, jclouds and Clocker.io

@turlinux

Page 15: How to create a Docker Cloud with Brooklyn, jclouds and Clocker.io

@turlinux

A multi-cloud toolkit for the Java platform Apache 2.0 Licensed - Top Level Projecthttp://jclouds.org

Status Started on April 2009 by Adrian Cole

+12K total commits~200 contributors (65 last year) +200 forks on GitHub

latest stable release 1.9.0

Page 16: How to create a Docker Cloud with Brooklyn, jclouds and Clocker.io

@turlinux

Portable abstractions: Compute, BlobStore, LoadBalancer

Page 17: How to create a Docker Cloud with Brooklyn, jclouds and Clocker.io

@turlinux

jclouds-docker @turlinux https://github.com/jclouds/jclouds-labs in 1.9.0

This initial work kicked off Clocker

Page 18: How to create a Docker Cloud with Brooklyn, jclouds and Clocker.io

@turlinux

Docker is a cloud provider which spins up containers up instead of VMs

Page 19: How to create a Docker Cloud with Brooklyn, jclouds and Clocker.io

@turlinux

Docker REST API Docker REST API v1.17 Docker Remote API <- supported by jclouds-docker

ContainerAPIImageAPIMiscAPI

Docker Hub APIDocker Registry API

Page 20: How to create a Docker Cloud with Brooklyn, jclouds and Clocker.io

@turlinux

A platform to pack, ship and run any application as a lightweight container.

Apache 2.0 Licensedhttps://www.docker.com/

Status Started on March 2015

+14K total commits~840 contributors +4300 forks on GitHub

Page 21: How to create a Docker Cloud with Brooklyn, jclouds and Clocker.io

@turlinux

Docker Networking 101 Natively, each container runs isolated

A bridged network is provided by DockerExposing ports

Port Forwarding (mapping port) to “external interface”what if I have a cluster of nodes wants to use the

same port?

Page 22: How to create a Docker Cloud with Brooklyn, jclouds and Clocker.io

@turlinux

Page 23: How to create a Docker Cloud with Brooklyn, jclouds and Clocker.io

@turlinux

Software Defined NetworkingHost to Host Communication

Same LAN SegmentNo Port Forwarding

Natural Application Configuration Initial Driver was Erlang Distributed Protocol and

EPMD based ApplicationsUses Available Provider

Currently Weave, Metaswitch Calico

Page 24: How to create a Docker Cloud with Brooklyn, jclouds and Clocker.io

@turlinux

WeaveEthernet Switch

User SpaceWeave agent is a Docker Container

Routes TCP TrafficForwards over TCP

Page 25: How to create a Docker Cloud with Brooklyn, jclouds and Clocker.io

Demo: Deploying an application on a Docker Cloud

Page 26: How to create a Docker Cloud with Brooklyn, jclouds and Clocker.io

@turlinux

DebriefOrchestrated Docker 1.5.0 deployment with Weave

Automated application deployment over containers provisioned on multiple Docker Hosts

Automated attachment of containers to multiple dynamic networks created on-the-fly by the SDN provider

Page 27: How to create a Docker Cloud with Brooklyn, jclouds and Clocker.io

@turlinux

Deep diveContainer ManagementContainer Placement ProvisioningHeadroomNetworking

Page 28: How to create a Docker Cloud with Brooklyn, jclouds and Clocker.io

@turlinux

Deep dive: Container MgmtSources

Docker Image DefinitionDocker HubDockerfileBrooklyn Entity Definition

Create Image Automatically

Page 29: How to create a Docker Cloud with Brooklyn, jclouds and Clocker.io

@turlinux

Deep dive: Container PlacementPlacement Strategies and Headroom

Random, Depth or Breadth FirstCPU or Memory UsageMemory, CPU or Container LimitsGeographic Constraints

Page 30: How to create a Docker Cloud with Brooklyn, jclouds and Clocker.io

@turlinux

Deep dive: Networking Pluggable Providers

Weave, Metaswitch CalicoMultiple Networks provisioning

Single Application or Shared,Private Addresses, Segmented by CIDR

- type: brooklyn.networking.VirtualNetwork networkId: my-application cidr: 192.168.12.0/24 gateway: 192.168.12.1 dnsServers: - 8.8.8.8 brooklyn.config: sdn.example.securityGroup: "my-security-group"

Page 31: How to create a Docker Cloud with Brooklyn, jclouds and Clocker.io

@turlinux

SummaryClocker.io

Brooklyn + jclouds + Docker + Weave / Calicosolves

Composite Application ManagementDocker Cloud NetworkingContainer Placement and Provisioning

Page 32: How to create a Docker Cloud with Brooklyn, jclouds and Clocker.io

@turlinux

Releases 0.8.0 Developer Preview http://git.io/jGhs0.8.0 final - to be announced at Docker Meetup

Where to find us @clockercentral#brooklyncentral on IRC freenode

Where to find it

Page 33: How to create a Docker Cloud with Brooklyn, jclouds and Clocker.io

Questions?