Despliega microservicios en un ambiente Multicloud

Multiservicios

Por: Ricardo Pertuz, CTO y Co-founder

4 minutos de lectura


Actualmente es muy popular hablar de multicloud por sus ventajas evidentes, entre las que tenemos:

  • Alta disponibilidad
  • Selección del mejor producto del mercado para cada caso de uso
  • Más zonas de disponibilidad

Sin embargo, si la operación de un sólo cloud se ha vuelto lo suficientemente complejo, ahora imaginemos tener que desplegar microservicios en 2 o 3 proveedores. Lee sobre clouds agnósticas en nuestro blog

Lograr una armonía en el multicloud no es tarea sencilla, por esto queremos realizar un acercamiento técnico usando el orquestador de contenedores Kubernetes.

Para este propósito, proponemos 2 posibles escenarios:

Proveedores con zonas geográficamente distantes y alta latencia

Cuando hay una alta latencia, Kubernetes es sensible a errores, por lo que podemos recurrir a 2 tipos de despliegues:

  • Agrupar los nodos del control plane en una misma VPC del mismo proveedores y los nodos workers distribuidos en varios proveedores.
  • Usar alternativas livianas de Kubernetes como Microk8s.

Proveedores con zonas geográficamente cercana y latencia moderada

Cuando la latencia es aceptable, menor o igual a 60ms, podemos distribuir tanto los nodos del control plane como los nodos workers, teniendo una redundancia completa.

Wireguard

Para la interconexión de proveedores de cloud, vamos a usar el software VPN Wireguard por las siguientes razones:

  • Viene implementado en el Kernel de Linux desde la versión 5.6.x
  • Es extremadamente ligero y fácil de implementar
  • Sólo debes exponer un puerto UDP en Internet

Para más información visita: wireguard.com/

Despliegue

Por simplicidad vamos a desplegar el escenario con alta latencia, con los siguientes parámetros:

  • Proveedor 1, Kuasar, tenemos el nodo 1 donde vamos a instalar Microk8s que va a funcionar como control plane y worker
  • Proveedor 2, DigitalOcean, tenemos el nodo 2 que tendrá Microk8s que va a funcionar como worker

Configuración del wireguard

Wireguard se puede implementar de múltiples formas, inclusive de forma manual usando su documentación, en este caso, vamos a usar un role de Ansible que podemos encontrar en este repositorio de github.com

Prerrequisitos:

1. Tener Ansible instalado (Guía de Instalación) y agregar los roles y colecciones necesarias

2. Equipo Local: Configuramos el archivo inventory de Ansible

vpn_ip: Es la IP de la red privada que vamos a usar

public_addr: Es la IP pública con la que ambos nodos se van a conectar a través de internet por el puerto UDP

3.Equipo Local: Creamos el playbook de Ansible

4. En ambos Nodos: Tener la paquetería de gnupg

5. Equipo Local: Lanzamos el playbook

6. Nodo 1: Una vez terminada la ejecución del playbook, validamos si podemos hacer ping a la ip privada creada por el wireguard del nodo 1

Lanzamiento del clúster

7. Ambos Nodos: Instalamos microk8s en los nodos

8. Nodo 1: Configuramos los permisos para el usuario Ubuntu, para no tener que usar “sudo” con los comandos de microk8s

9. Nodo 1: Esperamos que termine de configurarse servicio de Kubernetes, el siguiente comando nos va a indicar cuando esté listo

10. Nodo 1: Generamos el token para agregar el segundo nodo, el resultado del siguiente comando indica lo que se debe ingresar en el nodo 2

11. Nodo 2: Finalmente, en el nodo 2 realizamos la conexión al control plane, debemos esperar un par de minutos que finalice


Despliegue de una aplicación

12. Nodo 1: Ahora lancemos un nginx distribuido y verifiquemos que se despliegue en ambos nodos

Y por último accedamos a través de internet usando la IP pública de ambos nodos, donde se puede ver el servicio publicado en ambos proveedores de cloud

Acabamos de ver una forma sencilla de desplegar un servicio en un entorno multicloud, sin embargo, la implementación es manual y requiere el conocimiento de varias herramientas. Kuasar está trabajando en su producto de Kubernetes, que no sólo permita administrar clústers en su propia plataforma, sino que a través del mismo servicio se puedan desplegar clústers en otros proveedores incluyendo en data centers propios de nuestros cliente y dando interconectividad privada para lanzar microservicios en un ambiente multicloud.

Página web: https://kuasar.co
YouTube: Canal Kuasar
Sigue nuestras charlas en: https://meetup.com