En los últimos años, la "fiebre de kubernetes" ha impulsado el desarrollo de proyectos en torno al ecosistema del archiconocido orquestador de contenedores, como helm, kubespray, kubeflow, kubetail y knative. Rancher es, sin duda, uno de los proyectos más prolíficos de los últimos años, y es más que probable que continúe sorprendiéndonos en el futuro.

Ya han pasado algunos años desde que comenzamos a utilizar contenedores en nuestros proyectos, por lo que seguro que ya has oído hablar de docker y kubernetes; tecnologías que han revolucionado la industria de las TI, democratizando la portabilidad de nuestras aplicaciones entre sistemas y convirtiéndolas en software robusto e independiente, facilitando la adopción de procesos automatizados y gestionando de forma eficiente la escalabilidad y la alta disponibilidad.

En su versión más simplificada, podemos referirnos a Rancher como una aplicación para gestionar de una forma centralizada nuestros clusters de kubernetes, con una propuesta principal basada en crear una capa de abstracción desde la que poder operar nuestros clusters a diferentes niveles. A lo largo de este post, exploraremos con más detalle sus funcionalidades. ¡Vamos a por ello!

Fuente: Rancher
Fuente: Rancher

Para ponernos en contexto, nos remontaremos por un momento al año 2014 en Cupertino (California), donde nace una startup bajo el nombre "Rancher Labs" con Sheng Liang (@shengliang) al frente. Muy pronto atrae las miradas de los Venture Capitals más curiosos, para finalmente y, tras 6 años, ser vendida al gigante SUSE por más de 600 Millones de dólares (según indica la CNBC), aunque los detalles del acuerdo, como no podía ser de otra forma, son confidenciales. Pero no estamos aquí como reporteros sino como tecnólog@s, vayamos más a fondo.

Con una filosofía open-source y más de 400 repositorios publicados en github, bajo el paraguas "Rancher", nos encontramos tanto con el propio aplicativo como con un gran número de sub-proyectos, de entre los cuales por su proyección y madurez, destacaremos K3S (kubernetes ligero), RKE (cluster k8s para rancher) y Longhorn (almacenamiento distribuido).

Empezaremos con Longhorn, una solución de almacenamiento inicialmente desarrollada por Rancher y posteriormente donada a la CNCF. El proyecto ofrece una potente plataforma de almacenamiento distribuido cloud native para Kubernetes fácil, rápida y confiable que podemos implementar en nuestros clusters con helm.

Si hablamos de K3S diremos que es una distribución de kubernetes ligera con una instalación rápida, sencilla, con pocos requisitos y con un uso de memoria mínimo (en relación a su hermano mayor K8S). Certificada por la CNCF y sin dependencias externas, es perfecta para entornos donde los recursos son limitados como dispositivos IoT. La base de datos donde K3S almacena la configuración y el estado del cluster es SQLITe3, en lugar del ETCD de kubernetes al que estamos acostumbrados. Y para su instalación, basta con ejecutar:

curl -sfL https://get.k3s.io | sh -

Te dejamos aquí un enlace a k3s, merece la pena echarle un vistazo.

Rancher 1

Entrando un poco más a fondo, pasaremos por RKE que también es una distribución de kubernetes, creada por Rancher Labs y certificada por la CNCF, que nos servirá para instalar nuestro aplicativo Rancher en producción, a la par que contar con soporte sobre él por parte de SUSE. Es el propio RKE el cluster encargado de gestionar nuestros clusters kubernetes; en definitiva, un solo cluster para gobernarlos a todos. RKE se ejecuta al completo en contenedores Docker, por lo que podemos instalarlo tanto en servidores bare-metal como en servidores virtualizados y, por supuesto, tanto en nube pública como privada.

¿Cómo de fácil es crear un cluster RKE?

  1. Instalaremos docker en los hosts donde correrá nuestro cluster, puesto que los componentes del cluster RKE estarán corriendo como contenedores docker.
curl https://releases.rancher.com/install-docker/20.10.sh | sh
  1. Descargamos el binario rke en nuestro equipo, desde donde lanzaremos la provisión del cluster.
  2. Generamos un cluster.yml con rke config o utilizando algunos ficheros de ejemplo.
  3. Ejecutamos rke up para levantar nuestro cluster.
  4. Una vez tengamos nuestro cluster funcionando, es la hora de desplegar la propia aplicación de gestión, Rancher, sobre él.

