rancher - 傻瓜也會用的容器集群管理.key

Post on 03-Jan-2017

236 Views

Category:

Documents

6 Downloads

Preview:

Click to see full reader

TRANSCRIPT

傻瓜也會用的容器集群管理Sammy @ Container Summit 2016 (2016/9/21)

I am Sammy LinHELLO

sammylintw@gmail.com@SammyLinTwsammylin_tw

CURRENT

DevOps Engineer @ commandp Inc.Organizer @ DevOps Taiwan

EXPERIENCE Speaker @ 2016 DevOps Summit

Panelist @ 2016 AWS Cloud Kata Taipei Professional Specialist Faculty @ PCCU

TAGs DevOps, Jenkins, AWS, Ruby, HTML, Chef, Vim,

Infrasture

Why Container?

Immutable

Why Container?

Isolation

Why Container?

Lightweight

Why Container?

docker run -v /some/content:/usr/share/nginx/html:ro -p 8080:80 -d nginx

Source:https://flipboard.com/topic/container

In Production

How to manage multiple docker containers?

Amazon EC2 Container Service (ECS)

Amazon EC2 Container Service (ECS)

Amazon EC2 Container Registry (ECR)

+

( )

( )

( )

ECS are not available in China

Open Source

Visualization

Access Control

Audit Logs

Support Kubernetes & Mesos & Swarm

Rancher Labs Container Summit 2015

Installation

Installing Rancher Server (Single Node)

$ sudo docker run -d --restart=unless-stopped -p 8080:8080 rancher/server

Installing Rancher Server (Single Node)

BIND MOUNT MYSQL VOLUME$ sudo docker run -d -v $(pwd)/mysql:/var/lib/mysql \ --restart=unless-stopped \ -p 8080:8080 \ rancher/server

$ sudo docker run -d --restart=unless-stopped -p 8080:8080 rancher/server

Installing Rancher Server (Single Node)

BIND MOUNT MYSQL VOLUME

USING AN EXTERNAL DATABASE

$ sudo docker run -d --restart=unless-stopped -p 8080:8080 \ -e CATTLE_DB_CATTLE_MYSQL_HOST=<hostname or IP of MySQL instance> \ -e CATTLE_DB_CATTLE_MYSQL_PORT=<port> \ -e CATTLE_DB_CATTLE_MYSQL_NAME=<Name of Database> \ -e CATTLE_DB_CATTLE_USERNAME=<Username> \ -e CATTLE_DB_CATTLE_PASSWORD=<Password> \ rancher/server

$ sudo docker run -d -v $(pwd)/mysql:/var/lib/mysql \ --restart=unless-stopped \ -p 8080:8080 \ rancher/server

$ sudo docker run -d --restart=unless-stopped -p 8080:8080 rancher/server

Installing Rancher Server (Single Node)

BIND MOUNT MYSQL VOLUME

USING AN EXTERNAL DATABASE

$ sudo docker run -d --restart=unless-stopped -p 8080:8080 \ -e CATTLE_DB_CATTLE_MYSQL_HOST=<hostname or IP of MySQL instance> \ -e CATTLE_DB_CATTLE_MYSQL_PORT=<port> \ -e CATTLE_DB_CATTLE_MYSQL_NAME=<Name of Database> \ -e CATTLE_DB_CATTLE_USERNAME=<Username> \ -e CATTLE_DB_CATTLE_PASSWORD=<Password> \ rancher/server

$ sudo docker run -d -v $(PWD)/mysql:/var/lib/mysql \ --restart=unless-stopped \ -p 8080:8080 \ rancher/server

$ sudo docker run -d --restart=unless-stopped -p 8080:8080 rancher/server

Installing Rancher Server (Multi Nodes)

1 Node: Not really HA 3 Nodes: Any one host can fail 5 Nodes: Any two hosts can fail

Rancher Server

Rancher Host

Rancher Host

Rancher Host

Rancher Agent(Docker)

Rancher Agent(Docker)

Rancher Agent(Docker)

Add Hosts

Add Hosts

• Amazon EC2• Azure• DigitalOcean• Exoscale• Packet• Rackspace• [Custom]

Add Hosts (Custom Hosts)

Add Hosts (Custom Hosts)

Add Hosts (Custom Hosts)$ sudo docker run \ -d \ --privileged \ -v /var/run/docker.sock:/var/run/docker.sock rancher/agent:v1.0.2 \ http://<rancher-server-ip>:8080/v1/scripts/<registrationToken>

Rancher Server

Rancher Agent(Docker)

Rancher Agent(Docker)

Rancher Agent(Docker)

STACK 1

STACK 2

STACK [n]

Stack

Rancher Load Balancer APP Redis

Network Agent Network Agent Network Agent

Through IPsec (UDP 500 & 4500)

APP

Catalog

Rancher API Keys

Manipulate to specific Environment (Environment API keys) Manipulate to All Environment (Accout API keys)

Rancher API Keys

Rancher Compose Tool

The Rancher Compose tool is a multi-host version of Docker Compose.

Rancher Compose ToolInstillation through Web UI

Rancher Compose ToolInstillation through Github

Rancher Compose Tool

Setting up

$ export RANCHER_URL=http://<server_ip>:8080/v1 $ export RANCHER_ACCESS_KEY=<accessKey_of_account_api_key> $ export RANCHER_SECRET_KEY=<secretKey_of_account_api_key>

$ wget https://github.com/rancher/rancher-compose/releases/download/v0.8.6/rancher-compose-linux-amd64-v0.8.6.tar.gz $ tar zxvf rancher-compose-linux-amd64-v0.8.6.tar.gz $ cd rancher-compose-v0.8.6 $ ./rancher-compose

Install (ubuntu)

DEMO

CI/CD Flow

Githubchange JenkinsTrigger Dockerbuild&push DeployRancher

CI/CD Flow (commandp)

AWSS3DockerRegistry

DockerPush

JenkinsTrigger

GitPush

DockerBuild

RancherDeploy

ProxyServer

Rancher(China)

DockerPull

Dockerfile

Website Nginx

CI/CD Task Definition File(ECS)

Don’t use only the “latest” tag

CI/CD Script (ECS)

CI/CD Docker-compose.yml (Rancher)

CI/CD Script (Rancher)

Rancher-compose doc: http://docs.rancher.com/rancher/v1.1/en/cattle/rancher-compose/commands/

Reference

Rancher Official Website: http://rancher.com/ Rancher Tutorials: http://rancher.com/learn/GO Simple Tunnel(Gost): https://github.com/ginuerzh/gost Gost (Docker): https://github.com/pahud/gost-docker

https://www.facebook.com/groups/DevOpsTaiwan

DevOps Taiwan

sammylintw@gmail.com@SammyLinTwsammylin_tw

Thanks

top related