Baremetal deployment
-
Upload
baremetal -
Category
Technology
-
view
1.191 -
download
1
description
Transcript of Baremetal deployment
![Page 18: Baremetal deployment](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6c14f4a7959d7268b45ad/html5/thumbnails/18.jpg)
@[email protected] ⁃ ⁃ ⁃ ⁃
Dynamic Compute Environment❖ Easily start and stop services!
❖ Experimentation with a low barrier to entry!
❖ Scale processes as needed!
❖ Unique, isolated application environments!
❖ Self-service
![Page 19: Baremetal deployment](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6c14f4a7959d7268b45ad/html5/thumbnails/19.jpg)
@[email protected] ⁃ ⁃ ⁃ ⁃
serve serve serveserveserve serveserver server serverserverserver server
server server serverserverserver serverserver server serverserverserver server
Separation of concerns
server server serverserverserver server
serviceservice
serviceservice
serviceserviceservice
service
service
serviceservice
serviceservice
serviceservice
service
![Page 20: Baremetal deployment](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6c14f4a7959d7268b45ad/html5/thumbnails/20.jpg)
@[email protected] ⁃ ⁃ ⁃ ⁃
Separation of concerns❖ Host systems are identical!
❖ Host systems are application/service -unaware!
❖ Services are self-contained
![Page 28: Baremetal deployment](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6c14f4a7959d7268b45ad/html5/thumbnails/28.jpg)
@[email protected] ⁃ ⁃ ⁃ ⁃
Application Layer
service
serviceservice
servicedjango
rmqpg
cache
Django needs to be told how to access the services it depends on, which is done by passing in the connection information via environment variables
![Page 30: Baremetal deployment](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6c14f4a7959d7268b45ad/html5/thumbnails/30.jpg)
@[email protected] ⁃ ⁃ ⁃ ⁃
Compute Environment
❖ The way to interact with systems!❖ Server provisioning!❖ Base software stack!❖ System configuration!
❖ logging (syslog config)!❖ networking (/etc/hosts, floating IPs, etc.)!❖ metrics collection
![Page 31: Baremetal deployment](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6c14f4a7959d7268b45ad/html5/thumbnails/31.jpg)
@[email protected] ⁃ ⁃ ⁃ ⁃
Application Environment
❖ Image creation!❖ Image distribution!❖ Application runtime
![Page 34: Baremetal deployment](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6c14f4a7959d7268b45ad/html5/thumbnails/34.jpg)
@[email protected] ⁃ ⁃ ⁃ ⁃
[0][~/Projects/baremetal/containers/nginx(master)]
[berto@g6]$ find . -type f | grep -v .git
./Dockerfile
./files/etc/apt/nginx.pgp
./files/etc/apt/sources.list.d/nginx.list
./files/etc/nginx/nginx.conf
[…]
I. Codebasenginx service repo
![Page 35: Baremetal deployment](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6c14f4a7959d7268b45ad/html5/thumbnails/35.jpg)
@[email protected] ⁃ ⁃ ⁃ ⁃
Dockerfile (http://docs.docker.io/en/latest/use/builder/)
II. Dependencies
❖ FROM - Defines the base image: OS, version, etc.!
❖ ADD - Adds files to image!
❖ RUN - Commands to configure image!
❖ EXPOSE - Specifies exposed ports!
❖ ENV - Defines environment variables!
❖ VOLUME - Filesystem directories that are sharable!
❖ CMD - Default command to run when launched
![Page 36: Baremetal deployment](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6c14f4a7959d7268b45ad/html5/thumbnails/36.jpg)
@[email protected] ⁃ ⁃ ⁃ ⁃
FROM ubuntu:quantal
MAINTAINER Roberto Aguilar [email protected]
!ADD files/etc/apt/nginx.pgp /etc/apt/nginx.pgp
ADD files/etc/apt/sources.list.d/nginx.list /etc/apt/sources.list.d/nginx.list
!RUN apt-key add /etc/apt/nginx.pgp
RUN apt-get update
RUN apt-get install -y nginx
!EXPOSE 80 443
CMD /usr/sbin/nginx -g 'daemon off;'
Dockerfile (http://docs.docker.io/en/latest/use/builder/)
II. Dependencies
![Page 37: Baremetal deployment](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6c14f4a7959d7268b45ad/html5/thumbnails/37.jpg)
@[email protected] ⁃ ⁃ ⁃ ⁃
FROM ubuntu:quantal
MAINTAINER Roberto Aguilar [email protected]
Dockerfile (http://docs.docker.io/en/latest/use/builder/)
II. Dependencies
![Page 38: Baremetal deployment](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6c14f4a7959d7268b45ad/html5/thumbnails/38.jpg)
@[email protected] ⁃ ⁃ ⁃ ⁃
ADD files/etc/apt/nginx.pgp /etc/apt/nginx.pgp
ADD files/etc/apt/sources.list.d/nginx.list /etc/apt/sources.list.d/nginx.list
Dockerfile (http://docs.docker.io/en/latest/use/builder/)
II. Dependencies
![Page 39: Baremetal deployment](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6c14f4a7959d7268b45ad/html5/thumbnails/39.jpg)
@[email protected] ⁃ ⁃ ⁃ ⁃
RUN apt-key add /etc/apt/nginx.pgp
RUN apt-get update
RUN apt-get install -y nginx
Dockerfile (http://docs.docker.io/en/latest/use/builder/)
II. Dependencies
![Page 40: Baremetal deployment](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6c14f4a7959d7268b45ad/html5/thumbnails/40.jpg)
@[email protected] ⁃ ⁃ ⁃ ⁃
EXPOSE 80 443
Dockerfile (http://docs.docker.io/en/latest/use/builder/)
II. Dependencies
![Page 41: Baremetal deployment](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6c14f4a7959d7268b45ad/html5/thumbnails/41.jpg)
@[email protected] ⁃ ⁃ ⁃ ⁃
CMD /usr/sbin/nginx -g 'daemon off;'
Dockerfile (http://docs.docker.io/en/latest/use/builder/)
II. Dependencies
![Page 43: Baremetal deployment](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6c14f4a7959d7268b45ad/html5/thumbnails/43.jpg)
@[email protected] ⁃ ⁃ ⁃ ⁃
docker run -d <image_name> [command]
Docker
Builds imagesdocker build -t <image_name> .
Container runtime
![Page 44: Baremetal deployment](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6c14f4a7959d7268b45ad/html5/thumbnails/44.jpg)
@[email protected] ⁃ ⁃ ⁃ ⁃
Docker Registrygithub.com/dotcloud/docker-registry
docker pull <image_name>
Host imagesdocker push <image_name>
Distribute images
![Page 45: Baremetal deployment](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6c14f4a7959d7268b45ad/html5/thumbnails/45.jpg)
@[email protected] ⁃ ⁃ ⁃ ⁃
Check out the Docker Index
http://index.docker.io
Ready-made, downloadable images
![Page 47: Baremetal deployment](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6c14f4a7959d7268b45ad/html5/thumbnails/47.jpg)
@[email protected] ⁃ ⁃ ⁃ ⁃
Anatomy of an image name
registry.local/baremetal/postgresql
registry (optional)
![Page 48: Baremetal deployment](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6c14f4a7959d7268b45ad/html5/thumbnails/48.jpg)
@[email protected] ⁃ ⁃ ⁃ ⁃
Anatomy of an image name
registry.local/baremetal/postgresql
user (optional)
![Page 50: Baremetal deployment](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6c14f4a7959d7268b45ad/html5/thumbnails/50.jpg)
@[email protected] ⁃ ⁃ ⁃ ⁃
Anatomy of an image name
registry.local/baremetal/postgresql
service
user (optional)
registry (optional)
![Page 52: Baremetal deployment](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6c14f4a7959d7268b45ad/html5/thumbnails/52.jpg)
@[email protected] ⁃ ⁃ ⁃ ⁃
$ docker run -d -p 80 -p 443 registry.local/baremetal/nginx1052eb879f4e[…]!$ docker ps | chopCONTAINER ID IMAGE PORTS1052eb879f4e […]nginx 0.0.0.0:49155->443/tcp, 0.0.0.0:49157->80/tcp!$ alias chop="sed -e 's/ */|/g' | cut -d'|' -f 1,2,6 | column -s '|' -t"
VII. Port-binding
![Page 53: Baremetal deployment](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6c14f4a7959d7268b45ad/html5/thumbnails/53.jpg)
@[email protected] ⁃ ⁃ ⁃ ⁃
$ docker run -d -p 80 -p 443 registry.local/baremetal/nginx1052eb879f4e[…]!$ docker ps | chopCONTAINER ID IMAGE PORTS1052eb879f4e […]nginx 0.0.0.0:49155->443/tcp, 0.0.0.0:49157->80/tcp!$ alias chop="sed -e 's/ */|/g' | cut -d'|' -f 1,2,6 | column -s '|' -t"
VII. Port-binding
![Page 54: Baremetal deployment](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6c14f4a7959d7268b45ad/html5/thumbnails/54.jpg)
@[email protected] ⁃ ⁃ ⁃ ⁃
$ docker run -d -p 80 -p 443 registry.local/baremetal/nginx1052eb879f4e[…]!$ docker ps | chopCONTAINER ID IMAGE PORTS1052eb879f4e […]nginx 0.0.0.0:49155->443/tcp, 0.0.0.0:49157->80/tcp!$ alias chop="sed -e 's/ */|/g' | cut -d'|' -f 1,2,6 | column -s '|' -t"
VII. Port-binding
![Page 55: Baremetal deployment](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6c14f4a7959d7268b45ad/html5/thumbnails/55.jpg)
@[email protected] ⁃ ⁃ ⁃ ⁃
$ docker run -d -p 80 -p 443 registry.local/baremetal/nginx1052eb879f4e[…]!$ docker ps | chopCONTAINER ID IMAGE PORTS1052eb879f4e […]nginx 0.0.0.0:49155->443/tcp, 0.0.0.0:49157->80/tcp!$ alias chop="sed -e 's/ */|/g' | cut -d'|' -f 1,2,6 | column -s '|' -t"
VII. Port-binding
![Page 56: Baremetal deployment](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6c14f4a7959d7268b45ad/html5/thumbnails/56.jpg)
@[email protected] ⁃ ⁃ ⁃ ⁃
$ docker run -d -p 80 -p 443 registry.local/baremetal/nginx1052eb879f4e[…]!$ docker ps | chopCONTAINER ID IMAGE PORTS1052eb879f4e […]nginx 0.0.0.0:49155->443/tcp, 0.0.0.0:49157->80/tcp!$ alias chop="sed -e 's/ */|/g' | cut -d'|' -f 1,2,6 | column -s '|' -t"
VII. Port-binding
![Page 57: Baremetal deployment](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6c14f4a7959d7268b45ad/html5/thumbnails/57.jpg)
@[email protected] ⁃ ⁃ ⁃ ⁃
baremetal@baremetal:~$ docker port 1052eb879f4e 4430.0.0.0:49155baremetal@baremetal:~$ docker port 1052eb879f4e 800.0.0.0:49157
VII. Port-binding
![Page 58: Baremetal deployment](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6c14f4a7959d7268b45ad/html5/thumbnails/58.jpg)
@[email protected] ⁃ ⁃ ⁃ ⁃
VII. Port-binding
-p 80:80
All interfaces, dynamic host port-p 80
All interfaces, explicit host port
-p 192.168.42.147:80:80
Explicit interface, dynamic host port-p 192.168.42.147::80
Explicit interface, explicit host port
![Page 60: Baremetal deployment](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6c14f4a7959d7268b45ad/html5/thumbnails/60.jpg)
@[email protected] ⁃ ⁃ ⁃ ⁃
pg
rmq
cache
III. Environment-based Config
postgres://u:[email protected]:49156/db
amqp
://u
:p@
1.2.
3.35
:499
01
memcache://1.2.3.11:49302
django
![Page 61: Baremetal deployment](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6c14f4a7959d7268b45ad/html5/thumbnails/61.jpg)
@[email protected] ⁃ ⁃ ⁃ ⁃
$ docker run -d \ -p 1.2.3.42::8000 \ -e MEMCACHED_URL=memcache://1.2.3.11:49302 \ -e AMQP_URL=amqp://u:[email protected]:49901 \ -e POSTGRES_URL=postgres://u:[email protected]:49156/db \ registry.local/app1/djangoapp
III. Environment-based Config
![Page 62: Baremetal deployment](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6c14f4a7959d7268b45ad/html5/thumbnails/62.jpg)
@[email protected] ⁃ ⁃ ⁃ ⁃
import osfrom urlparse import urlparse!backend = 'django.core.cache.backends.memcached.MemcachedCache'memcached_url = urlparse(os.environ['MEMCACHED_URL'])CACHES = { 'default': { 'BACKEND': backend, 'LOCATION': memcached_url.netloc, }}
settings.py - memcached setup
III. Environment-based Config
![Page 63: Baremetal deployment](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6c14f4a7959d7268b45ad/html5/thumbnails/63.jpg)
@[email protected] ⁃ ⁃ ⁃ ⁃
import os
!
BROKER_URL = os.environ['AMQP_URL']
settings.py - RabbitMQ setup
III. Environment-based Config
![Page 64: Baremetal deployment](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6c14f4a7959d7268b45ad/html5/thumbnails/64.jpg)
@[email protected] ⁃ ⁃ ⁃ ⁃
import dj_database_url
!
dj_db_config = dj_database_url.config()
if dj_db_config:
DATABASES['default'] = dj_db_config
settings.py - postgresql setup
III. Environment-based Config
![Page 66: Baremetal deployment](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6c14f4a7959d7268b45ad/html5/thumbnails/66.jpg)
@[email protected] ⁃ ⁃ ⁃ ⁃
Orchestration Configuration❖ Repositories!
❖ tracks Docker image, git repo and branch!❖ Services!
❖ repo, dependencies, failover, process type, node role!❖ Applications!
❖ services, # instances, configuration
![Page 67: Baremetal deployment](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6c14f4a7959d7268b45ad/html5/thumbnails/67.jpg)
@[email protected] ⁃ ⁃ ⁃ ⁃
Orchestration Daemon❖ Aware of all hosts in cluster!❖ Reacts to hosts joining and leaving cluster!❖ Reacts to configuration changes!❖ Assigns containers to hosts
![Page 68: Baremetal deployment](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6c14f4a7959d7268b45ad/html5/thumbnails/68.jpg)
@[email protected] ⁃ ⁃ ⁃ ⁃
Container Daemon❖ Reacts to cluster events!❖ Reacts to Docker events for container uptime!
![Page 71: Baremetal deployment](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6c14f4a7959d7268b45ad/html5/thumbnails/71.jpg)
@[email protected] ⁃ ⁃ ⁃ ⁃
Salt Master in a container
❖ Self-contained!❖ Portable - simple to relocate to another system!❖ Easily test new salt version with !❖ Easy rollback if needed
![Page 73: Baremetal deployment](https://reader033.fdocuments.net/reader033/viewer/2022061218/54b6c14f4a7959d7268b45ad/html5/thumbnails/73.jpg)
@[email protected] ⁃ ⁃ ⁃ ⁃
Salt Master in a container
❖ Are there scaling issues with Salt in a container?!❖ So far so good