rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... •...

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

Upload: phungdieu

Post on 28-Jul-2018

221 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... • Azure • DigitalOcean • ... Github change Jenkins Trigger Docker build&push Deploy

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

Page 2: Rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... • Azure • DigitalOcean • ... Github change Jenkins Trigger Docker build&push Deploy

I am Sammy LinHELLO

[email protected]@SammyLinTwsammylin_tw

Page 3: Rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... • Azure • DigitalOcean • ... Github change Jenkins Trigger Docker build&push Deploy

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

Page 4: Rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... • Azure • DigitalOcean • ... Github change Jenkins Trigger Docker build&push Deploy

Why Container?

Page 5: Rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... • Azure • DigitalOcean • ... Github change Jenkins Trigger Docker build&push Deploy

Immutable

Why Container?

Page 6: Rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... • Azure • DigitalOcean • ... Github change Jenkins Trigger Docker build&push Deploy

Isolation

Why Container?

Page 7: Rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... • Azure • DigitalOcean • ... Github change Jenkins Trigger Docker build&push Deploy

Lightweight

Why Container?

Page 8: Rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... • Azure • DigitalOcean • ... Github change Jenkins Trigger Docker build&push Deploy
Page 9: Rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... • Azure • DigitalOcean • ... Github change Jenkins Trigger Docker build&push Deploy

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

Page 10: Rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... • Azure • DigitalOcean • ... Github change Jenkins Trigger Docker build&push Deploy

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

In Production

Page 11: Rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... • Azure • DigitalOcean • ... Github change Jenkins Trigger Docker build&push Deploy

How to manage multiple docker containers?

Page 12: Rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... • Azure • DigitalOcean • ... Github change Jenkins Trigger Docker build&push Deploy
Page 13: Rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... • Azure • DigitalOcean • ... Github change Jenkins Trigger Docker build&push Deploy

Amazon EC2 Container Service (ECS)

Page 14: Rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... • Azure • DigitalOcean • ... Github change Jenkins Trigger Docker build&push Deploy

Amazon EC2 Container Service (ECS)

Amazon EC2 Container Registry (ECR)

+

Page 15: Rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... • Azure • DigitalOcean • ... Github change Jenkins Trigger Docker build&push Deploy
Page 16: Rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... • Azure • DigitalOcean • ... Github change Jenkins Trigger Docker build&push Deploy

( )

Page 17: Rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... • Azure • DigitalOcean • ... Github change Jenkins Trigger Docker build&push Deploy

( )

Page 18: Rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... • Azure • DigitalOcean • ... Github change Jenkins Trigger Docker build&push Deploy

( )

Page 19: Rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... • Azure • DigitalOcean • ... Github change Jenkins Trigger Docker build&push Deploy
Page 20: Rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... • Azure • DigitalOcean • ... Github change Jenkins Trigger Docker build&push Deploy

ECS are not available in China

Page 21: Rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... • Azure • DigitalOcean • ... Github change Jenkins Trigger Docker build&push Deploy
Page 22: Rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... • Azure • DigitalOcean • ... Github change Jenkins Trigger Docker build&push Deploy

Open Source

Page 23: Rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... • Azure • DigitalOcean • ... Github change Jenkins Trigger Docker build&push Deploy

Visualization

Page 24: Rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... • Azure • DigitalOcean • ... Github change Jenkins Trigger Docker build&push Deploy

Access Control

Page 25: Rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... • Azure • DigitalOcean • ... Github change Jenkins Trigger Docker build&push Deploy

Audit Logs

Page 26: Rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... • Azure • DigitalOcean • ... Github change Jenkins Trigger Docker build&push Deploy

Support Kubernetes & Mesos & Swarm

Page 27: Rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... • Azure • DigitalOcean • ... Github change Jenkins Trigger Docker build&push Deploy
Page 28: Rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... • Azure • DigitalOcean • ... Github change Jenkins Trigger Docker build&push Deploy

Rancher Labs Container Summit 2015

Page 29: Rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... • Azure • DigitalOcean • ... Github change Jenkins Trigger Docker build&push Deploy

Installation

Page 30: Rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... • Azure • DigitalOcean • ... Github change Jenkins Trigger Docker build&push Deploy

Installing Rancher Server (Single Node)

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

Page 31: Rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... • Azure • DigitalOcean • ... Github change Jenkins Trigger Docker build&push Deploy

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

Page 32: Rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... • Azure • DigitalOcean • ... Github change Jenkins Trigger Docker build&push Deploy

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

Page 33: Rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... • Azure • DigitalOcean • ... Github change Jenkins Trigger Docker build&push Deploy

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

Page 34: Rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... • Azure • DigitalOcean • ... Github change Jenkins Trigger Docker build&push Deploy

Installing Rancher Server (Multi Nodes)

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

