Giant Swarm es un proveedor IaaS(Infraestructure As A Service) donde básicamente nos permite desplegar nuestros propios contenedores Docker sobre su infraestructura.
Todavía tienen su plan ‘Shared‘ en fase Alfa, pero después de varios tweets con varios componentes de la empresa me decidí a probar su servicio, que por cierto, es excelente. Son una empresa Alemana, con un equipo muy sociable y tiene pinta de ser un gran proyecto con un gran equipo detrás. Hay que decir que el precio que tienen por el servicio que dan es muy competitivo.
Antes de empezar
Giant Swarm dispone de varias imágenes de docker para desplegar en sus servidores, en mi caso, voy a desplegar una imagen que ya tengo con ubuntu y el servidor web Apache.
Si tenéis problemas para entender como funciona Docker podéis empezar leyendo mi anterior post “Trabajando con contenedores de Docker”.
Instalamos el cliente CLI(Command Line Interface)
Para poder interactuar con Giant Swarm necesitaremos instalar su cliente CLI. Esto es una practica habitual en muchos proveedores de este tipo de servicios, todos tienen su propio cliente CLI que nos permitirá interactuar(Por línea de comandos) con el servicio. En mi caso, como utilizo Ubuntu:
# Descargamos el cliente para Linux 64 curl -O https://downloads.giantswarm.io/swarm/clients/0.21.0/swarm-0.21.0-linux-amd64.tar.gz # Lo descomprimimos tar xzf swarm-0.21.0-linux-amd64.tar.gz #Y lo copiamos en alguna carpeta del path, por ejemplo /usr/local/bin sudo cp swarm /usr/local/bin/
Y nos logueamos con el cliente:
swarm login mi_usuario_de_giantswarm
Subimos la imagen docker
En mi caso, ya tengo una imagen en docker llamada ‘ubuntuapache’. Le tendré que poner el nombre conforme a la normativa de Swarm Giant ‘registry.giantswarm.io/
# Nos logueamos en Swarm Giant con docker sudo docker login https://registry.giantswarm.io # Le damos a mi imagen 'ubuntuapache' el formato de nombre que requiere Swarm sudo docker tag ubuntuapache registry.giantswarm.io/acoronadoc/ubuntuapache:latest # Hacemos el push a Swarm Giant sudo docker push registry.giantswarm.io/acoronadoc/ubuntuapache:latest
Definimos el servicio que arrancará nuestra imagen
En Swarm Giant los servicios se definen mediante un fichero JSON, normalmente llamado ‘swarm.json'(Que crearemos en nuestro ordenador). En este fichero configuraremos el nombre de nuestro servicio y los componentes(imagenes docker) que tendrá. En mi caso tendrá una pinta como la siguiente:
{ "name": "albert-service", "components": { "webserver": { "image": "registry.giantswarm.io/acoronadoc/ubuntuapache:latest", "entrypoint": "/home/start.sh", "ports": 80, "domains": { "80": "acoronadoc.gigantic.io" } } } }
En este fichero se pueden definir un montón de cosas, podeis incontrar mas información en la extensa documentación del proveedor https://docs.giantswarm.io/reference/swarm-json/ . Por cierto, yo he tenido que crear un script para el ‘punto de entrada’ de la imagen docker que arranca el servidor apache y entra en un bucle para que no se cierre (No se si es lo mas elegante, pero funciona).
Después ponemos en marcha el servicio usando el comando swarm up(donde le tenemos que definir un dominio):
swarm up --var=domain=testalbert-$(swarm user).gigantic.io
Y finalmente, ya tenemos nuestro servicio funcionando. El panel de control de Giant Swarm nos ofrece un montón de información en tiempo real del consumo de CPU y RAM de nuestros contenedores. En el pantallazo se ve además como nos permite gestionar varias organizaciones y entornos.
Ya veis que es muy sencillo… bueno, a mi me ha llevado toda la tarde. He tenido problemas a la hora de crear la imagen docker. Pero una vez entiendes el sistema es una pasada. Recomiendo mucho el proveedor por calidad y precio (Tanto del servicio y del equipo).
[…] anteriores posts vimos como publicar nuestros contenedores Docker sobre Giant Swarm. En el post de hoy veremos como publicar nuestros contenedores Docker sobre IBM Bluemix, el […]