Cómo implementar contenedores Docker con OpenStack Heat | Hosting mas barato

Entonces ha implementado una infraestructura OpenStack. También ha oído hablar de Docker y es muy consciente de la inmensa emoción que generó. Bueno, OpenStack y Docker son dos tecnologías complementarias que agilizan el funcionamiento de los equipos que trabajan en los centros de datos comunes. Docker es un programa de código abierto que organiza automáticamente las aplicaciones en contenedores. Hace que la solución LXC (Linux Containers) sea el estándar y permite a los usuarios ejecutar varios contenedores en un servidor. Por otro lado, OpenStack ofrece una API abierta que se enfoca en redes, almacenamiento, computación y otros servicios. Simplifica el consumo de infraestructura para facilitar los tiempos de ejecución de los contenedores y los sistemas operativos (puede obtener más información sobre esto en nuestra guía de hosting de contenedores).
Una forma de mejorar OpenStack es utilizar complementos de Docker. Docker se puede integrar fácilmente en OpenStack Nova como hipervisor. Sin embargo, una de las mejores técnicas para combinar OpenStack con Docker es organizar sus contenedores con OpenStack Heat.
Si tiene curiosidad por la integración de estas tecnologías, ha llegado a la página correcta. El manual le ayuda a integrar Docker con OpenStack. Además, recibirá instrucciones detalladas para la instalación sin errores de contenedores Docker con OpenStack Heat. La orquestación se detalla con instrucciones paso a paso fáciles de entender para que sea adecuada para todos, incluidos los principiantes.
¿Listo? ¡Aquí vamos!
Nota especial: antes de implementar contenedores Docker con OpenStackHeat, necesita un servidor Linux virtual. Póngase en contacto con Hosting Más Barato para encontrar los mejores proveedores de hosting de Linux con opiniones reales de usuarios.
El complemento de Docker está contenido en la carpeta Heat (carpeta zip), que está disponible en GitHub a través de:
https://github.com/openstack/heat/tree/stable/icehouse
Descargue la carpeta y extráigala con:
unzip heat-stable-icehouse.zip
Después de extraer la carpeta, busque la carpeta Pruebas y elimínela para evitar conflictos:
cd heat-stable-icehouse/contrib/ rm -rf docker/docker/tests
A continuación, use el siguiente comando para crear un nuevo directorio en la carpeta /usr/lib/heat/
:
cp -r docker/* /usr/lib/heat/docker-plugin
Ya se cumplen los requisitos previos para instalar el complemento de Docker. Ejecute el siguiente comando para iniciar la tarea.
cd /usr/lib/heat/docker-plugin apt-get install python-pip pip install -r requirements.txt
El archivo /etc/heat/heat.conf debe editarse antes de reiniciar el servicio. Utilice el siguiente comando para editar este archivo:
vi /etc/heat/heat.conf (add) plugin_dirs=/usr/lib/heat/docker-plugin/docker
Ahora puede reiniciar los servicios con el siguiente comando:
service heat-api restart service heat-api-cfn restart service heat-engine restart
En esta guía acoplaremos e implementaremos una aplicación LAMP. Debido a esto, necesitamos crear dos contenedores Docker; uno que se ejecuta en una base de datos MySQL y otro que se ejecuta en Apache con PHP.
Describimos un recurso OS :: Heat :: SoftwareConfig que define la configuración y otro recurso OS :: Heat :: SoftwareDeployement para implementar configuraciones en el servidor Docker. Luego podemos asociar una IP flotante con OS :: Nova :: server para habilitar la conexión a Internet. También creamos dos contenedores Docker con el formato DockerInc :: Docker :: Container en nuestro host Docker.
: Solo estamos creando una plantilla de calor simple para este tutorial. Se puede crear una plantilla avanzada con múltiples parámetros como nombres, enlaces, enlaces, puertos y más. La plantilla de calor extendida facilita el uso versátil de Docker. Sin embargo, el complemento de Docker que estamos utilizando no admite estos parámetros.
Crea una plantilla en la carpeta docker-stack.yml y agregue el siguiente contenido;
$ vi docker-stack.yml heat_template_version: 2013-05-23 description: > Dockerize a multi-node application with OpenStack Heat. This template defines two docker containers running apache with php and mysql database. parameters: key: type: string description: > Name of a KeyPair to enable SSH access to the instance. Note that the default user is ec2-user. default: key1 flavor: type: string description: Instance type for the docker server. default: m1.medium image: type: string description: > Name or ID of the image to use for the Docker server. This needs to be built with os-collect-config tools from a Fedora base image. default: fedora-software-config public_net: type: string description: name of public network for which floating IP addresses will be allocated. default: nova resources: configuration: type: OS::Heat::SoftwareConfig properties: group: script config: | #!/bin/bash -v setenforce 0 yum -y install docker-io cp /usr/lib/systemd/system/docker.service /etc/systemd/system/ sed -i -e '/ExecStart/ { s,fd://,tcp://0.0.0.0:2375, }' /etc/systemd/system/docker.service systemctl start docker.service docker -H :2375 pull marouen/mysql docker -H :2375 pull marouen/apache deployment: type: OS::Heat::SoftwareDeployment properties: config: {get_resource: configuration} server: {get_resource: docker_server} docker_server: type: OS::Nova::Server properties: key_name: {get_param: key} image: { get_param: image } flavor: { get_param: flavor} user_data_format: SOFTWARE_CONFIG server_floating_ip: type: OS::Nova::FloatingIP properties: pool: { get_param: public_net} associate_floating_ip: type: OS::Nova::FloatingIPAssociation properties: floating_ip: { get_resource: server_floating_ip} server_id: { get_resource: docker_server} mysql: type: DockerInc::Docker::Container depends_on: [deployment] properties: image: marouen/mysql port_specs: - 3306 docker_endpoint: str_replace: template: http://host:2375 params: host: {get_attr: [docker_server, networks, private, 0]} apache: type: DockerInc::Docker::Container depends_on: [mysql] properties: image: marouen/apache port_specs: - 80 docker_endpoint: str_replace: template: http://host:2375 params: host: {get_attr: [docker_server, networks, private, 0]} outputs: url: description: Public address of apache value: str_replace: template: http://host params: host: {get_attr: [docker_server, networks, private, 0]}
Ahora que ha creado la plantilla, puede continuar con la implementación de su pila.
Antes de implementar la pila, debe crear un archivo de credenciales con el siguiente comando:
vi creds
# Agregue lo siguiente:
export OS_TENANT_NAME=admin
export OS_TENANT_NAME=admin
export OS_PASSWORD=admin_pass
export OS_AUTH_URL="http://controller:5000/v2.0/"
Siga los pasos a continuación para crear una imagen basada en Fedora
$ git clone https://git.openstack.org/openstack/diskimage-builder.git git clone https://git.openstack.org/openstack/tripleo-image-elements.git git clone https://git.openstack.org/openstack/heat-templates.git git clone https://git.openstack.org/openstack/dib-utils.git export PATH="${PWD}/dib-utils/bin:$PATH" export ELEMENTS_PATH=tripleo-image-elements/elements:heat-templates/hot/software-config/elements diskimage-builder/bin/disk-image-create vm fedora selinux-permissive os-collect-config os-refresh-config os-apply-config heat-config-ansible heat-config-cfn-init heat-config-docker heat-config-puppet heat-config-salt heat-config-script -o fedora-software-config.qcow2 glance image-create --disk-format qcow2 --container-format bare --name fedora-software-config < fedora-software-config.qcow2 $
Si aún no necesita crear una clave, ejecute el siguiente comando:
ssh-keygen nova keypair-add --pub-key ~/.ssh/id_rsa.pub key1
Para permitir el acceso a su servidor Docker, integramos reglas en nuestro grupo de seguridad estándar:
Permitir $ ICMP (ping):
nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0
Permitir el acceso a $ Secure Shell (SSH):
nova secgroup-add-rule default tcp 22 22 0.0.0.0/0
Permitir acceso al puerto de $ 2375 (punto final de Docker):
nova secgroup-add-rule default tcp 2375 2375 0.0.0.0/0
Luego use el siguiente comando para crear una red privada:
source creds
$ Crea una red privada:
nova network-create private --bridge br100 --multi-host T --dns1 8.8.8.8 --gateway 172.16.0.1 --fixed-range-v4 172.16.0.0/24
A continuación, cree el grupo de IP flotante:
nova-manage floating create --pool=nova --ip_range=192.168.100.100/28
Ahora creemos nuestra pila a partir de la plantilla recién creada.
source creds heat stack-create -f docker-stack.yml docker-stack
A continuación, verifique que su pila se haya creado correctamente:
Lista de pilas de calor
La siguiente ventana se muestra después de que se inicia el lote:
Ejecute el siguiente comando para confirmar que sus contenedores se crearon correctamente:
ssh ec2-user@192.168.100.97 sudo docker -H :2375 ps
Obtendrá el siguiente resultado:
¡Eso es! Ha instalado correctamente contenedores Docker con OpenStack Heat.