Page 35: Rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... • Azure • DigitalOcean • ... Github change Jenkins Trigger Docker build&push Deploy

Rancher Server

Rancher Host

Rancher Host

Rancher Host

Rancher Agent(Docker)

Rancher Agent(Docker)

Rancher Agent(Docker)

Page 36: Rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... • Azure • DigitalOcean • ... Github change Jenkins Trigger Docker build&push Deploy

Add Hosts

Page 37: Rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... • Azure • DigitalOcean • ... Github change Jenkins Trigger Docker build&push Deploy

Add Hosts

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

Page 38: Rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... • Azure • DigitalOcean • ... Github change Jenkins Trigger Docker build&push Deploy

Add Hosts (Custom Hosts)

Page 39: Rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... • Azure • DigitalOcean • ... Github change Jenkins Trigger Docker build&push Deploy

Add Hosts (Custom Hosts)

Page 40: Rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... • Azure • DigitalOcean • ... Github change Jenkins Trigger Docker build&push Deploy

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>

Page 41: Rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... • Azure • DigitalOcean • ... Github change Jenkins Trigger Docker build&push Deploy

Rancher Server

Rancher Agent(Docker)

Rancher Agent(Docker)

Rancher Agent(Docker)

STACK 1

STACK 2

STACK [n]

Page 42: Rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... • Azure • DigitalOcean • ... Github change Jenkins Trigger Docker build&push Deploy

Stack

Rancher Load Balancer APP Redis

Network Agent Network Agent Network Agent

Through IPsec (UDP 500 & 4500)

APP

Page 43: Rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... • Azure • DigitalOcean • ... Github change Jenkins Trigger Docker build&push Deploy

Catalog

Page 44: Rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... • Azure • DigitalOcean • ... Github change Jenkins Trigger Docker build&push Deploy

Rancher API Keys

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

Page 45: Rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... • Azure • DigitalOcean • ... Github change Jenkins Trigger Docker build&push Deploy

Rancher API Keys

Page 46: Rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... • Azure • DigitalOcean • ... Github change Jenkins Trigger Docker build&push Deploy

Rancher Compose Tool

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

Page 47: Rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... • Azure • DigitalOcean • ... Github change Jenkins Trigger Docker build&push Deploy

Rancher Compose ToolInstillation through Web UI

Page 48: Rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... • Azure • DigitalOcean • ... Github change Jenkins Trigger Docker build&push Deploy

Rancher Compose ToolInstillation through Github

Page 49: Rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... • Azure • DigitalOcean • ... Github change Jenkins Trigger Docker build&push Deploy

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)

Page 50: Rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... • Azure • DigitalOcean • ... Github change Jenkins Trigger Docker build&push Deploy

DEMO

Page 51: Rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... • Azure • DigitalOcean • ... Github change Jenkins Trigger Docker build&push Deploy

CI/CD Flow

Githubchange JenkinsTrigger Dockerbuild&push DeployRancher

Page 52: Rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... • Azure • DigitalOcean • ... Github change Jenkins Trigger Docker build&push Deploy

CI/CD Flow (commandp)

AWSS3DockerRegistry

DockerPush

JenkinsTrigger

GitPush

DockerBuild

RancherDeploy

ProxyServer

Rancher(China)

DockerPull

Page 53: Rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... • Azure • DigitalOcean • ... Github change Jenkins Trigger Docker build&push Deploy

Dockerfile

Website Nginx

Page 54: Rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... • Azure • DigitalOcean • ... Github change Jenkins Trigger Docker build&push Deploy

CI/CD Task Definition File(ECS)

Don’t use only the “latest” tag

Page 55: Rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... • Azure • DigitalOcean • ... Github change Jenkins Trigger Docker build&push Deploy

CI/CD Script (ECS)

Page 56: Rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... • Azure • DigitalOcean • ... Github change Jenkins Trigger Docker build&push Deploy

CI/CD Docker-compose.yml (Rancher)

Page 57: Rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... • Azure • DigitalOcean • ... Github change Jenkins Trigger Docker build&push Deploy

CI/CD Script (Rancher)

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

Page 58: Rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... • Azure • DigitalOcean • ... Github change Jenkins Trigger Docker build&push Deploy
Page 59: Rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... • Azure • DigitalOcean • ... Github change Jenkins Trigger Docker build&push Deploy

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

Page 60: Rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... • Azure • DigitalOcean • ... Github change Jenkins Trigger Docker build&push Deploy

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

DevOps Taiwan

Page 61: Rancher - 傻瓜也會用的容器集群管理 - s.itho.me · docker run -v /some/content: ... • Azure • DigitalOcean • ... Github change Jenkins Trigger Docker build&push Deploy

[email protected]@SammyLinTwsammylin_tw

Thanks