A pesar del monopolio de AWS en sistemas cloud, alternativas caseras y económicas son viables para montar nuestro propio sistema cloud auto-escalable y con alta disponibilidad. Ya bien sea utilizando Kubernetes o cualquier otro orquestador, podremos administrar nuestra infrastructura de una manera visual y sencilla gracias a Rancher. Esto, acompañado de la calidad y precio de las instancias VPS de Linode, nos permitirá crear una infrastructura sólida y perfecta para gestionar microservicios desde tan solo 10-15 dólares al mes.

Rancher
Rancher es una plataforma open source que te permite, mediante un agradable panel de administración, gestionar la infrastructura necesaria para ejecutar contenedores en múltiples entornos, incluído producción.
A través de su interfaz se pueden orquestar contenedores de Docker mediante Cattle, Kubernetes, Mesos, Docker Swarn o cualquier otro orquestador compatible, de manera simple y efectiva.

Sin entrar en detalle, Rancher gestiona automáticamente la comunicación entre hosts, la distribución y asociación de contenedores (formando stacks), los certificados que se utilizarán en los contenedores o balanceadores de carga (load balancers) o los secretos (secrets) a los que acceder de forma segura, entre otras funcionalidades.
RancherOS
Rancher es una plataforma que debe ejecutarse sobre un sistema operativo. Para cubrir este punto, Rancher Labs creó RancherOS, un sistema operativo (también open source) minimalista y ligero que posee únicamente lo necesario para ejecutar contenedores.
Además, todos los componentes del sistema (udev, redes, ...) se ejecutan también en contenedores gestionados por una instancia de Docker con permisos elevados, por lo que la modularización de este sistema operativo es única y sorprendente.

