Rancher - 傻瓜也會用的容器集群管理.key
-
Upload
duongtuong -
Category
Documents
-
view
236 -
download
6
Transcript of Rancher - 傻瓜也會用的容器集群管理.key
傻瓜也會用的容器集群管理Sammy @ Container Summit 2016 (2016/9/21)
I am Sammy LinHELLO
[email protected]@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
[email protected]@SammyLinTwsammylin_tw
Thanks