Pero no todos los proyectos de la factoría Rancher son tan robustos como los tres anteriores. Éste es el caso de RIO y submariner, que se encuentran en fase beta y pre-alpha. Por ello, debemos tomar en consideración que nos encontramos frente a un ecosistema donde el I+D se entiende como una parte vital en el proceso de construcción de producto, y será común descubrir cómo algunos de los proyectos que cuelgan de Rancher son abandonados por la propia empresa, quedando sin soporte o nuevas versiones. Pero con 400 repositorios y un mundo k8s por explorar, nada fuera de lo corriente y precisamente este flujo de trabajo es el que les ha permitido incorporar más y más funcionalidades a la velocidad del rayo.

¿Y si aún no hemos decidido si queremos Rancher en producción?, ¿existe alguna forma más rápida de probar Rancher? La respuesta es sí y es que, una vez más, haciendo uso de nuestros queridos contenedores, podemos levantar rancher a golpe de intro para explorar las funcionalidades del aplicativo.

docker run -d --restart=unless-stopped \
  -p 80:80 -p 443:443 \
  --privileged \
  rancher/rancher:latest

Ahora que ya tenemos Rancher funcionando, es inevitable la pregunta ¿Qué puedo hacer con él y mis clusters k8s?

El principal reclamo de Rancher es que nos va a abstraer de S.O. y plataformas, permitiendo automatizar la instalación y la operación de los cluster kubernetes que administre. Los cluster administrados por Rancher pueden ser clusters que van a aprovisionarse con Rancher desde cero o clusters que ya existen, estén ejecutando cargas de trabajo y que importaremos al aplicativo para permitirle hacer su magia.

Un paso más, definiendo la magia:

¿Cómo administra Rancher los cluster kubernetes?

Cuando queremos operar un cluster kubernetes bajo el control de Rancher, necesitamos instalar un agente en nuestro cluster administrado, que será el que se comunique con nuestro cluster RKE. Con este modelo agente-servidor, para conectar un cluster a nuestro aplicativo Rancher tan sólo aplicaremos el manifiesto que rancher nos facilita para importar el cluster con kubectl y esperaremos unos segundos a que se establezca la conexión.

kubectl apply -f https://dominio-de-nuestro-rancher.com/v3/import/c2gqlgfr6wlm95nmprshfpk565rnv472tmcbh84vqsbdp8mxjrmtsl_c-qxk8g.yaml

Este manifiesto creará todos los recursos que necesitamos en nuestro cluster y levantará un pod con una imagen de agente de rancher, que se conectará de forma automática con nuestro cluster Rancher.

Por último, destacaremos dos aspectos funcionales que nos van a ser de gran utilidad en todas esas operaciones que haremos en nuestros clusters. En las últimas versiones, Rancher provee una interfaz gráfica de control de nuestro cluster desde la que podemos navegar por todos los recursos del mismo.

Rancher 2

Y, aunque me confieso fiel defensor de la línea de comandos, en este caso Rancher no nos lo pone fácil, puesto que la interfaz web es realmente rápida e intuitiva y nos ofrece una consola para abrir kubectl en nuestro navegador, lo que hará que pensemos dos veces si abrir un terminal para realizar algún cambio rápido o pequeño.

Rancher 3

¿Cómo puedo ir más a fondo?

Para conocerlo con más detalle, Rancher pone a nuestra disposición una formación online gratuita y un programa de certificación "Certified Rancher Operator: Level1", que nos permitirá conocer con mayor profundidad los aspectos técnicos principales para operar nuestro cluster. También están trabajando en un programa de formación más avanzado (nivel 2), y esperamos que muy pronto vea la luz.

Conclusión

A medida que sumamos clusters kubernetes a nuestra organización, también sumamos para los equipos que los administran desafíos de gestión, agilidad e integridad para nuestros clusters. A más desafíos que resolver, más costes. ¿Por qué no automatizar la resolución de estos desafíos dejando que el software trabaje por nosotros? Rancher nos presenta una propuesta clara, 100% gratuita, open source, nos mantiene "platform agnostic" eliminando el "vendor lock-in" y todo ello sin establecer dependencias, que no puedan revertirse fácilmente si decido no usarlo en el futuro. ¿Crees que merece la pena probarlo? Te leemos en los comentarios.

Cuéntanos qué te parece.

Los comentarios serán moderados. Serán visibles si aportan un argumento constructivo. Si no estás de acuerdo con algún punto, por favor, muestra tus opiniones de manera educada.

Suscríbete

Estamos comprometidos.

Tecnología, personas e impacto positivo.