Al igual que CoreOS (sistema operativo con el que comparte filosofía), la provisión/configuración del sistema se realiza mediante cloud-init.
A partir de ahora recuerda, RancherOS es un sistema operativo minimalista y enfocado a Docker y Rancher es un conjunto de herramientas
Linode
Por otro lado tenemos Linode, empresa de la que poco hay que decir. Ofrecen servidores VPS de gran calidad a un precio casi imbatible. Sin duda una de las mejores opciones a tener en cuenta si queremos montar nuestra propia infrastructura ajustando el coste al mínimo. En benchmarking, las instancias de Linode suelen superar en casi todos los aspectos a las instancias de AWS, DigitalOcean, Vultr y otros competidores.
Si deseas crear tu cuenta en Linode y agradecerme de alguna manera la utilidad de este artículo, puedes hacer click aquí para utilizar mi código de afiliado (1ffc2ffdb93ffe81ccc214edbb9b93456920d913
). ¡Gracias si lo utilizas!
Situación actual de Linode + RancherOS
Linode no posee RancherOS entre la lista de sistemas operativos soportados, ni tampoco ofrece (o al menos de forma sencilla) soporte para iPXE, un bootloader que nos permite instalar sistemas operativos desde varias fuentes, como por ejemplo a través de HTTP
.
Además, la versión 0.8.0
de RancherOS introdujo un cambio significativo: un nuevo método de instalación. Este método desgraciadamente no es compatible con Linode ya que hace uso de iPXE.
Por suerte, aún se puede instalar la versión 0.7.1
del sistema operativo y después actualizar el sistema, dejando a RancherOS en la última versión de manera limpia.
Por lo tanto, en este artículo veremos los pasos necesarios para llegar a nuestra meta.
Preparación del VPS
Lo primero es crear nuestra instancia en Linode. En este artículo utilizaré la instancia Linode 2048 en Frankfurt, DE. Podéis utilizar cualquier instancia en cualquier localización.
Si vamos a utilizar Rancher necesitaremos un extra de RAM. Por lo tanto, instala RancherOS en una instancia con al menos 2 GB de RAM (recomendados 4 GB). Este requerimiento solo es para la instancia que ejecutará Rancher. Los hosts sobre los que ejecutaremos nuestros contenedores pueden tener menos RAM, por ejemplo 512 MB.
Tras crear la instancia accedemos al Dashboard para su configuración.
Crear el disco
Lo primero es crear un disco. Accedemos a "Create a new Disk" bajo la sección "Disks" y creamos un nuevo disco con la siguiente configuración:
- Label:
RancherOS Disk
. - Type:
unformatted / raw
. - Size: Utilizaremos el valor por defecto, el máximo posible.
En configuraciones más avanzadas podemos, por ejemplo, crear un disco para RancherOS y otro disco para persistir la base de datos de Rancher. Así, en caso de reinstalar el sistema operativo, nuestros datos seguirán estando disponibles.
Crear el perfil de configuración
En la sección "Dashboard", hacemos click en "Create a new Configuration Profile".
En esta pantalla cambiaremos únicamente los siguientes parámetros, dejando el resto tal como aparecen por defecto:
- Label:
RancherOS
. - Kernel:
Direct Disk
. - dev/sda:
RancherOS Disk
.
Además, en la sección inferior desactivaremos todas las opciones:
- Distro Helper:
No
. - Disable updatedb:
No
. - modules.dep Helper:
No
. - Automount devtmpfs:
No
. - Auto-configure Networking:
No
.
Ahora es buen momento para hacer un poco de meditación y eliminar toda esta negatividad.
Iniciar en modo rescate
Para poder instalar RancherOS a mano accedemos al modo rescate. Hacemos click en la pestaña "Rescue" y después sobre el botón "Reboot into Rescue Mode". Esto arrancará nuestra instancia con Finnix, un sistema operativo muy útil para este tipo de cuestiones.
Accedemos a la pestaña "Remote Access" y en la parte inferior tenemos varias opciones para acceder a la consola remota. El mejor método es "Lish via SSH", ya que podremos copiar y pegar los comandos necesarios. Este método nos pedirá la contraseña de nuestra cuenta de Linode para poder acceder vía SSH.
Instalación de RancherOS
Una vez dentro del modo rescate podemos empezar con los comandos necesarios para la instalación.
Al final de esta sección encontrarás el comando completo para copiar y pegar sin necesidad de ir uno por uno.
Lo primero es desactivar IPv6 ya que da algunos problemas.
El siguiente paso es actualizar los repositorios de Finnix e instalar lo necesario.
Ya podemos crear nuestro fichero cloud-config.yml
con la configuración a nuestro gusto. Para este artículo vamos a utilizar una configuración mínima. Tan mínima que ni siquiera vamos a instalar Rancher. Únicamente instalaremos RancherOS sobre Linode, tal como reza el título del artículo. Aún así, más abajo encontrarás lo necesario para utilizar Rancher. Puedes saltar y después volver a este punto.
A nuestra instancia le asignaremos un hostname
y una clave SSH pública para poder iniciar sesión mediante SSH tras la instalación, ya que el acceso mediante contraseña está desactivado y desaconsejado.
#cloud-config
hostname: fra1-rancher
ssh_authorized_keys:
- ssh-rsa AAAAB3NzaC1yc2E...
Y por último, descargamos todo lo necesario y ejecutamos los comandos que instalarán RancherOS en el disco.
Tras esto volvemos al panel de administración de Linode, seleccionamos nuestro perfil de configuración RancherOS
y hacemos click en el botón "Boot".
La instancia se reiniciará y tras unos segundos entrará en RancherOS. Accedemos mediante SSH con el usuario rancher
y la IP de nuestra instancia.
La IP de nuestra instancia la podemos encontrar bajo la pestaña "Remote Access" del panel de administración de Linode.
Comando completo
Lo prometido es deuda, crea el fichero cloud-config.yml
y copia y pega el siguiente comando para ejecutar todas las acciones a la vez.
Actualización de RancherOS
Como indicamos arriba, RancherOS se encuentra instalado en su versión 0.7.1
, la cual se puede comprobar mediante el comando sudo ros os version
.
Para actualizar el sistema basta con ejecutar sudo ros os upgrade
, un comando que ejecutaremos cada vez que queramos actualizar el sistema operativo de nuestras instancias.
Upgrading to rancher/os:v1.0.2 Continue [y/N]: y
Tras el reinicio, el sistema operativo estará en la versión más reciente.
Instalación de Rancher
Antes de nada recordemos que hay 2 roles para las instancias. Por un lado tenemos la máquina (o máquinas en el modo clúster) que se encargarán de ejecutar Rancher, y por otro lado tenemos las máquinas que ejecutarán contenedores de nuestras aplicaciones, también llamadas hosts.
Instalación de Rancher
Para instalar Rancher basta con agregar las siguientes líneas al fichero cloud-config.yml
en la instancia que va a ocuparse del servicio.
...
rancher:
services:
rancher-server:
image: rancher/server:latest
restart: unless-stopped
ports:
- "8080:8080"
volumes:
- /home/rancher/database:/var/lib/mysql
Hecho esto, podremos acceder a Rancher a través de la dirección: http://<IP>:8080
.
Lo primero que debemos hacer es configurar el Control de Acceso (Access Control) para proteger nuestra instancia de accesos no autorizados.
Instalación de hosts
Para instalar hosts, accedemos al menú Infrastructure->Hosts, hacemos click en Add Host y seguimos las instrucciones que nos indican.
Para automatizar este proceso y que las instancias formen parte de Rancher automáticamente en el momento de su creación, podemos añadir las siguientes líneas al fichero cloud-config.yml
que utilizaremos en estas máquinas, reemplazando el parámetro command
por la URL que nos indique Rancher en las instrucciones.
...
services:
rancher-agent-host:
image: rancher/agent
command: http://<IP>:8080/v1/scripts/<TOKEN>
privileged: true
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /var/lib/rancher:/var/lib/rancher
Conclusión
Tras estos pasos ya tenemos lo necesario para ejecutar nuestros contenedores de Docker en una infrastructura sólida y barata, haciendo uso de Linode, RancherOS y Rancher.
Si te ha gustado el artículo compártelo y comenta, así sabré que este área es de interés y escribiré nuevos artículos sobre este tema, como por ejemplo cómo crear un clúster de Kubernetes en Rancher.