Cozystack, una plataforma PaaS Open source basada en Kubernetes
PaaS (Plataforma como Servicio), es una solución de computación en la nube que brinda a los desarrolladores tanto el hardware como el software necesarios, para la creación de software lo que permite a los usuarios enfocarse exclusivamente en el desarrollo y la gestión de aplicaciones sin preocuparse por el mantenimiento de la infraestructura.
Cozystack es una plataforma PaaS, de código abierto basada en Kubernetes y el proyecto se posiciona como una plataforma lista para usar para proveedores de hosting y un marco para construir nubes públicas y privadas.
Sobre Cozystack
La plataforma se instala directamente en los servidores y cubre todos los aspectos de la preparación de la infraestructura para proporcionar servicios gestionados. Cozystack permite ejecutar y aprovisionar clústeres, bases de datos y máquinas virtuales de Kubernetes a pedido.
Talos Linux y Flux CD se utilizan como pila de tecnología base, las imágenes con el sistema, el kernel y los módulos necesarios se generan de antemano y se actualizan atómicamente, lo que permite prescindir de componentes como dkms y un administrador de paquetes y garantizar un funcionamiento estable.
Para ejecutar máquinas virtuales, se utiliza la tecnología KubeVirt, que permite ejecutar máquinas virtuales clásicas directamente en contenedores de Kubernetes y ya tiene todas las integraciones necesarias con la API de Cluster para ejecutar clústeres de Kubernetes administrados dentro de un clúster de Kubernetes de hardware.
Cozystack se encarga de:
- crear, actualizar, eliminar documentos dentro de la base de datos;
- autenticar usuarios y aplicaciones cliente;
- mandando correos electrónicos;
- iniciar trabajos en el servidor. Los conectores que importan datos de sitios web remotos son trabajos. Los trabajos pueden ser tareas únicas (enviar un mensaje) o tareas periódicas. Los trabajos que requieren la ejecución de código de terceros en el lado del servidor (como conectores) están en un espacio aislado;
- API de replicación de bases de datos, que permite sincronizar documentos entre el servidor y las bases de datos locales, por ejemplo en clientes móviles.
Una de las características clave de la plataforma es un método de instalación simple en un centro de datos vacío usando PXE y el instalador talos-bootstrap similar a Debian. A pesar del interés comercial, el proyecto está siendo desarrollado por entusiastas de la comunidad y planea permanecer siempre gratuito. Se ha enviado una solicitud para transferir Cozystack bajo el ala de la organización CNCF (Cloud Native Computing Foundation).
Ademas de ello, la plataforma incluye una implementación de una fábrica de redes basada en Kube-OVN y utiliza Cilium para organizar la red de servicios y MetalLB para anunciar los servicios al exterior. El almacenamiento se implementa sobre LINSTOR, que propone el uso de ZFS como capa base para el almacenamiento y DRBD para la replicación. Hay una pila de monitoreo preconfigurada basada en VictoriaMetrics y Grafana.
Para los interesados en poder conocer más al respecto, deben saber que el código de la plataforma está disponible en GitHub y se distribuye bajo la licencia Apache-2.0.
¿Como instalar Cozystack?
Como ya mencionamos, la plataforma puede ser instalada compilándola desde su código fuente o también con ayuda de talos-bootstrap, un método de instalación más sencillo y definitivo, que permite iniciar Cozystack utilizando el método PXE o ISO en un conjunto de servidores en un centro de datos básico. Puedes obtener el código fuente o la imagen ISO desde el siguiente enlace.
Para los interesados en poder instalar Cozystack, deben saber que primero deben contar con las siguientes dependencias:
- Un proxy inverso nginx, caddy, haproxy, etc.)
- Un servidor SMTP
- CouchDB 3
- Git
- Go
- Image Magick
Ahora, para poder instalar Cozystack, deben abrir una terminal y teclear lo siguiente:
git clone git@github.com:cozy/cozy-stack.git
cd cozy-stack
make
Despues debemos añadir $GOPATH/bin al $PATH:
export PATH="$(go env GOPATH)/bin:$PATH"
Hecho esto, ahora podemos proceder a configurar cozystack utilizando un archivo de configuración y para ello CouchDB ya debe estar en ejecución en el puerto predeterminado 5984, el servidor se puede iniciar con:
cozy-stack serve
Y luego para crear una instancia para el desarrollo:
make instance
Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.