Instalando RancherOS en un VPS de Linode

Instala RancherOS en Linode y gestiona, de manera fácil y barata, infrastructuras robustas y auto-escalables.

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.

Linode + Rancher = Infrastructura de alta gama asequible
Linode + Rancher = Infrastructura de alta gama asequible

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.

La interfaz de Rancher, haciendo fácil lo difícil
La interfaz de Rancher, haciendo fácil lo difícil

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.

RancherOS y las piezas que lo componen
RancherOS y las piezas que lo componen

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 es así!

El por qué de este artículo

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.

sysctl net.ipv6.conf.eth0.disable_ipv6=1

El siguiente paso es actualizar los repositorios de Finnix e instalar lo necesario.

export DEBIAN_FRONTEND=noninteractive
apt-get -qq update
apt-get -qq install --no-install-recommends ca-certificates git grub2

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.

export VERSION=v0.7.1
git clone --branch "${VERSION}" https://github.com/rancher/os.git rancheros
ln -fs ../../build.conf rancheros/scripts/installer/build.conf
ln -fs `pwd`/rancheros/scripts/installer /scripts
mkdir dist
wget -q -P dist "https://github.com/rancher/os/releases/download/${VERSION}/initrd"
wget -q -P dist "https://github.com/rancher/os/releases/download/${VERSION}/vmlinuz"
rancheros/scripts/installer/set-disk-partitions /dev/sda
rancheros/scripts/installer/lay-down-os -c cloud-config.yml -d /dev/sda -i dist -t generic

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.

ssh rancher@IP

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.

sysctl net.ipv6.conf.eth0.disable_ipv6=1 && \
export DEBIAN_FRONTEND=noninteractive && \
apt-get -qq update && \
apt-get -qq install --no-install-recommends ca-certificates git grub2 && \
export VERSION=v0.7.1 && \
git clone --branch "${VERSION}" https://github.com/rancher/os.git rancheros && \
ln -fs ../../build.conf rancheros/scripts/installer/build.conf && \
ln -fs `pwd`/rancheros/scripts/installer /scripts && \
mkdir dist && \
wget -q -P dist "https://github.com/rancher/os/releases/download/${VERSION}/initrd" && \
wget -q -P dist "https://github.com/rancher/os/releases/download/${VERSION}/vmlinuz" && \
rancheros/scripts/installer/set-disk-partitions /dev/sda && \
rancheros/scripts/installer/lay-down-os -c cloud-config.yml -d /dev/sda -i dist -t generic

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.

sudo ros os upgrade
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.

Compartir en

Facebook Twitter Google+ LinkedIn