Entornos rápidos de desarrollo para Kubernetes con k3s y k3d

Introducción

En anteriores posts repasamos cómo montar Kubernetes y Rancher usando la herramienta rke. Aunque este método, con cambios menores, sigue siendo válido para adaptarlo a las nuevas versiones de las aplicaciones; la realidad es que este procedimiento es engorroso para laboratorios de desarrollo o pruebas rápidas de versiones. En estos casos es necesaria la creación y aprovisionamiento de máquinas virtuales, así como un entorno de red específico y herramientas externas como Loadbalancers que complican algo más el proceso.

Laboratorios rápidos de Kubernetes gracias a k3s y k3d

Para solucionar estos problemas se han ido desarrollando múltiples herramientas de utilidad, que repasamos brevemente a continuación:

  • Vagrant: Es una herramienta del fabricante Hashicorp que permite, con ayuda de un hipervisor tipo VirtualBox/VMware Workstation, desplegar rápidamente máquinas virtuales o Boxes (como se denominan en el argot de Vagrant) y utilizarlas para un desarrollo o laboratorio de forma mucho más ágil. La configuración de Vagrant se realiza mediante Vagrantfiles, que definen de forma declarativa qué sistema operativo, configuración de red y qué provisionamiento tendrá nuestra infraestructura.
  • Multipass VM: Es una herramienta de consola del fabricante Canonical (Ubuntu), que utiliza como backend de virtualización KVM en Linux, pero que bajo Windows/MacOS puede usar Virtualbox. Nativamente corre con Hyper-V bajo Windows e Hyperkit en MacOS. Multipass es la mejor forma de crear máquinas virtuales basadas en Ubuntu dentro de un host Ubuntu. La cli es bastante fácil de manejar y nos permite desplegar instancias rápidamente y probar nuestras aplicaciones de forma ágil.

Dejando de lado herramientas más genéricas para entornos de desarrollo y centrándonos en Kubernetes, han surgido varios proyectos para poder desplegarlo de forma rápida, entre ellos Kind  (Kubernetes in Docker) y k3s (Lightweight Kubernetes by Rancher).

Ambos proyectos nos permiten testear e incluso llevar a producción nuestros desarrollos sobre Kubernetes y contenedores utilizando Docker como base.

Hoy nos centraremos en k3s y en k3d , su wrapper para despliegue rápido.

k3s y k3d

El proyecto k3s es una distribución production ready ligera y certificada de Kubernetes. Está especialmente diseñada para usarse en entornos Edge o con recursos limitados. Esta distribución tiene un consumo de memoria muy reducido y su binario no supera los 100MB. Está especialmente optimizada para entornos ARM64 y ARMv7, aunque puede instalarse también en tu portátil (que es lo que haremos hoy mediante k3d ). Este proyecto, desarrollado inicialmente por Rancher en 2019, ha sido adoptado recientemente por la Cloud Native Computing Foundation.

El proyecto k3d  es un wrapper o manejador que nos permitirá desplegar rápidamente en nuestro portátil clusters de Kubernetes basados en k3s , contando únicamente con Docker instalado.

Os dejamos las webs de k3d y también de k3s para que las tengáis como referencia.

Cómo instalar k3s

La instalación de k3s es bastante fácil. En esta ocasión utilizaremos un portátil con Docker-Desktop instalado y WSL2 bajo Windows, y en la consola correremos el siguiente comando:

Es tan simple como se aprecia, aunque hay distintos métodos de instalación que puedes consultar aquí.

Creando nuestra primera demo con k3s y k3d

Ha llegado el momento de instalar nuestro primer cluster Kubernetes basado en k3s y usando k3d :

Como podéis ver, k3d ha instalado un cluster basado en la versión 1.19.4 de Kubernetes con k3s  como distribución con un único nodo master ; y para ello ha levantado únicamente dos contenedores, el binario de k3s y un balanceador de acceso a la API. Sí, k3s es una distribución que nos permite tener alta disponibilidad.

Aunque este cluster, tal y como está desplegado, no tiene nodos worker. Vamos a desplegarlo de nuevo:

Como vemos, nuestro segundo cluster tiene 2 nodos worker y un nodo master recién desplegados; para docker hemos levantado 4 contenedores distintos, uno con k3s actuando de master y dos como agente (worker), más el balanceador de la API.

¡Y todo esto en apenas 3 minutos!

Ahora vamos a hacer un pequeño despliegue de un servidor nginx  para comprobar el funcionamiento de nuestro cluster:

¡Listo! Ya podemos desplegar aplicaciones, testar funcionalidades o simplemente jugar con nuestro nuevo cluster de Kubernetes basado en k3s y desplegado mediante k3d en nuestro equipo local.

 

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *